[packages/mlt] - updated to 0.9.8 - added ffmpeg 3 patch from opensuse - dsabled vdpau support (https://ehc.ac/p/ml
baggins
baggins at pld-linux.org
Sat Apr 2 03:41:28 CEST 2016
commit bb8ae3899836a8d6668b34c2dd9467ea6645bbc0
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sat Apr 2 10:40:04 2016 +0900
- updated to 0.9.8
- added ffmpeg 3 patch from opensuse
- dsabled vdpau support (https://ehc.ac/p/mlt/bugs/240/?limit=25)
ffmpeg3.patch | 580 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mlt.spec | 14 +-
2 files changed, 585 insertions(+), 9 deletions(-)
---
diff --git a/mlt.spec b/mlt.spec
index 11e0a76..e4a5fa7 100644
--- a/mlt.spec
+++ b/mlt.spec
@@ -7,12 +7,13 @@
Summary: MLT - open source multimedia framework
Summary(pl.UTF-8): MLT - szkielet multimedialny o otwartych źródłach
Name: mlt
-Version: 0.9.6
-Release: 3
+Version: 0.9.8
+Release: 1
License: GPL
Group: X11/Applications/Multimedia
Source0: http://downloads.sourceforge.net/mlt/%{name}-%{version}.tar.gz
-# Source0-md5: 92bcc95af44ff086df0a0ce17a201d1c
+# Source0-md5: 268e3551958e9fb98927a87315c16889
+Patch0: ffmpeg3.patch
URL: http://www.mltframework.org/
BuildRequires: QtGui-devel
BuildRequires: QtSvg-devel
@@ -81,11 +82,7 @@ Ten pakiet zawiera pliki nagłówkowe dla MLT.
%prep
%setup -q
-
-# current
-sed -i -e 's#/usr/lib/libvdpau.so#%{_libdir}/libvdpau.so.1#g' ./src/modules/avformat/vdpau.c
-# in case of future changes
-sed -i -e 's#/usr/local/lib/libvdpau.so#%{_libdir}/libvdpau.so.2#g' ./src/modules/avformat/vdpau.c
+%patch0 -p1
%build
%configure \
@@ -110,7 +107,6 @@ sed -i -e 's#/usr/local/lib/libvdpau.so#%{_libdir}/libvdpau.so.2#g' ./src/module
--disable-sse2 \
%endif
--avformat-swscale \
- --avformat-vdpau \
--qimage-includedir=%{_includedir}/qt4 \
--qimage-libdir=%{_libdir} \
--swig-languages=python
diff --git a/ffmpeg3.patch b/ffmpeg3.patch
new file mode 100644
index 0000000..6607f83
--- /dev/null
+++ b/ffmpeg3.patch
@@ -0,0 +1,580 @@
+---
+ src/modules/avformat/consumer_avformat.c | 25 +++---
+ src/modules/avformat/filter_avcolour_space.c | 19 ++--
+ src/modules/avformat/filter_avdeinterlace.c | 22 ++---
+ src/modules/avformat/filter_swscale.c | 17 ++--
+ src/modules/avformat/producer_avformat.c | 103 +++++++++++++--------------
+ src/modules/avformat/vdpau.c | 6 -
+ 6 files changed, 98 insertions(+), 94 deletions(-)
+
+Index: mlt-0.9.8/src/modules/avformat/consumer_avformat.c
+===================================================================
+--- mlt-0.9.8.orig/src/modules/avformat/consumer_avformat.c
++++ mlt-0.9.8/src/modules/avformat/consumer_avformat.c
+@@ -41,6 +41,7 @@
+ #include <libavutil/mathematics.h>
+ #include <libavutil/samplefmt.h>
+ #include <libavutil/opt.h>
++#include <libpostproc/postprocess.h>
+
+ #if LIBAVCODEC_VERSION_MAJOR < 55
+ #define AV_CODEC_ID_PCM_S16LE CODEC_ID_PCM_S16LE
+@@ -439,18 +440,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 +799,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 )
+ {
+@@ -1032,7 +1033,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 )
+@@ -1792,10 +1793,10 @@ static void *consumer_thread( void *arg
+ // Do the colour space conversion
+ int flags = SWS_BICUBIC;
+ #ifdef USE_MMX
+- flags |= SWS_CPU_CAPS_MMX;
++ flags |= PP_CPU_CAPS_MMX;
+ #endif
+ #ifdef USE_SSE
+- flags |= SWS_CPU_CAPS_MMX2;
++ flags |= PP_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);
+@@ -1808,9 +1809,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;
+Index: mlt-0.9.8/src/modules/avformat/filter_avcolour_space.c
+===================================================================
+--- mlt-0.9.8.orig/src/modules/avformat/filter_avcolour_space.c
++++ mlt-0.9.8/src/modules/avformat/filter_avcolour_space.c
+@@ -26,6 +26,7 @@
+ // ffmpeg Header files
+ #include <libavformat/avformat.h>
+ #include <libswscale/swscale.h>
++#include <libpostproc/postprocess.h>
+
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -47,17 +48,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,15 +124,15 @@ 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;
++ flags |= PP_CPU_CAPS_MMX;
+ #endif
+ #ifdef USE_SSE
+- flags |= SWS_CPU_CAPS_MMX2;
++ flags |= PP_CPU_CAPS_MMX2;
+ #endif
+
+ avpicture_fill( &input, in, in_fmt, width, height );
+@@ -141,7 +142,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 +327,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
+Index: mlt-0.9.8/src/modules/avformat/filter_avdeinterlace.c
+===================================================================
+--- 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 );
+Index: mlt-0.9.8/src/modules/avformat/filter_swscale.c
+===================================================================
+--- mlt-0.9.8.orig/src/modules/avformat/filter_swscale.c
++++ mlt-0.9.8/src/modules/avformat/filter_swscale.c
+@@ -25,6 +25,7 @@
+ // ffmpeg Header files
+ #include <libavformat/avformat.h>
+ #include <libswscale/swscale.h>
++#include <libpostproc/postprocess.h>
+
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -37,17 +38,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" );
+@@ -109,10 +110,10 @@ static int filter_scale( mlt_frame frame
+ return 1;
+ }
+ #ifdef USE_MMX
+- interp |= SWS_CPU_CAPS_MMX;
++ interp |= PP_CPU_CAPS_MMX;
+ #endif
+ #ifdef USE_SSE
+- interp |= SWS_CPU_CAPS_MMX2;
++ interp |= PP_CPU_CAPS_MMX2;
+ #endif
+
+ // Convert the pixel formats
+@@ -148,7 +149,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 +183,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
+Index: mlt-0.9.8/src/modules/avformat/producer_avformat.c
+===================================================================
+--- mlt-0.9.8.orig/src/modules/avformat/producer_avformat.c
++++ mlt-0.9.8/src/modules/avformat/producer_avformat.c
+@@ -33,6 +33,7 @@
+ #include <libavutil/pixdesc.h>
+ #include <libavutil/dict.h>
+ #include <libavutil/opt.h>
++#include <libpostproc/postprocess.h>
+
+ #ifdef VDPAU
+ # include <libavcodec/vdpau.h>
+@@ -504,21 +505,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;
+ }
+ }
+
+@@ -759,7 +760,7 @@ static void prepare_reopen( producer_avf
+ {
+ while ( ( pkt = mlt_deque_pop_back( self->apackets ) ) )
+ {
+- av_free_packet( pkt );
++ av_packet_unref( pkt );
+ free( pkt );
+ }
+ mlt_deque_close( self->apackets );
+@@ -769,7 +770,7 @@ static void prepare_reopen( producer_avf
+ {
+ while ( ( pkt = mlt_deque_pop_back( self->vpackets ) ) )
+ {
+- av_free_packet( pkt );
++ av_packet_unref( pkt );
+ free( pkt );
+ }
+ mlt_deque_close( self->vpackets );
+@@ -810,7 +811,7 @@ static void find_first_pts( producer_avf
+ if ( self->first_pts != AV_NOPTS_VALUE )
+ toscan = 0;
+ }
+- av_free_packet( &pkt );
++ av_packet_unref( &pkt );
+ }
+ av_seek_frame( context, -1, 0, AVSEEK_FLAG_BACKWARD );
+ }
+@@ -976,26 +977,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;
+@@ -1072,10 +1073,10 @@ static int convert_image( producer_avfor
+ int result = self->yuv_colorspace;
+
+ #ifdef USE_MMX
+- flags |= SWS_CPU_CAPS_MMX;
++ flags |= PP_CPU_CAPS_MMX;
+ #endif
+ #ifdef USE_SSE
+- flags |= SWS_CPU_CAPS_MMX2;
++ flags |= PP_CPU_CAPS_MMX2;
+ #endif
+
+ mlt_log_debug( MLT_PRODUCER_SERVICE(self->parent), "%s @ %dx%d space %d->%d\n",
+@@ -1083,9 +1084,9 @@ static int convert_image( producer_avfor
+ 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 +1111,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 +1134,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 +1146,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 +1159,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 +1311,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 +1347,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
+@@ -1374,7 +1375,7 @@ static int producer_get_image( mlt_frame
+ {
+ // Read a packet
+ if ( self->pkt.stream_index == self->video_index )
+- av_free_packet( &self->pkt );
++ av_packet_unref( &self->pkt );
+ av_init_packet( &self->pkt );
+ pthread_mutex_lock( &self->packets_mutex );
+ if ( mlt_deque_count( self->vpackets ) )
+@@ -1539,7 +1540,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 );
+ }
+@@ -1573,7 +1574,7 @@ static int producer_get_image( mlt_frame
+ // Free packet data if not video and not live audio packet
+ if ( self->pkt.stream_index != self->video_index &&
+ !( !self->seekable && self->pkt.stream_index == self->audio_index ) )
+- av_free_packet( &self->pkt );
++ av_packet_unref( &self->pkt );
+ }
+ }
+
+@@ -2314,7 +2315,7 @@ static int producer_get_audio( mlt_frame
+ }
+
+ if ( self->seekable || index != self->video_index )
+- av_free_packet( &pkt );
++ av_packet_unref( &pkt );
+
+ }
+
+@@ -2600,7 +2601,7 @@ static void producer_avformat_close( pro
+ mlt_log_debug( NULL, "producer_avformat_close\n" );
+
+ // Cleanup av contexts
+- av_free_packet( &self->pkt );
++ av_packet_unref( &self->pkt );
+ av_free( self->video_frame );
+ av_free( self->audio_frame );
+ if ( self->is_mutex_init )
+@@ -2648,7 +2649,7 @@ static void producer_avformat_close( pro
+ {
+ while ( ( pkt = mlt_deque_pop_back( self->apackets ) ) )
+ {
+- av_free_packet( pkt );
++ av_packet_unref( pkt );
+ free( pkt );
+ }
+ mlt_deque_close( self->apackets );
+@@ -2658,7 +2659,7 @@ static void producer_avformat_close( pro
+ {
+ while ( ( pkt = mlt_deque_pop_back( self->vpackets ) ) )
+ {
+- av_free_packet( pkt );
++ av_packet_unref( pkt );
+ free( pkt );
+ }
+ mlt_deque_close( self->vpackets );
+Index: mlt-0.9.8/src/modules/avformat/vdpau.c
+===================================================================
+--- mlt-0.9.8.orig/src/modules/avformat/vdpau.c
++++ mlt-0.9.8/src/modules/avformat/vdpau.c
+@@ -125,9 +125,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 AVPixelFormat *fmt )
+ {
+- return PIX_FMT_VDPAU_H264;
++ return AV_PIX_FMT_VDPAU_H264;
+ }
+
+ static int vdpau_get_buffer( AVCodecContext *codec_context, AVFrame *frame )
+@@ -229,7 +229,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;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/mlt.git/commitdiff/bb8ae3899836a8d6668b34c2dd9467ea6645bbc0
More information about the pld-cvs-commit
mailing list