[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