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 #include #include +#include #include #include @@ -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; inb_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; inb_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; inb_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 - #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 #include #include +#include #include #include "DNA_listBase.h" #include "BLI_threads.h"