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.
gentoo-overlay/media-gfx/blender/files/blender-2.49b-libav-0.7.patch

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"