mlt_properties_set( properties, "log_id", file );
mlt_properties_set( properties, "resource", file );
+ mlt_properties_set_position( properties, "length", 36000 );
+ mlt_properties_set_position( properties, "out", 36000 );
this->buffer = malloc( 1024 * 1024 * 2 );
if ( video != NULL && read_ffmpeg_header( this, &width, &height ) == 2 )
{
// Allocate an image
- uint8_t *image = malloc( width * height * 2 );
+ uint8_t *image = mlt_pool_alloc( width * ( height + 1 ) * 2 );
// Read it
while( skip -- )
mlt_convert_yuv420p_to_yuv422( this->buffer, width, height, width, image );
// Pass the data on the frame properties
- mlt_properties_set_data( properties, "image", image, width * height * 2, free, NULL );
+ mlt_properties_set_data( properties, "image", image, width * ( height + 1 ) * 2, ( mlt_destructor )mlt_pool_release, NULL );
mlt_properties_set_int( properties, "width", width );
mlt_properties_set_int( properties, "height", height );
mlt_properties_set_int( properties, "has_image", 1 );
// Push the image callback
mlt_frame_push_get_image( *frame, producer_get_image );
-
}
else
{
}
// Push the image callback
- mlt_frame_push_get_image( *frame, producer_get_image );
+ if ( !this->end_of_video )
+ mlt_frame_push_get_image( *frame, producer_get_image );
}
// Set the audio pipe
mlt_properties_set_data( properties, "producer_ffmpeg", this, 0, NULL, NULL );
// Hmm - register audio callback
- ( *frame )->get_audio = producer_get_audio;
+ if ( !this->end_of_audio )
+ ( *frame )->get_audio = producer_get_audio;
// Get the additional properties
double aspect_ratio = mlt_properties_get_double( producer_properties, "aspect_ratio" );
- double speed = mlt_properties_get_double( producer_properties, "speed" );
- char *video_file = mlt_properties_get( producer_properties, "video_file" );
+ double speed = mlt_producer_get_speed( producer );
// Set them on the frame
mlt_properties_set_double( properties, "aspect_ratio", aspect_ratio );
- mlt_properties_set_double( properties, "speed", speed );
- if ( strchr( video_file, '/' ) != NULL )
- mlt_properties_set( properties, "file", strrchr( video_file, '/' ) + 1 );
- else
- mlt_properties_set( properties, "file", video_file );
-
+ mlt_properties_set_double( properties, "_speed", speed );
// Set the out point on the producer
if ( this->end_of_video && this->end_of_audio )