mlt_service mlt_producer_service( mlt_producer this )
{
- return &this->parent;
+ return this != NULL ? &this->parent : NULL;
}
/** Get the producer properties.
{
// Determine eof handling
char *eof = mlt_properties_get( mlt_producer_properties( this ), "eof" );
+ int use_points = 1 - mlt_properties_get_int( mlt_producer_properties( this ), "ignore_points" );
// Check bounds
if ( position < 0 )
{
position = 0;
}
- else if ( !strcmp( eof, "pause" ) && position >= mlt_producer_get_playtime( this ) )
+ else if ( use_points && !strcmp( eof, "pause" ) && position >= mlt_producer_get_playtime( this ) )
{
mlt_producer_set_speed( this, 0 );
position = mlt_producer_get_playtime( this ) - 1;
}
- else if ( !strcmp( eof, "loop" ) && position >= mlt_producer_get_playtime( this ) )
+ else if ( use_points && !strcmp( eof, "loop" ) && position >= mlt_producer_get_playtime( this ) )
{
position = position % mlt_producer_get_playtime( this );
}
mlt_properties_set_position( mlt_producer_properties( this ), "_position", position );
// Calculate the absolute frame
- mlt_properties_set_position( mlt_producer_properties( this ), "_frame", mlt_producer_get_in( this ) + position );
+ mlt_properties_set_position( mlt_producer_properties( this ), "_frame", use_points * mlt_producer_get_in( this ) + position );
return 0;
}
mlt_properties_set_double( properties, "fps", mlt_producer_get_fps( this ) );
double speed = mlt_producer_get_speed( this );
mlt_properties_set_double( properties, "_speed", speed );
+ mlt_properties_set_int( properties, "test_audio", mlt_frame_is_test_audio( *frame ) );
+ mlt_properties_set_int( properties, "test_image", mlt_frame_is_test_card( *frame ) );
return 0;
}