You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
426 lines
15 KiB
426 lines
15 KiB
diff -urN blender-2.49b.orig//source/blender/blenkernel/intern/writeffmpeg.c blender-2.49b/source/blender/blenkernel/intern/writeffmpeg.c
|
|
--- blender-2.49b.orig//source/blender/blenkernel/intern/writeffmpeg.c 2009-09-01 17:21:17.000000000 +0200
|
|
+++ blender-2.49b/source/blender/blenkernel/intern/writeffmpeg.c 2011-11-13 05:36:23.000000000 +0100
|
|
@@ -32,6 +32,7 @@
|
|
#include <libavformat/avformat.h>
|
|
#include <libavcodec/avcodec.h>
|
|
#include <libavutil/rational.h>
|
|
+#include <libavutil/mathematics.h>
|
|
#include <libswscale/swscale.h>
|
|
#include <libavcodec/opt.h>
|
|
|
|
@@ -149,10 +150,9 @@
|
|
#else
|
|
pkt.pts = c->coded_frame->pts;
|
|
#endif
|
|
- fprintf(stderr, "Audio Frame PTS: %lld\n", pkt.pts);
|
|
|
|
pkt.stream_index = audio_stream->index;
|
|
- pkt.flags |= PKT_FLAG_KEY;
|
|
+ pkt.flags |= AV_PKT_FLAG_KEY;
|
|
if (av_interleaved_write_frame(outfile, &pkt) != 0) {
|
|
error("Error writing audio packet");
|
|
return -1;
|
|
@@ -271,7 +271,7 @@
|
|
fprintf(stderr, "Video Frame PTS: not set\n");
|
|
}
|
|
if (c->coded_frame->key_frame)
|
|
- packet.flags |= PKT_FLAG_KEY;
|
|
+ packet.flags |= AV_PKT_FLAG_KEY;
|
|
packet.stream_index = video_stream->index;
|
|
packet.data = video_buffer;
|
|
packet.size = outsize;
|
|
@@ -373,7 +373,7 @@
|
|
switch(prop->type) {
|
|
case IDP_STRING:
|
|
fprintf(stderr, "%s.\n", IDP_String(prop));
|
|
- rv = av_set_string(c, prop->name, IDP_String(prop));
|
|
+ av_set_string3(c, prop->name, IDP_String(prop), 0, &rv);
|
|
break;
|
|
case IDP_FLOAT:
|
|
fprintf(stderr, "%g.\n", IDP_Float(prop));
|
|
@@ -384,12 +384,12 @@
|
|
|
|
if (param) {
|
|
if (IDP_Int(prop)) {
|
|
- rv = av_set_string(c, name, param);
|
|
+ av_set_string3(c, name, param, 0, &rv);
|
|
} else {
|
|
return;
|
|
}
|
|
} else {
|
|
- rv = av_set_int(c, prop->name, IDP_Int(prop));
|
|
+ av_set_int(c, prop->name, IDP_Int(prop));
|
|
}
|
|
break;
|
|
}
|
|
@@ -438,7 +438,7 @@
|
|
|
|
c = get_codec_from_stream(st);
|
|
c->codec_id = codec_id;
|
|
- c->codec_type = CODEC_TYPE_VIDEO;
|
|
+ c->codec_type = AVMEDIA_TYPE_VIDEO;
|
|
|
|
|
|
/* Get some values from the current render settings */
|
|
@@ -496,7 +496,7 @@
|
|
c->pix_fmt = PIX_FMT_YUV422P;
|
|
}
|
|
|
|
- if (codec_id == CODEC_ID_XVID) {
|
|
+ if (codec_id == CODEC_ID_MPEG4) {
|
|
/* arghhhh ... */
|
|
c->pix_fmt = PIX_FMT_YUV420P;
|
|
}
|
|
@@ -557,7 +557,7 @@
|
|
|
|
c = get_codec_from_stream(st);
|
|
c->codec_id = codec_id;
|
|
- c->codec_type = CODEC_TYPE_AUDIO;
|
|
+ c->codec_type = AVMEDIA_TYPE_AUDIO;
|
|
|
|
c->sample_rate = G.scene->audio.mixrate;
|
|
c->bit_rate = ffmpeg_audio_bitrate*1000;
|
|
@@ -652,14 +652,14 @@
|
|
error("No valid formats found");
|
|
return;
|
|
}
|
|
- fmt = guess_format(NULL, exts[0], NULL);
|
|
+ fmt = av_guess_format(NULL, exts[0], NULL);
|
|
if (!fmt) {
|
|
G.afbreek = 1; /* Abort render */
|
|
error("No valid formats found");
|
|
return;
|
|
}
|
|
|
|
- of = av_alloc_format_context();
|
|
+ of = avformat_alloc_context();
|
|
if (!of) {
|
|
G.afbreek = 1;
|
|
error("Error opening output file");
|
|
@@ -699,7 +699,7 @@
|
|
fmt->video_codec = CODEC_ID_H264;
|
|
break;
|
|
case FFMPEG_XVID:
|
|
- fmt->video_codec = CODEC_ID_XVID;
|
|
+ fmt->video_codec = CODEC_ID_MPEG4;
|
|
break;
|
|
case FFMPEG_FLV:
|
|
fmt->video_codec = CODEC_ID_FLV1;
|
|
diff -urN blender-2.49b.orig//source/blender/imbuf/intern/anim.c blender-2.49b/source/blender/imbuf/intern/anim.c
|
|
--- blender-2.49b.orig//source/blender/imbuf/intern/anim.c 2009-09-01 17:21:50.000000000 +0200
|
|
+++ blender-2.49b/source/blender/imbuf/intern/anim.c 2011-11-13 06:21:37.000000000 +0100
|
|
@@ -550,7 +550,7 @@
|
|
videoStream=-1;
|
|
for(i=0; i<pFormatCtx->nb_streams; i++)
|
|
if(get_codec_from_stream(pFormatCtx->streams[i])->codec_type
|
|
- == CODEC_TYPE_VIDEO) {
|
|
+ == AVMEDIA_TYPE_VIDEO) {
|
|
videoStream=i;
|
|
break;
|
|
}
|
|
@@ -683,10 +683,10 @@
|
|
&& position - (anim->curposition + 1) < anim->preseek) {
|
|
while(av_read_frame(anim->pFormatCtx, &packet)>=0) {
|
|
if (packet.stream_index == anim->videoStream) {
|
|
- avcodec_decode_video(
|
|
+ avcodec_decode_video2(
|
|
anim->pCodecCtx,
|
|
anim->pFrame, &frameFinished,
|
|
- packet.data, packet.size);
|
|
+ &packet);
|
|
|
|
if (frameFinished) {
|
|
anim->curposition++;
|
|
@@ -741,9 +741,9 @@
|
|
|
|
while(av_read_frame(anim->pFormatCtx, &packet)>=0) {
|
|
if(packet.stream_index == anim->videoStream) {
|
|
- avcodec_decode_video(anim->pCodecCtx,
|
|
+ avcodec_decode_video2(anim->pCodecCtx,
|
|
anim->pFrame, &frameFinished,
|
|
- packet.data, packet.size);
|
|
+ &packet);
|
|
|
|
if (frameFinished && !pos_found) {
|
|
if (packet.dts >= pts_to_search) {
|
|
diff -urN blender-2.49b.orig//source/blender/imbuf/intern/util.c blender-2.49b/source/blender/imbuf/intern/util.c
|
|
--- blender-2.49b.orig//source/blender/imbuf/intern/util.c 2009-09-01 17:21:50.000000000 +0200
|
|
+++ blender-2.49b/source/blender/imbuf/intern/util.c 2011-11-13 04:37:27.000000000 +0100
|
|
@@ -324,7 +324,7 @@
|
|
return 0;
|
|
}
|
|
|
|
- if(UTIL_DEBUG) dump_format(pFormatCtx, 0, filename, 0);
|
|
+ if(UTIL_DEBUG) av_dump_format(pFormatCtx, 0, filename, 0);
|
|
|
|
|
|
/* Find the first video stream */
|
|
@@ -332,7 +332,7 @@
|
|
for(i=0; i<pFormatCtx->nb_streams; i++)
|
|
if(pFormatCtx->streams[i] &&
|
|
get_codec_from_stream(pFormatCtx->streams[i]) &&
|
|
- (get_codec_from_stream(pFormatCtx->streams[i])->codec_type==CODEC_TYPE_VIDEO))
|
|
+ (get_codec_from_stream(pFormatCtx->streams[i])->codec_type==AVMEDIA_TYPE_VIDEO))
|
|
{
|
|
videoStream=i;
|
|
break;
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/BGL.o and blender-2.49b/source/blender/python/api2_2x/BGL.o differ
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/bpy_internal_import.o and blender-2.49b/source/blender/python/api2_2x/bpy_internal_import.o differ
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/constant.o and blender-2.49b/source/blender/python/api2_2x/constant.o differ
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/euler.o and blender-2.49b/source/blender/python/api2_2x/euler.o differ
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/Geometry.o and blender-2.49b/source/blender/python/api2_2x/Geometry.o differ
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/Mathutils.o and blender-2.49b/source/blender/python/api2_2x/Mathutils.o differ
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/matrix.o and blender-2.49b/source/blender/python/api2_2x/matrix.o differ
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/quat.o and blender-2.49b/source/blender/python/api2_2x/quat.o differ
|
|
Binary files blender-2.49b.orig//source/blender/python/api2_2x/vector.o and blender-2.49b/source/blender/python/api2_2x/vector.o differ
|
|
diff -urN blender-2.49b.orig//source/blender/src/buttons_scene.c blender-2.49b/source/blender/src/buttons_scene.c
|
|
--- blender-2.49b.orig//source/blender/src/buttons_scene.c 2009-09-01 17:21:46.000000000 +0200
|
|
+++ blender-2.49b/source/blender/src/buttons_scene.c 2011-11-13 05:38:04.000000000 +0100
|
|
@@ -2169,7 +2169,7 @@
|
|
"Quicktime", FFMPEG_MOV,
|
|
"DV", FFMPEG_DV,
|
|
"H264", FFMPEG_H264,
|
|
- "XVid", FFMPEG_XVID,
|
|
+ "XVID", FFMPEG_XVID,
|
|
#if 0
|
|
/* ifdef WITH_OGG, disabled, since broken within ffmpeg bundled with blender */
|
|
"OGG", FFMPEG_OGG,
|
|
@@ -2212,7 +2212,7 @@
|
|
"HuffYUV", CODEC_ID_HUFFYUV,
|
|
"DV", CODEC_ID_DVVIDEO,
|
|
"H264", CODEC_ID_H264,
|
|
- "XVid", CODEC_ID_XVID,
|
|
+ "XVid", CODEC_ID_MPEG4,
|
|
#ifdef WITH_OGG
|
|
"Theora", CODEC_ID_THEORA,
|
|
#endif
|
|
@@ -2723,12 +2723,12 @@
|
|
switch (o->type) {
|
|
case FF_OPT_TYPE_INT:
|
|
case FF_OPT_TYPE_INT64:
|
|
- val.i = o->default_val;
|
|
+ val.i = o->default_val.dbl;
|
|
idp_type = IDP_INT;
|
|
break;
|
|
case FF_OPT_TYPE_DOUBLE:
|
|
case FF_OPT_TYPE_FLOAT:
|
|
- val.f = o->default_val;
|
|
+ val.f = o->default_val.dbl;
|
|
idp_type = IDP_FLOAT;
|
|
break;
|
|
case FF_OPT_TYPE_STRING:
|
|
diff -urN blender-2.49b.orig//source/blender/src/hddaudio.c blender-2.49b/source/blender/src/hddaudio.c
|
|
--- blender-2.49b.orig//source/blender/src/hddaudio.c 2009-09-01 17:21:45.000000000 +0200
|
|
+++ blender-2.49b/source/blender/src/hddaudio.c 2011-11-13 06:27:23.000000000 +0100
|
|
@@ -126,7 +126,7 @@
|
|
audioStream=-1;
|
|
for(i=0; i<pFormatCtx->nb_streams; i++)
|
|
if(get_codec_from_stream(pFormatCtx->streams[i])
|
|
- ->codec_type == CODEC_TYPE_AUDIO)
|
|
+ ->codec_type == AVMEDIA_TYPE_AUDIO)
|
|
{
|
|
audioStream=i;
|
|
break;
|
|
@@ -382,39 +382,30 @@
|
|
continue;
|
|
}
|
|
|
|
- audio_pkt_data = packet.data;
|
|
- audio_pkt_size = packet.size;
|
|
-
|
|
- while (audio_pkt_size > 0) {
|
|
- data_size=AVCODEC_MAX_AUDIO_FRAME_SIZE;
|
|
- len = avcodec_decode_audio2(
|
|
- hdaudio->pCodecCtx,
|
|
- hdaudio->decode_cache
|
|
- + decode_pos
|
|
- * hdaudio->decode_sample_format_size,
|
|
- &data_size,
|
|
- audio_pkt_data,
|
|
- audio_pkt_size);
|
|
- if (len <= 0) {
|
|
- audio_pkt_size = 0;
|
|
- break;
|
|
- }
|
|
-
|
|
- audio_pkt_size -= len;
|
|
- audio_pkt_data += len;
|
|
-
|
|
- if (data_size <= 0) {
|
|
- continue;
|
|
- }
|
|
-
|
|
- decode_pos += data_size
|
|
- / hdaudio->decode_sample_format_size;
|
|
- if (decode_pos + data_size
|
|
- / hdaudio->decode_sample_format_size
|
|
- > hdaudio->decode_cache_size) {
|
|
- break;
|
|
- }
|
|
- }
|
|
+ data_size=AVCODEC_MAX_AUDIO_FRAME_SIZE;
|
|
+ len = avcodec_decode_audio3(
|
|
+ hdaudio->pCodecCtx,
|
|
+ hdaudio->decode_cache
|
|
+ + decode_pos
|
|
+ * hdaudio->decode_sample_format_size,
|
|
+ &data_size,
|
|
+ &packet);
|
|
+ if (len <= 0) {
|
|
+ audio_pkt_size = 0;
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ if (data_size <= 0) {
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ decode_pos += data_size
|
|
+ / hdaudio->decode_sample_format_size;
|
|
+ if (decode_pos + data_size
|
|
+ / hdaudio->decode_sample_format_size
|
|
+ > hdaudio->decode_cache_size) {
|
|
+ break;
|
|
+ }
|
|
av_free_packet(&packet);
|
|
|
|
if (decode_pos + data_size / hdaudio->decode_sample_format_size
|
|
@@ -534,36 +525,29 @@
|
|
decode_cache_zero_init = 1;
|
|
}
|
|
|
|
- while (audio_pkt_size > 0) {
|
|
- data_size=AVCODEC_MAX_AUDIO_FRAME_SIZE;
|
|
- len = avcodec_decode_audio2(
|
|
- hdaudio->pCodecCtx,
|
|
- hdaudio->decode_cache
|
|
- + decode_pos
|
|
- * hdaudio->decode_sample_format_size,
|
|
- &data_size,
|
|
- audio_pkt_data,
|
|
- audio_pkt_size);
|
|
- if (len <= 0) {
|
|
- audio_pkt_size = 0;
|
|
- break;
|
|
- }
|
|
-
|
|
- audio_pkt_size -= len;
|
|
- audio_pkt_data += len;
|
|
-
|
|
- if (data_size <= 0) {
|
|
- continue;
|
|
- }
|
|
-
|
|
- decode_pos += data_size
|
|
- / hdaudio->decode_sample_format_size;
|
|
- if (decode_pos + data_size
|
|
- / hdaudio->decode_sample_format_size
|
|
- > hdaudio->decode_cache_size) {
|
|
- break;
|
|
- }
|
|
- }
|
|
+ data_size=AVCODEC_MAX_AUDIO_FRAME_SIZE;
|
|
+ len = avcodec_decode_audio3(
|
|
+ hdaudio->pCodecCtx,
|
|
+ hdaudio->decode_cache
|
|
+ + decode_pos
|
|
+ * hdaudio->decode_sample_format_size,
|
|
+ &data_size,
|
|
+ &packet);
|
|
+ if (len <= 0) {
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ if (data_size <= 0) {
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ decode_pos += data_size
|
|
+ / hdaudio->decode_sample_format_size;
|
|
+ if (decode_pos + data_size
|
|
+ / hdaudio->decode_sample_format_size
|
|
+ > hdaudio->decode_cache_size) {
|
|
+ break;
|
|
+ }
|
|
|
|
av_free_packet(&packet);
|
|
|
|
diff -urN blender-2.49b.orig//source/gameengine/VideoTexture/VideoFFmpeg.cpp blender-2.49b/source/gameengine/VideoTexture/VideoFFmpeg.cpp
|
|
--- blender-2.49b.orig//source/gameengine/VideoTexture/VideoFFmpeg.cpp 2009-09-01 17:20:53.000000000 +0200
|
|
+++ blender-2.49b/source/gameengine/VideoTexture/VideoFFmpeg.cpp 2011-11-13 07:56:56.000000000 +0100
|
|
@@ -26,7 +26,6 @@
|
|
#define __STDC_CONSTANT_MACROS
|
|
#include <stdint.h>
|
|
|
|
-
|
|
#include "MEM_guardedalloc.h"
|
|
#include "PIL_time.h"
|
|
|
|
@@ -177,7 +176,7 @@
|
|
{
|
|
if(formatCtx->streams[i] &&
|
|
get_codec_from_stream(formatCtx->streams[i]) &&
|
|
- (get_codec_from_stream(formatCtx->streams[i])->codec_type==CODEC_TYPE_VIDEO))
|
|
+ (get_codec_from_stream(formatCtx->streams[i])->codec_type==AVMEDIA_TYPE_VIDEO))
|
|
{
|
|
videoStream=i;
|
|
break;
|
|
@@ -358,9 +357,9 @@
|
|
BLI_remlink(&video->m_packetCacheBase, cachePacket);
|
|
// use m_frame because when caching, it is not used in main thread
|
|
// we can't use currentFrame directly because we need to convert to RGB first
|
|
- avcodec_decode_video(video->m_codecCtx,
|
|
+ avcodec_decode_video2(video->m_codecCtx,
|
|
video->m_frame, &frameFinished,
|
|
- cachePacket->packet.data, cachePacket->packet.size);
|
|
+ &cachePacket->packet);
|
|
if(frameFinished)
|
|
{
|
|
AVFrame * input = video->m_frame;
|
|
@@ -628,7 +627,7 @@
|
|
if (m_captRate <= 0.f)
|
|
m_captRate = defFrameRate;
|
|
sprintf(rateStr, "%f", m_captRate);
|
|
- av_parse_video_frame_rate(&frameRate, rateStr);
|
|
+ av_parse_video_rate(&frameRate, rateStr);
|
|
// populate format parameters
|
|
// need to specify the time base = inverse of rate
|
|
formatParams.time_base.num = frameRate.den;
|
|
@@ -887,10 +886,10 @@
|
|
{
|
|
if (packet.stream_index == m_videoStream)
|
|
{
|
|
- avcodec_decode_video(
|
|
+ avcodec_decode_video2(
|
|
m_codecCtx,
|
|
m_frame, &frameFinished,
|
|
- packet.data, packet.size);
|
|
+ &packet);
|
|
if (frameFinished)
|
|
m_curPosition++;
|
|
}
|
|
@@ -966,9 +965,9 @@
|
|
{
|
|
if(packet.stream_index == m_videoStream)
|
|
{
|
|
- avcodec_decode_video(m_codecCtx,
|
|
+ avcodec_decode_video2(m_codecCtx,
|
|
m_frame, &frameFinished,
|
|
- packet.data, packet.size);
|
|
+ &packet);
|
|
|
|
if (frameFinished && !posFound)
|
|
{
|
|
diff -urN blender-2.49b.orig//source/gameengine/VideoTexture/VideoFFmpeg.h blender-2.49b/source/gameengine/VideoTexture/VideoFFmpeg.h
|
|
--- blender-2.49b.orig//source/gameengine/VideoTexture/VideoFFmpeg.h 2009-09-01 17:20:53.000000000 +0200
|
|
+++ blender-2.49b/source/gameengine/VideoTexture/VideoFFmpeg.h 2011-11-13 08:03:51.000000000 +0100
|
|
@@ -28,6 +28,7 @@
|
|
#include <libavformat/avformat.h>
|
|
#include <libavcodec/avcodec.h>
|
|
#include <libavutil/rational.h>
|
|
+#include <libavutil/parseutils.h>
|
|
#include <libswscale/swscale.h>
|
|
#include "DNA_listBase.h"
|
|
#include "BLI_threads.h"
|