diff options
Diffstat (limited to 'media-gfx/blender/files/blender-2.57-libav-0.7.patch')
-rw-r--r-- | media-gfx/blender/files/blender-2.57-libav-0.7.patch | 296 |
1 files changed, 296 insertions, 0 deletions
diff --git a/media-gfx/blender/files/blender-2.57-libav-0.7.patch b/media-gfx/blender/files/blender-2.57-libav-0.7.patch new file mode 100644 index 0000000..7b4ca47 --- /dev/null +++ b/media-gfx/blender/files/blender-2.57-libav-0.7.patch @@ -0,0 +1,296 @@ +diff -burN blender-2.57.orig//intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp blender-2.57/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp +--- blender-2.57.orig//intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp 2011-04-14 17:06:35.000000000 +0200 ++++ blender-2.57/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp 2011-05-04 01:44:30.184004582 +0200 +@@ -64,15 +64,10 @@ + + // read samples from the packet + data_size = buf_size - buf_pos; +- /*read_length = avcodec_decode_audio3(m_codecCtx, ++ read_length = avcodec_decode_audio3(m_codecCtx, + (int16_t*)(((data_t*)buffer.getBuffer())+buf_pos), + &data_size, +- packet);*/ +- read_length = avcodec_decode_audio2(m_codecCtx, +- (int16_t*)(((data_t*)buffer.getBuffer()) + buf_pos), +- &data_size, +- audio_pkg_data, +- audio_pkg_size); ++ packet); + + // read error, next packet! + if(read_length < 0) +@@ -112,7 +107,7 @@ + + for(unsigned int i = 0; i < m_formatCtx->nb_streams; i++) + { +- if((m_formatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO) ++ if((m_formatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) + && (m_stream < 0)) + { + m_stream=i; +diff -burN blender-2.57.orig//source/blender/blenkernel/intern/writeffmpeg.c blender-2.57/source/blender/blenkernel/intern/writeffmpeg.c +--- blender-2.57.orig//source/blender/blenkernel/intern/writeffmpeg.c 2011-04-14 17:17:03.000000000 +0200 ++++ blender-2.57/source/blender/blenkernel/intern/writeffmpeg.c 2011-05-04 03:36:08.365219076 +0200 +@@ -163,7 +163,7 @@ + } + + 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) { + fprintf(stderr, "Error writing audio packet!\n"); + return -1; +@@ -290,7 +290,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; +@@ -396,7 +396,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)); +@@ -407,7 +407,7 @@ + + if (param) { + if (IDP_Int(prop)) { +- rv = av_set_string(c, name, param); ++ av_set_string3(c, name, param, 0, &rv); + } else { + return; + } +@@ -461,7 +461,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 */ +@@ -519,7 +519,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; + c->codec_tag = (('D'<<24) + ('I'<<16) + ('V'<<8) + 'X'); +@@ -588,7 +588,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 = rd->ffcodecdata.audio_mixrate; + c->bit_rate = ffmpeg_audio_bitrate*1000; +@@ -666,13 +666,13 @@ + BKE_report(reports, RPT_ERROR, "No valid formats found."); + return 0; + } +- fmt = guess_format(NULL, exts[0], NULL); ++ fmt = av_guess_format(NULL, exts[0], NULL); + if (!fmt) { + BKE_report(reports, RPT_ERROR, "No valid formats found."); + return 0; + } + +- of = av_alloc_format_context(); ++ of = avformat_alloc_context(); + if (!of) { + BKE_report(reports, RPT_ERROR, "Error opening output file"); + return 0; +@@ -713,7 +713,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; +@@ -834,7 +834,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; +@@ -1314,7 +1314,7 @@ + case FFMPEG_PRESET_XVID: + if(preset == FFMPEG_PRESET_XVID) { + rd->ffcodecdata.type = FFMPEG_AVI; +- rd->ffcodecdata.codec = CODEC_ID_XVID; ++ rd->ffcodecdata.codec = CODEC_ID_MPEG4; + } + else if(preset == FFMPEG_PRESET_THEORA) { + rd->ffcodecdata.type = FFMPEG_OGG; // XXX broken +@@ -1357,7 +1357,7 @@ + } + } + else if(rd->imtype == R_XVID) { +- if(rd->ffcodecdata.codec != CODEC_ID_XVID) { ++ if(rd->ffcodecdata.codec != CODEC_ID_MPEG4) { + ffmpeg_set_preset(rd, FFMPEG_PRESET_XVID); + audio= 1; + } +diff -burN blender-2.57.orig//source/blender/imbuf/intern/anim_movie.c blender-2.57/source/blender/imbuf/intern/anim_movie.c +--- blender-2.57.orig//source/blender/imbuf/intern/anim_movie.c 2011-04-14 17:19:18.000000000 +0200 ++++ blender-2.57/source/blender/imbuf/intern/anim_movie.c 2011-05-04 03:33:56.724566283 +0200 +@@ -566,7 +566,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; + } +@@ -830,10 +830,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++; +@@ -915,9 +915,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 (seek_by_bytes && preseek_count > 0) { + preseek_count--; +diff -burN blender-2.57.orig//source/blender/imbuf/intern/util.c blender-2.57/source/blender/imbuf/intern/util.c +--- blender-2.57.orig//source/blender/imbuf/intern/util.c 2011-04-14 17:19:18.000000000 +0200 ++++ blender-2.57/source/blender/imbuf/intern/util.c 2011-05-04 02:15:26.369208909 +0200 +@@ -292,7 +292,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; +diff -burN blender-2.57.orig//source/blender/makesrna/intern/rna_scene.c blender-2.57/source/blender/makesrna/intern/rna_scene.c +--- blender-2.57.orig//source/blender/makesrna/intern/rna_scene.c 2011-04-14 17:18:53.000000000 +0200 ++++ blender-2.57/source/blender/makesrna/intern/rna_scene.c 2011-05-04 02:19:10.326319453 +0200 +@@ -2135,7 +2135,7 @@ + {CODEC_ID_HUFFYUV, "HUFFYUV", 0, "HuffYUV", ""}, + {CODEC_ID_DVVIDEO, "DV", 0, "DV", ""}, + {CODEC_ID_H264, "H264", 0, "H.264", ""}, +- {CODEC_ID_XVID, "XVID", 0, "Xvid", ""}, ++ {CODEC_ID_MPEG4, "XVID", 0, "Xvid", ""}, + {CODEC_ID_THEORA, "THEORA", 0, "Theora", ""}, + {CODEC_ID_FLV1, "FLASH", 0, "Flash Video", ""}, + {CODEC_ID_FFV1, "FFV1", 0, "FFmpeg video codec #1", ""}, +diff -burN blender-2.57.orig//source/gameengine/VideoTexture/VideoFFmpeg.cpp blender-2.57/source/gameengine/VideoTexture/VideoFFmpeg.cpp +--- blender-2.57.orig//source/gameengine/VideoTexture/VideoFFmpeg.cpp 2011-04-14 17:13:34.000000000 +0200 ++++ blender-2.57/source/gameengine/VideoTexture/VideoFFmpeg.cpp 2011-05-04 02:49:31.147348425 +0200 +@@ -182,7 +182,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; +@@ -368,9 +368,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; +@@ -641,7 +641,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; +@@ -924,10 +924,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 = (long)((packet.dts-startTs) * (m_baseFrameRate*timeBase) + 0.5); +@@ -999,9 +999,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); + // remember dts to compute exact frame number + dts = packet.dts; + if (frameFinished && !posFound) +diff -burN blender-2.57.orig//source/gameengine/VideoTexture/VideoFFmpeg.h blender-2.57/source/gameengine/VideoTexture/VideoFFmpeg.h +--- blender-2.57.orig//source/gameengine/VideoTexture/VideoFFmpeg.h 2011-04-14 17:13:34.000000000 +0200 ++++ blender-2.57/source/gameengine/VideoTexture/VideoFFmpeg.h 2011-05-04 03:11:53.106002831 +0200 +@@ -34,6 +34,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" +diff -burN blender-2.57.orig/source/blender/blenkernel/intern/writeffmpeg.c /var/tmp/portage/media-gfx/blender-2.57-r1/work/blender-2.57/source/blender/blenkernel/intern/writeffmpeg.c +--- blender-2.57.orig/source/blender/blenkernel/intern/writeffmpeg.c 2011-11-07 13:17:59.001736099 -0800 ++++ blender-2.57/source/blender/blenkernel/intern/writeffmpeg.c 2011-11-07 13:18:35.726734562 -0800 +@@ -1101,12 +1101,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: |