[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12117] trunk/blender/source/blender/ blenkernel/intern/writeffmpeg.c: == Sequencer / FFMPEG ==

Peter Schlaile peter at schlaile.de
Sun Sep 23 16:05:22 CEST 2007


Revision: 12117
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12117
Author:   schlaile
Date:     2007-09-23 16:05:22 +0200 (Sun, 23 Sep 2007)

Log Message:
-----------
== Sequencer / FFMPEG ==

Updating to latest FFMPEG version.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c

Modified: trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c	2007-09-23 14:04:23 UTC (rev 12116)
+++ trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c	2007-09-23 14:05:22 UTC (rev 12117)
@@ -32,6 +32,7 @@
 #include <ffmpeg/avformat.h>
 #include <ffmpeg/avcodec.h>
 #include <ffmpeg/rational.h>
+#include <ffmpeg/swscale.h>
 
 #if LIBAVFORMAT_VERSION_INT < (49 << 16)
 #define FFMPEG_OLD_FRAME_RATE 1
@@ -81,6 +82,7 @@
 static AVStream* video_stream = 0;
 static AVStream* audio_stream = 0;
 static AVFrame* current_frame = 0;
+static struct SwsContext *img_convert_ctx = 0;
 
 static uint8_t* video_buffer = 0;
 static int video_buffersize = 0;
@@ -317,8 +319,9 @@
 	}
 
 	if (c->pix_fmt != PIX_FMT_RGBA32) {
-		img_convert((AVPicture*)current_frame, c->pix_fmt, 
-			(AVPicture*)rgb_frame, PIX_FMT_RGBA32, width, height);
+		sws_scale(img_convert_ctx, rgb_frame->data,
+			  rgb_frame->linesize, 0, c->height, 
+			  current_frame->data, current_frame->linesize);
 		delete_picture(rgb_frame);
 	}
 	return current_frame;
@@ -420,6 +423,13 @@
 					     "FFMPEG video buffer");
 	
 	current_frame = alloc_picture(c->pix_fmt, c->width, c->height);
+
+	img_convert_ctx = sws_getContext(c->width, c->height,
+					 PIX_FMT_RGBA32,
+					 c->width, c->height,
+					 c->pix_fmt,
+					 SWS_BICUBIC,
+					 NULL, NULL, NULL);
 	return st;
 }
 
@@ -749,8 +759,10 @@
 	
 	fprintf(stderr, "Closing ffmpeg...\n");
 
-	write_audio_frames();
-
+	if (audio_stream) {
+		write_audio_frames();
+	}
+	
 	if (outfile) {
 		av_write_trailer(outfile);
 	}
@@ -797,6 +809,11 @@
 		MEM_freeN(audio_input_buffer);
 		audio_input_buffer = 0;
 	}
+
+	if (img_convert_ctx) {
+		sws_freeContext(img_convert_ctx);
+		img_convert_ctx = 0;
+	}
 }
 #endif
 





More information about the Bf-blender-cvs mailing list