[Mlt-devel] SF.net SVN: mlt:[1267] trunk/mlt/src/modules/avformat/producer_avformat.c
Brought to you by:
ddennedy,
lilo_booter
From: <dde...@us...> - 2008-12-18 04:42:56
|
Revision: 1267 http://mlt.svn.sourceforge.net/mlt/?rev=1267&view=rev Author: ddennedy Date: 2008-12-18 04:42:53 +0000 (Thu, 18 Dec 2008) Log Message: ----------- producer_avformat.c: add support for AVOptions as properties. Modified Paths: -------------- trunk/mlt/src/modules/avformat/producer_avformat.c Modified: trunk/mlt/src/modules/avformat/producer_avformat.c =================================================================== --- trunk/mlt/src/modules/avformat/producer_avformat.c 2008-12-16 08:36:14 UTC (rev 1266) +++ trunk/mlt/src/modules/avformat/producer_avformat.c 2008-12-18 04:42:53 UTC (rev 1267) @@ -25,6 +25,7 @@ // ffmpeg Header files #include <avformat.h> +#include <opt.h> #ifdef SWSCALE # include <swscale.h> #endif @@ -797,6 +798,26 @@ return 0; } +/** Process properties as AVOptions and apply to AV context obj +*/ + +static void apply_properties( void *obj, mlt_properties properties, int flags ) +{ + int i; + int count = mlt_properties_count( properties ); + for ( i = 0; i < count; i++ ) + { + const char *opt_name = mlt_properties_get_name( properties, i ); + const AVOption *opt = av_find_opt( obj, opt_name, NULL, flags, flags ); + if ( opt != NULL ) +#if LIBAVCODEC_VERSION_INT >= ((51<<16)+(59<<8)+0) + av_set_string2( obj, opt_name, mlt_properties_get( properties, opt_name), 0 ); +#else + av_set_string( obj, opt_name, mlt_properties_get( properties, opt_name) ); +#endif + } +} + /** Set up video handling. */ @@ -820,6 +841,9 @@ context = mlt_properties_get_data( properties, "video_context", NULL ); mlt_properties_set_data( properties, "dummy_context", NULL, 0, NULL, NULL ); mlt_events_unblock( properties, this ); + + // Process properties as AVOptions + apply_properties( context, properties, AV_OPT_FLAG_DECODING_PARAM ); } // Exception handling for video_index @@ -894,6 +918,9 @@ index = -1; } avformat_unlock( ); + + // Process properties as AVOptions + apply_properties( codec_context, properties, AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM ); } // No codec, no show... @@ -1293,6 +1320,9 @@ index = -1; } avformat_unlock( ); + + // Process properties as AVOptions + apply_properties( codec_context, properties, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_DECODING_PARAM ); } // No codec, no show... This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |