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-video/cinelerra/files/cinelerra-ffmpeg.patch

77 lines
2.4 KiB

Fix build with ffmpeg/libav trunk / 0.7
Index: cinelerra-20101104/cinelerra/ffmpeg.C
===================================================================
--- cinelerra-20101104.orig/cinelerra/ffmpeg.C
+++ cinelerra-20101104/cinelerra/ffmpeg.C
@@ -364,12 +364,15 @@ int FFMPEG::decode(uint8_t *data, long d
// NOTE: frame must already have data space allocated
+ AVPacket pkt;
got_picture = 0;
- int length = avcodec_decode_video(context,
+ av_init_packet( &pkt );
+ pkt.data = data;
+ pkt.size = data_size;
+ int length = avcodec_decode_video2(context,
picture,
&got_picture,
- data,
- data_size);
+ &pkt);
if (length < 0) {
printf("FFMPEG::decode error decoding frame\n");
Index: cinelerra-20101104/quicktime/qtffmpeg.c
===================================================================
--- cinelerra-20101104.orig/quicktime/qtffmpeg.c
+++ cinelerra-20101104/quicktime/qtffmpeg.c
@@ -181,6 +181,7 @@ static int decode_wrapper(quicktime_t *f
if(!result)
{
+ AVPacket pkt;
// No way to determine if there was an error based on nonzero status.
@@ -189,11 +190,13 @@ static int decode_wrapper(quicktime_t *f
ffmpeg->decoder_context[current_field]->skip_frame = AVDISCARD_NONREF /* AVDISCARD_BIDIR */;
else
ffmpeg->decoder_context[current_field]->skip_frame = AVDISCARD_DEFAULT;
- result = avcodec_decode_video(ffmpeg->decoder_context[current_field],
+ av_init_packet( &pkt );
+ pkt.data = ffmpeg->work_buffer;
+ pkt.size = bytes + header_bytes;
+ result = avcodec_decode_video2(ffmpeg->decoder_context[current_field],
&ffmpeg->picture[current_field],
&got_picture,
- ffmpeg->work_buffer,
- bytes + header_bytes);
+ &pkt);
Index: cinelerra-20101104/quicktime/wma.c
===================================================================
--- cinelerra-20101104.orig/quicktime/wma.c
+++ cinelerra-20101104/quicktime/wma.c
@@ -195,11 +195,14 @@ printf("decode 2 %x %llx %llx\n", chunk_
chunk_size);
#else
bytes_decoded = AVCODEC_MAX_AUDIO_FRAME_SIZE;
- result = avcodec_decode_audio2(codec->decoder_context,
+ AVPacket pkt;
+ av_init_packet( &pkt );
+ pkt.data = codec->packet_buffer;
+ pkt.size = chunk_size;
+ result = avcodec_decode_audio3(codec->decoder_context,
(int16_t*)(codec->work_buffer + codec->output_size * sample_size),
&bytes_decoded,
- codec->packet_buffer,
- chunk_size);
+ &pkt);
#endif
pthread_mutex_unlock(&ffmpeg_lock);