X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Favformat%2Fconsumer_avformat.c;h=bc83b0b9b275b3b48f98ee28355743c81e13d18e;hb=d5d878221c3123ef1d3a335dbc2b1878b3fdb983;hp=5a24e96ebb73847b1301624dc906fc4edb5d3b06;hpb=6107edade91b4c2764aa666c5dff5086c4a77a02;p=melted diff --git a/src/modules/avformat/consumer_avformat.c b/src/modules/avformat/consumer_avformat.c index 5a24e96..bc83b0b 100644 --- a/src/modules/avformat/consumer_avformat.c +++ b/src/modules/avformat/consumer_avformat.c @@ -22,6 +22,7 @@ // mlt Header files #include #include +#include // System header files #include @@ -40,6 +41,11 @@ #endif #include +#if LIBAVUTIL_VERSION_INT < (50<<16) +#define PIX_FMT_RGB32 PIX_FMT_RGBA32 +#define PIX_FMT_YUYV422 PIX_FMT_YUV422 +#endif + // // This structure should be extended and made globally available in mlt // @@ -591,9 +597,9 @@ static AVStream *add_video_stream( mlt_consumer this, AVFormatContext *oc, int c if ( mlt_properties_get_int( properties, "progressive" ) == 0 && mlt_properties_get_int( properties, "deinterlace" ) == 0 ) { - if ( mlt_properties_get_int( properties, "ildct" ) ) + if ( ! mlt_properties_get( properties, "ildct" ) || mlt_properties_get_int( properties, "ildct" ) ) c->flags |= CODEC_FLAG_INTERLACED_DCT; - if ( mlt_properties_get_int( properties, "ilme" ) ) + if ( ! mlt_properties_get( properties, "ilme" ) || mlt_properties_get_int( properties, "ilme" ) ) c->flags |= CODEC_FLAG_INTERLACED_ME; } @@ -809,7 +815,7 @@ static void *consumer_thread( void *arg ) // Need two av pictures for converting AVFrame *output = NULL; - AVFrame *input = alloc_picture( PIX_FMT_YUV422, width, height ); + AVFrame *input = alloc_picture( PIX_FMT_YUYV422, width, height ); // For receiving images from an mlt_frame uint8_t *image; @@ -839,7 +845,7 @@ static void *consumer_thread( void *arg ) // Determine the format AVOutputFormat *fmt = NULL; - char *filename = mlt_properties_get( properties, "target" ); + const char *filename = mlt_properties_get( properties, "target" ); char *format = mlt_properties_get( properties, "f" ); char *vcodec = mlt_properties_get( properties, "vcodec" ); char *acodec = mlt_properties_get( properties, "acodec" ); @@ -1101,17 +1107,17 @@ static void *consumer_thread( void *arg ) // Do the colour space conversion #ifdef SWSCALE - struct SwsContext *context = sws_getContext( width, height, PIX_FMT_YUV422, + struct SwsContext *context = sws_getContext( width, height, PIX_FMT_YUYV422, width, height, video_st->codec->pix_fmt, SWS_FAST_BILINEAR, NULL, NULL, NULL); sws_scale( context, input->data, input->linesize, 0, height, output->data, output->linesize); sws_freeContext( context ); #else - img_convert( ( AVPicture * )output, video_st->codec->pix_fmt, ( AVPicture * )input, PIX_FMT_YUV422, width, height ); + img_convert( ( AVPicture * )output, video_st->codec->pix_fmt, ( AVPicture * )input, PIX_FMT_YUYV422, width, height ); #endif // Apply the alpha if applicable - if ( video_st->codec->pix_fmt == PIX_FMT_RGBA32 ) + if ( video_st->codec->pix_fmt == PIX_FMT_RGB32 ) { uint8_t *alpha = mlt_frame_get_alpha_mask( frame ); register int n; @@ -1332,7 +1338,7 @@ static void *consumer_thread( void *arg ) // Remove the x264 dual pass logs char *cwd = getcwd( NULL, 0 ); - char *file = "x264_2pass.log"; + const char *file = "x264_2pass.log"; char *full = malloc( strlen( cwd ) + strlen( file ) + 2 ); sprintf( full, "%s/%s", cwd, file ); remove( full );