// mlt Header files
#include <framework/mlt_consumer.h>
#include <framework/mlt_frame.h>
+#include <framework/mlt_profile.h>
// System header files
#include <stdio.h>
#endif
#include <opt.h>
+#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
//
// Default to separate processing threads for producer and consumer with no frame dropping!
mlt_properties_set_int( properties, "real_time", -1 );
+ mlt_properties_set_int( properties, "prefill", 1 );
// Set up start/stop/terminated callbacks
this->start = consumer_start;
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;
}
// 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;
// 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" );
// 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;
// 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 );