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

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
_______________________________________________
Mlt-devel mailing list
Mlt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlt-devel

Reply via email to