Hi Dan, I couldn't check the issue and patch, yet. Maybe this is new to you or is it already fixed in git?
-------- Weitergeleitete Nachricht -------- Betreff: Bug#803841: mlt: FTBFS with FFmpeg 2.9 Weitersenden-Datum: Mon, 02 Nov 2015 21:12:05 +0000 Weitersenden-Von: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> Weitersenden-An: debian-bugs-d...@lists.debian.org Weitersenden-CC: Fathi Boudra <f...@debian.org> Datum: Mon, 2 Nov 2015 22:07:33 +0100 Von: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> Antwort an: Andreas Cadhalpun <andreas.cadhal...@googlemail.com>, 803...@bugs.debian.org An: sub...@bugs.debian.org Package: mlt Version: 0.9.8-2 Severity: important Tags: patch User: pkg-multimedia-maintain...@lists.alioth.debian.org Usertags: ffmpeg2.9 Dear Maintainer, your package fails to build with the upcoming ffmpeg 2.9. This bug will become release-critical at some point when the ffmpeg2.9 transition gets closer. Attached is a patch replacing the deprecated functionality. It also works with ffmpeg 2.8. Please apply this patch and forward it upstream, if necessary. These changes are non-trivial and should be runtime-tested. Best regards, Andreas
diff --git a/debian/control b/debian/control index 0775f4f..a212644 100644 --- a/debian/control +++ b/debian/control @@ -17,6 +17,7 @@ Build-Depends: debhelper (>= 9), libsdl1.2-dev, libsox-dev (>= 14.3.0), libswscale-dev, + libswresample-dev, libvorbis-dev, libxine2-dev, libxml2-dev, diff --git a/debian/patches/ffmpeg_2.9.patch b/debian/patches/ffmpeg_2.9.patch new file mode 100644 index 0000000..4dc19d5 --- /dev/null +++ b/debian/patches/ffmpeg_2.9.patch @@ -0,0 +1,563 @@ +Description: Replace deprecated FFmpeg API +Author: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> +Last-Update: <2015-11-02> + +--- mlt-0.9.8.orig/src/modules/avformat/configure ++++ mlt-0.9.8/src/modules/avformat/configure +@@ -131,6 +131,8 @@ else + echo "LDFLAGS+=$(pkg-config --libs libavformat${avformat_suffix})" >> config.mak + echo "CFLAGS+=$(pkg-config --cflags libswscale${avformat_suffix})" >> config.mak + echo "LDFLAGS+=$(pkg-config --libs libswscale${avformat_suffix})" >> config.mak ++ echo "CFLAGS+=$(pkg-config --cflags libswresample${avformat_suffix})" >> config.mak ++ echo "LDFLAGS+=$(pkg-config --libs libswresample${avformat_suffix})" >> config.mak + if [ "$devices" = "true" ] + then + if ! $(pkg-config libavdevice${avformat_suffix}); then +--- mlt-0.9.8.orig/src/modules/avformat/consumer_avformat.c ++++ mlt-0.9.8/src/modules/avformat/consumer_avformat.c +@@ -439,18 +439,18 @@ static void apply_properties( void *obj, + } + } + +-static enum PixelFormat pick_pix_fmt( mlt_image_format img_fmt ) ++static enum AVPixelFormat pick_pix_fmt( mlt_image_format img_fmt ) + { + switch ( img_fmt ) + { + case mlt_image_rgb24: +- return PIX_FMT_RGB24; ++ return AV_PIX_FMT_RGB24; + case mlt_image_rgb24a: +- return PIX_FMT_RGBA; ++ return AV_PIX_FMT_RGBA; + case mlt_image_yuv420p: +- return PIX_FMT_YUV420P; ++ return AV_PIX_FMT_YUV420P; + default: +- return PIX_FMT_YUYV422; ++ return AV_PIX_FMT_YUYV422; + } + } + +@@ -798,7 +798,7 @@ static AVStream *add_video_stream( mlt_c + st->time_base = c->time_base; + + // Default to the codec's first pix_fmt if possible. +- c->pix_fmt = pix_fmt? av_get_pix_fmt( pix_fmt ) : codec? codec->pix_fmts[0] : PIX_FMT_YUV420P; ++ c->pix_fmt = pix_fmt? av_get_pix_fmt( pix_fmt ) : codec? codec->pix_fmts[0] : AV_PIX_FMT_YUV420P; + + switch ( colorspace ) + { +@@ -991,7 +991,7 @@ static AVFrame *alloc_picture( int pix_f + else + { + // Something failed - clean up what we can +- av_free( picture ); ++ av_frame_free( &picture ); + av_free( picture_buf ); + picture = NULL; + } +@@ -1032,7 +1032,7 @@ static int open_video( mlt_properties pr + + if( codec && codec->pix_fmts ) + { +- const enum PixelFormat *p = codec->pix_fmts; ++ const enum AVPixelFormat *p = codec->pix_fmts; + for( ; *p!=-1; p++ ) + { + if( *p == video_enc->pix_fmt ) +@@ -1791,12 +1791,6 @@ static void *consumer_thread( void *arg + + // Do the colour space conversion + int flags = SWS_BICUBIC; +-#ifdef USE_MMX +- flags |= SWS_CPU_CAPS_MMX; +-#endif +-#ifdef USE_SSE +- flags |= SWS_CPU_CAPS_MMX2; +-#endif + struct SwsContext *context = sws_getContext( width, height, pick_pix_fmt( img_fmt ), + width, height, c->pix_fmt, flags, NULL, NULL, NULL); + sws_scale( context, (const uint8_t* const*) video_avframe->data, video_avframe->linesize, 0, height, +@@ -1808,9 +1802,9 @@ static void *consumer_thread( void *arg + // Apply the alpha if applicable + if ( !mlt_properties_get( properties, "mlt_image_format" ) || + strcmp( mlt_properties_get( properties, "mlt_image_format" ), "rgb24a" ) ) +- if ( c->pix_fmt == PIX_FMT_RGBA || +- c->pix_fmt == PIX_FMT_ARGB || +- c->pix_fmt == PIX_FMT_BGRA ) ++ if ( c->pix_fmt == AV_PIX_FMT_RGBA || ++ c->pix_fmt == AV_PIX_FMT_ARGB || ++ c->pix_fmt == AV_PIX_FMT_BGRA ) + { + uint8_t *alpha = mlt_frame_get_alpha_mask( frame ); + register int n; +@@ -2137,9 +2131,9 @@ on_fatal_error: + av_free( converted_avframe ); + if ( video_avframe ) + av_free( video_avframe->data[0] ); +- av_free( video_avframe ); ++ av_frame_free( &video_avframe ); + av_free( video_outbuf ); +- av_free( audio_avframe ); ++ av_frame_free( &audio_avframe ); + av_free( audio_buf_1 ); + av_free( audio_buf_2 ); + +--- mlt-0.9.8.orig/src/modules/avformat/filter_avcolour_space.c ++++ mlt-0.9.8/src/modules/avformat/filter_avcolour_space.c +@@ -47,17 +47,17 @@ static int convert_mlt_to_av_cs( mlt_ima + switch( format ) + { + case mlt_image_rgb24: +- value = PIX_FMT_RGB24; ++ value = AV_PIX_FMT_RGB24; + break; + case mlt_image_rgb24a: + case mlt_image_opengl: +- value = PIX_FMT_RGBA; ++ value = AV_PIX_FMT_RGBA; + break; + case mlt_image_yuv422: +- value = PIX_FMT_YUYV422; ++ value = AV_PIX_FMT_YUYV422; + break; + case mlt_image_yuv420p: +- value = PIX_FMT_YUV420P; ++ value = AV_PIX_FMT_YUV420P; + break; + default: + mlt_log_error( NULL, "[filter avcolor_space] Invalid format %s\n", +@@ -123,16 +123,10 @@ static int av_convert_image( uint8_t *ou + int flags = SWS_BICUBIC | SWS_ACCURATE_RND; + int error = -1; + +- if ( out_fmt == PIX_FMT_YUYV422 ) ++ if ( out_fmt == AV_PIX_FMT_YUYV422 ) + flags |= SWS_FULL_CHR_H_INP; + else + flags |= SWS_FULL_CHR_H_INT; +-#ifdef USE_MMX +- flags |= SWS_CPU_CAPS_MMX; +-#endif +-#ifdef USE_SSE +- flags |= SWS_CPU_CAPS_MMX2; +-#endif + + avpicture_fill( &input, in, in_fmt, width, height ); + avpicture_fill( &output, out, out_fmt, width, height ); +@@ -141,7 +135,7 @@ static int av_convert_image( uint8_t *ou + if ( context ) + { + // libswscale wants the RGB colorspace to be SWS_CS_DEFAULT, which is = SWS_CS_ITU601. +- if ( out_fmt == PIX_FMT_RGB24 || out_fmt == PIX_FMT_RGBA ) ++ if ( out_fmt == AV_PIX_FMT_RGB24 || out_fmt == AV_PIX_FMT_RGBA ) + dst_colorspace = 601; + error = set_luma_transfer( context, src_colorspace, dst_colorspace, use_full_range ); + sws_scale( context, (const uint8_t* const*) input.data, input.linesize, 0, height, +@@ -326,7 +320,7 @@ mlt_filter filter_avcolour_space_init( v + int *width = (int*) arg; + if ( *width > 0 ) + { +- struct SwsContext *context = sws_getContext( *width, *width, PIX_FMT_RGB32, 64, 64, PIX_FMT_RGB32, SWS_BILINEAR, NULL, NULL, NULL); ++ struct SwsContext *context = sws_getContext( *width, *width, AV_PIX_FMT_RGB32, 64, 64, AV_PIX_FMT_RGB32, SWS_BILINEAR, NULL, NULL, NULL); + if ( context ) + sws_freeContext( context ); + else +--- mlt-0.9.8.orig/src/modules/avformat/filter_avdeinterlace.c ++++ mlt-0.9.8/src/modules/avformat/filter_avdeinterlace.c +@@ -234,28 +234,28 @@ static int mlt_avpicture_deinterlace(AVP + { + int i; + +- if (pix_fmt != PIX_FMT_YUV420P && +- pix_fmt != PIX_FMT_YUV422P && +- pix_fmt != PIX_FMT_YUYV422 && +- pix_fmt != PIX_FMT_YUV444P && +- pix_fmt != PIX_FMT_YUV411P) ++ if (pix_fmt != AV_PIX_FMT_YUV420P && ++ pix_fmt != AV_PIX_FMT_YUV422P && ++ pix_fmt != AV_PIX_FMT_YUYV422 && ++ pix_fmt != AV_PIX_FMT_YUV444P && ++ pix_fmt != AV_PIX_FMT_YUV411P) + return -1; + if ((width & 3) != 0 || (height & 3) != 0) + return -1; + +- if ( pix_fmt != PIX_FMT_YUYV422 ) ++ if ( pix_fmt != AV_PIX_FMT_YUYV422 ) + { + for(i=0;i<3;i++) { + if (i == 1) { + switch(pix_fmt) { +- case PIX_FMT_YUV420P: ++ case AV_PIX_FMT_YUV420P: + width >>= 1; + height >>= 1; + break; +- case PIX_FMT_YUV422P: ++ case AV_PIX_FMT_YUV422P: + width >>= 1; + break; +- case PIX_FMT_YUV411P: ++ case AV_PIX_FMT_YUV411P: + width >>= 2; + break; + default: +@@ -312,8 +312,8 @@ static int filter_get_image( mlt_frame f + AVPicture *output = mlt_pool_alloc( sizeof( AVPicture ) ); + + // Fill the picture +- avpicture_fill( output, *image, PIX_FMT_YUYV422, *width, *height ); +- mlt_avpicture_deinterlace( output, output, PIX_FMT_YUYV422, *width, *height ); ++ avpicture_fill( output, *image, AV_PIX_FMT_YUYV422, *width, *height ); ++ mlt_avpicture_deinterlace( output, output, AV_PIX_FMT_YUYV422, *width, *height ); + + // Free the picture + mlt_pool_release( output ); +--- mlt-0.9.8.orig/src/modules/avformat/filter_avresample.c ++++ mlt-0.9.8/src/modules/avformat/filter_avresample.c +@@ -28,12 +28,17 @@ + // ffmpeg Header files + #include <libavformat/avformat.h> + #include <libavutil/samplefmt.h> ++#include <libswresample/swresample.h> + + #if defined(FFUDIV) + + #define MAX_AUDIO_FRAME_SIZE (192000) // 1 second of 48khz 32bit audio + + ++static void destroy_swr(SwrContext *swr) { ++ swr_free(&swr); ++} ++ + /** Get the audio. + */ + +@@ -50,9 +55,10 @@ static int resample_get_audio( mlt_frame + // Get the resample information + int output_rate = mlt_properties_get_int( filter_properties, "frequency" ); + int16_t *sample_buffer = mlt_properties_get_data( filter_properties, "buffer", NULL ); ++ uint8_t *data[1] = { sample_buffer }; + + // Obtain the resample context if it exists +- ReSampleContext *resample = mlt_properties_get_data( filter_properties, "audio_resample", NULL ); ++ SwrContext *swr = mlt_properties_get_data( filter_properties, "audio_resample", NULL ); + + // If no resample frequency is specified, default to requested value + if ( output_rate == 0 ) +@@ -79,14 +85,17 @@ static int resample_get_audio( mlt_frame + } + + // Create a resampler if nececessary +- if ( resample == NULL || *frequency != mlt_properties_get_int( filter_properties, "last_frequency" ) ) ++ if ( swr == NULL || *frequency != mlt_properties_get_int( filter_properties, "last_frequency" ) ) + { + // Create the resampler +- resample = av_audio_resample_init( *channels, *channels, output_rate, *frequency, +- AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_S16, 16, 10, 0, 0.8 ); ++ swr = swr_alloc_set_opts(swr, ++ av_get_default_channel_layout(*channels), AV_SAMPLE_FMT_S16, output_rate, ++ av_get_default_channel_layout(*channels), AV_SAMPLE_FMT_S16, *frequency, ++ 0, NULL); ++ swr_init(swr); + + // And store it on properties +- mlt_properties_set_data( filter_properties, "audio_resample", resample, 0, ( mlt_destructor )audio_resample_close, NULL ); ++ mlt_properties_set_data( filter_properties, "audio_resample", swr, 0, ( mlt_destructor )destroy_swr, NULL ); + + // And remember what it was created for + mlt_properties_set_int( filter_properties, "last_frequency", *frequency ); +@@ -95,7 +104,7 @@ static int resample_get_audio( mlt_frame + mlt_service_unlock( MLT_FILTER_SERVICE( filter ) ); + + // Resample the audio +- used = audio_resample( resample, sample_buffer, *buffer, *samples ); ++ used = swr_convert(swr, data, MAX_AUDIO_FRAME_SIZE, buffer, *samples); + int size = used * *channels * sizeof( int16_t ); + + // Resize if necessary +--- mlt-0.9.8.orig/src/modules/avformat/filter_swscale.c ++++ mlt-0.9.8/src/modules/avformat/filter_swscale.c +@@ -37,17 +37,17 @@ static inline int convert_mlt_to_av_cs( + switch( format ) + { + case mlt_image_rgb24: +- value = PIX_FMT_RGB24; ++ value = AV_PIX_FMT_RGB24; + break; + case mlt_image_rgb24a: + case mlt_image_opengl: +- value = PIX_FMT_RGBA; ++ value = AV_PIX_FMT_RGBA; + break; + case mlt_image_yuv422: +- value = PIX_FMT_YUYV422; ++ value = AV_PIX_FMT_YUYV422; + break; + case mlt_image_yuv420p: +- value = PIX_FMT_YUV420P; ++ value = AV_PIX_FMT_YUV420P; + break; + default: + fprintf( stderr, "Invalid format...\n" ); +@@ -108,12 +108,6 @@ static int filter_scale( mlt_frame frame + // XXX: we only know how to rescale packed formats + return 1; + } +-#ifdef USE_MMX +- interp |= SWS_CPU_CAPS_MMX; +-#endif +-#ifdef USE_SSE +- interp |= SWS_CPU_CAPS_MMX2; +-#endif + + // Convert the pixel formats + int avformat = convert_mlt_to_av_cs( *format ); +@@ -148,7 +142,7 @@ static int filter_scale( mlt_frame frame + uint8_t *alpha = mlt_frame_get_alpha( frame ); + if ( alpha ) + { +- avformat = PIX_FMT_GRAY8; ++ avformat = AV_PIX_FMT_GRAY8; + struct SwsContext *context = sws_getContext( iwidth, iheight, avformat, owidth, oheight, avformat, interp, NULL, NULL, NULL); + avpicture_fill( &input, alpha, avformat, iwidth, iheight ); + outbuf = mlt_pool_alloc( owidth * oheight ); +@@ -182,7 +176,7 @@ mlt_filter filter_swscale_init( mlt_prof + int *width = (int*) arg; + if ( *width > 0 ) + { +- struct SwsContext *context = sws_getContext( *width, *width, PIX_FMT_RGB32, 64, 64, PIX_FMT_RGB32, SWS_BILINEAR, NULL, NULL, NULL); ++ struct SwsContext *context = sws_getContext( *width, *width, AV_PIX_FMT_RGB32, 64, 64, AV_PIX_FMT_RGB32, SWS_BILINEAR, NULL, NULL, NULL); + if ( context ) + sws_freeContext( context ); + else +--- mlt-0.9.8.orig/src/modules/avformat/producer_avformat.c ++++ mlt-0.9.8/src/modules/avformat/producer_avformat.c +@@ -504,21 +504,21 @@ static char* parse_url( mlt_profile prof + return result; + } + +-static enum PixelFormat pick_pix_fmt( enum PixelFormat pix_fmt ) ++static enum AVPixelFormat pick_pix_fmt( enum AVPixelFormat pix_fmt ) + { + switch ( pix_fmt ) + { +- case PIX_FMT_ARGB: +- case PIX_FMT_RGBA: +- case PIX_FMT_ABGR: +- case PIX_FMT_BGRA: +- return PIX_FMT_RGBA; ++ case AV_PIX_FMT_ARGB: ++ case AV_PIX_FMT_RGBA: ++ case AV_PIX_FMT_ABGR: ++ case AV_PIX_FMT_BGRA: ++ return AV_PIX_FMT_RGBA; + #if defined(FFUDIV) && (LIBSWSCALE_VERSION_INT >= ((2<<16)+(5<<8)+102)) + case AV_PIX_FMT_BAYER_RGGB16LE: +- return PIX_FMT_RGB24; ++ return AV_PIX_FMT_RGB24; + #endif + default: +- return PIX_FMT_YUV422P; ++ return AV_PIX_FMT_YUV422P; + } + } + +@@ -875,7 +875,7 @@ static int seek_video( producer_avformat + // Remove the cached info relating to the previous position + self->current_position = POSITION_INVALID; + self->last_position = POSITION_INVALID; +- av_freep( &self->video_frame ); ++ av_frame_free( &self->video_frame ); + } + } + pthread_mutex_unlock( &self->packets_mutex ); +@@ -976,26 +976,26 @@ static int set_luma_transfer( struct Sws + brightness, contrast, saturation ); + } + +-static mlt_image_format pick_image_format( enum PixelFormat pix_fmt ) ++static mlt_image_format pick_image_format( enum AVPixelFormat pix_fmt ) + { + switch ( pix_fmt ) + { +- case PIX_FMT_ARGB: +- case PIX_FMT_RGBA: +- case PIX_FMT_ABGR: +- case PIX_FMT_BGRA: ++ case AV_PIX_FMT_ARGB: ++ case AV_PIX_FMT_RGBA: ++ case AV_PIX_FMT_ABGR: ++ case AV_PIX_FMT_BGRA: + return mlt_image_rgb24a; +- case PIX_FMT_YUV420P: +- case PIX_FMT_YUVJ420P: +- case PIX_FMT_YUVA420P: ++ case AV_PIX_FMT_YUV420P: ++ case AV_PIX_FMT_YUVJ420P: ++ case AV_PIX_FMT_YUVA420P: + return mlt_image_yuv420p; +- case PIX_FMT_RGB24: +- case PIX_FMT_BGR24: +- case PIX_FMT_GRAY8: +- case PIX_FMT_MONOWHITE: +- case PIX_FMT_MONOBLACK: +- case PIX_FMT_RGB8: +- case PIX_FMT_BGR8: ++ case AV_PIX_FMT_RGB24: ++ case AV_PIX_FMT_BGR24: ++ case AV_PIX_FMT_GRAY8: ++ case AV_PIX_FMT_MONOWHITE: ++ case AV_PIX_FMT_MONOBLACK: ++ case AV_PIX_FMT_RGB8: ++ case AV_PIX_FMT_BGR8: + #if defined(FFUDIV) && (LIBSWSCALE_VERSION_INT >= ((2<<16)+(5<<8)+102)) + case AV_PIX_FMT_BAYER_RGGB16LE: + return mlt_image_rgb24; +@@ -1071,21 +1071,15 @@ static int convert_image( producer_avfor + mlt_profile profile = mlt_service_profile( MLT_PRODUCER_SERVICE( self->parent ) ); + int result = self->yuv_colorspace; + +-#ifdef USE_MMX +- flags |= SWS_CPU_CAPS_MMX; +-#endif +-#ifdef USE_SSE +- flags |= SWS_CPU_CAPS_MMX2; +-#endif + + mlt_log_debug( MLT_PRODUCER_SERVICE(self->parent), "%s @ %dx%d space %d->%d\n", + mlt_image_format_name( *format ), + width, height, self->yuv_colorspace, profile->colorspace ); + + // extract alpha from planar formats +- if ( ( pix_fmt == PIX_FMT_YUVA420P ++ if ( ( pix_fmt == AV_PIX_FMT_YUVA420P + #if defined(FFUDIV) +- || pix_fmt == PIX_FMT_YUVA444P ++ || pix_fmt == AV_PIX_FMT_YUVA444P + #endif + ) && + *format != mlt_image_rgb24a && *format != mlt_image_opengl && +@@ -1110,10 +1104,10 @@ static int convert_image( producer_avfor + // avformat with no filters and explicitly requested. + #if defined(FFUDIV) && (LIBAVFORMAT_VERSION_INT >= ((55<<16)+(48<<8)+100)) + struct SwsContext *context = sws_getContext(width, height, src_pix_fmt, +- width, height, PIX_FMT_YUV420P, flags, NULL, NULL, NULL); ++ width, height, AV_PIX_FMT_YUV420P, flags, NULL, NULL, NULL); + #else + struct SwsContext *context = sws_getContext( width, height, pix_fmt, +- width, height, self->full_luma ? PIX_FMT_YUVJ420P : PIX_FMT_YUV420P, ++ width, height, self->full_luma ? AV_PIX_FMT_YUVJ420P : AV_PIX_FMT_YUV420P, + flags, NULL, NULL, NULL); + #endif + +@@ -1133,9 +1127,9 @@ static int convert_image( producer_avfor + else if ( *format == mlt_image_rgb24 ) + { + struct SwsContext *context = sws_getContext( width, height, src_pix_fmt, +- width, height, PIX_FMT_RGB24, flags | SWS_FULL_CHR_H_INT, NULL, NULL, NULL); ++ width, height, AV_PIX_FMT_RGB24, flags | SWS_FULL_CHR_H_INT, NULL, NULL, NULL); + AVPicture output; +- avpicture_fill( &output, buffer, PIX_FMT_RGB24, width, height ); ++ avpicture_fill( &output, buffer, AV_PIX_FMT_RGB24, width, height ); + // libswscale wants the RGB colorspace to be SWS_CS_DEFAULT, which is = SWS_CS_ITU601. + set_luma_transfer( context, self->yuv_colorspace, 601, self->full_luma, 0 ); + sws_scale( context, (const uint8_t* const*) frame->data, frame->linesize, 0, height, +@@ -1145,9 +1139,9 @@ static int convert_image( producer_avfor + else if ( *format == mlt_image_rgb24a || *format == mlt_image_opengl ) + { + struct SwsContext *context = sws_getContext( width, height, src_pix_fmt, +- width, height, PIX_FMT_RGBA, flags | SWS_FULL_CHR_H_INT, NULL, NULL, NULL); ++ width, height, AV_PIX_FMT_RGBA, flags | SWS_FULL_CHR_H_INT, NULL, NULL, NULL); + AVPicture output; +- avpicture_fill( &output, buffer, PIX_FMT_RGBA, width, height ); ++ avpicture_fill( &output, buffer, AV_PIX_FMT_RGBA, width, height ); + // libswscale wants the RGB colorspace to be SWS_CS_DEFAULT, which is = SWS_CS_ITU601. + set_luma_transfer( context, self->yuv_colorspace, 601, self->full_luma, 0 ); + sws_scale( context, (const uint8_t* const*) frame->data, frame->linesize, 0, height, +@@ -1158,13 +1152,13 @@ static int convert_image( producer_avfor + { + #if defined(FFUDIV) && (LIBAVFORMAT_VERSION_INT >= ((55<<16)+(48<<8)+100)) + struct SwsContext *context = sws_getContext( width, height, src_pix_fmt, +- width, height, PIX_FMT_YUYV422, flags | SWS_FULL_CHR_H_INP, NULL, NULL, NULL); ++ width, height, AV_PIX_FMT_YUYV422, flags | SWS_FULL_CHR_H_INP, NULL, NULL, NULL); + #else + struct SwsContext *context = sws_getContext( width, height, pix_fmt, +- width, height, PIX_FMT_YUYV422, flags | SWS_FULL_CHR_H_INP, NULL, NULL, NULL); ++ width, height, AV_PIX_FMT_YUYV422, flags | SWS_FULL_CHR_H_INP, NULL, NULL, NULL); + #endif + AVPicture output; +- avpicture_fill( &output, buffer, PIX_FMT_YUYV422, width, height ); ++ avpicture_fill( &output, buffer, AV_PIX_FMT_YUYV422, width, height ); + if ( !set_luma_transfer( context, self->yuv_colorspace, profile->colorspace, self->full_luma, 0 ) ) + result = profile->colorspace; + sws_scale( context, (const uint8_t* const*) frame->data, frame->linesize, 0, height, +@@ -1310,10 +1304,10 @@ static int producer_get_image( mlt_frame + stream = context->streams[ self->video_index ]; + codec_context = stream->codec; + if ( *format == mlt_image_none || *format == mlt_image_glsl || +- codec_context->pix_fmt == PIX_FMT_ARGB || +- codec_context->pix_fmt == PIX_FMT_RGBA || +- codec_context->pix_fmt == PIX_FMT_ABGR || +- codec_context->pix_fmt == PIX_FMT_BGRA ) ++ codec_context->pix_fmt == AV_PIX_FMT_ARGB || ++ codec_context->pix_fmt == AV_PIX_FMT_RGBA || ++ codec_context->pix_fmt == AV_PIX_FMT_ABGR || ++ codec_context->pix_fmt == AV_PIX_FMT_BGRA ) + *format = pick_image_format( codec_context->pix_fmt ); + #if defined(FFUDIV) && (LIBSWSCALE_VERSION_INT >= ((2<<16)+(5<<8)+102)) + else if ( codec_context->pix_fmt == AV_PIX_FMT_BAYER_RGGB16LE ) { +@@ -1346,7 +1340,7 @@ static int producer_get_image( mlt_frame + picture.linesize[1] = codec_context->width / 2; + picture.linesize[2] = codec_context->width / 2; + yuv_colorspace = convert_image( self, (AVFrame*) &picture, *buffer, +- PIX_FMT_YUV420P, format, *width, *height, &alpha ); ++ AV_PIX_FMT_YUV420P, format, *width, *height, &alpha ); + } + else + #endif +@@ -1539,7 +1533,7 @@ static int producer_get_image( mlt_frame + VdpStatus status = vdp_surface_get_bits( render->surface, dest_format, planes, pitches ); + if ( status == VDP_STATUS_OK ) + { +- yuv_colorspace = convert_image( self, self->video_frame, *buffer, PIX_FMT_YUV420P, ++ yuv_colorspace = convert_image( self, self->video_frame, *buffer, AV_PIX_FMT_YUV420P, + format, *width, *height, &alpha ); + mlt_properties_set_int( frame_properties, "colorspace", yuv_colorspace ); + } +@@ -2601,8 +2595,8 @@ static void producer_avformat_close( pro + + // Cleanup av contexts + av_free_packet( &self->pkt ); +- av_free( self->video_frame ); +- av_free( self->audio_frame ); ++ av_frame_free( &self->video_frame ); ++ av_frame_free( &self->audio_frame ); + if ( self->is_mutex_init ) + pthread_mutex_lock( &self->open_mutex ); + int i; +--- mlt-0.9.8.orig/src/modules/avformat/vdpau.c ++++ mlt-0.9.8/src/modules/avformat/vdpau.c +@@ -136,9 +136,9 @@ static int vdpau_init( producer_avformat + return success; + } + +-static enum PixelFormat vdpau_get_format( struct AVCodecContext *s, const enum PixelFormat *fmt ) ++static enum AVPixelFormat vdpau_get_format( struct AVCodecContext *s, const enum PixelFormat *fmt ) + { +- return PIX_FMT_VDPAU_H264; ++ return AV_PIX_FMT_VDPAU_H264; + } + + static int vdpau_get_buffer( AVCodecContext *codec_context, AVFrame *frame ) +@@ -240,7 +240,7 @@ static int vdpau_decoder_init( producer_ + self->video_codec->release_buffer = vdpau_release_buffer; + self->video_codec->draw_horiz_band = vdpau_draw_horiz; + self->video_codec->slice_flags = SLICE_FLAG_CODED_ORDER | SLICE_FLAG_ALLOW_FIELD; +- self->video_codec->pix_fmt = PIX_FMT_VDPAU_H264; ++ self->video_codec->pix_fmt = AV_PIX_FMT_VDPAU_H264; + + VdpDecoderProfile profile = VDP_DECODER_PROFILE_H264_HIGH; + uint32_t max_references = self->video_codec->refs; diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..a827249 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +ffmpeg_2.9.patch
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------
_______________________________________________ Mlt-devel mailing list Mlt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mlt-devel