return 0;
}
-/** Set a timecode on this property.
+/** Set a position on this property.
*/
-int mlt_property_set_timecode( mlt_property this, mlt_timecode value )
+int mlt_property_set_position( mlt_property this, mlt_position value )
{
mlt_property_clear( this );
- this->types = mlt_prop_timecode;
- this->prop_timecode = value;
+ this->types = mlt_prop_position;
+ this->prop_position = value;
return 0;
}
return this->prop_string != NULL;
}
+/** Set an int64 on this property.
+*/
+
+int mlt_property_set_int64( mlt_property this, int64_t value )
+{
+ mlt_property_clear( this );
+ this->types = mlt_prop_int64;
+ this->prop_int64 = value;
+ return 0;
+}
+
/** Set a data on this property.
*/
int mlt_property_set_data( mlt_property this, void *value, int length, mlt_destructor destructor, mlt_serialiser serialiser )
{
+ if ( this->data == value )
+ this->destructor = NULL;
mlt_property_clear( this );
this->types = mlt_prop_data;
this->data = value;
return this->prop_int;
else if ( this->types & mlt_prop_double )
return ( int )this->prop_double;
- else if ( this->types & mlt_prop_timecode )
- return ( int )this->prop_timecode;
+ else if ( this->types & mlt_prop_position )
+ return ( int )this->prop_position;
+ else if ( this->types & mlt_prop_int64 )
+ return ( int )this->prop_int64;
else if ( this->types & mlt_prop_string )
return atoi( this->prop_string );
return 0;
return this->prop_double;
else if ( this->types & mlt_prop_int )
return ( double )this->prop_int;
- else if ( this->types & mlt_prop_timecode )
- return ( double )this->prop_timecode;
+ else if ( this->types & mlt_prop_position )
+ return ( double )this->prop_position;
+ else if ( this->types & mlt_prop_int64 )
+ return ( double )this->prop_int64;
else if ( this->types & mlt_prop_string )
return atof( this->prop_string );
return 0;
}
-/** Get a timecode from this property.
+/** Get a position from this property.
+*/
+
+mlt_position mlt_property_get_position( mlt_property this )
+{
+ if ( this->types & mlt_prop_position )
+ return this->prop_position;
+ else if ( this->types & mlt_prop_int )
+ return ( mlt_position )this->prop_int;
+ else if ( this->types & mlt_prop_double )
+ return ( mlt_position )this->prop_double;
+ else if ( this->types & mlt_prop_int64 )
+ return ( mlt_position )this->prop_int64;
+ else if ( this->types & mlt_prop_string )
+ return ( mlt_position )atol( this->prop_string );
+ return 0;
+}
+
+/** Get an int64 from this property.
*/
-mlt_timecode mlt_property_get_timecode( mlt_property this )
+int64_t mlt_property_get_int64( mlt_property this )
{
- if ( this->types & mlt_prop_timecode )
- return this->prop_timecode;
+ if ( this->types & mlt_prop_int64 )
+ return this->prop_int64;
else if ( this->types & mlt_prop_int )
- return ( mlt_timecode )this->prop_int;
+ return ( int64_t )this->prop_int;
else if ( this->types & mlt_prop_double )
- return ( mlt_timecode )this->prop_double;
+ return ( int64_t )this->prop_double;
+ else if ( this->types & mlt_prop_position )
+ return ( int64_t )this->prop_position;
else if ( this->types & mlt_prop_string )
- return ( mlt_timecode )atof( this->prop_string );
+ return ( int64_t )atol( this->prop_string );
return 0;
}
this->prop_string = malloc( 32 );
sprintf( this->prop_string, "%e", this->prop_double );
}
- else if ( this->types & mlt_prop_timecode )
+ else if ( this->types & mlt_prop_position )
+ {
+ this->types |= mlt_prop_string;
+ this->prop_string = malloc( 32 );
+ sprintf( this->prop_string, "%lld", this->prop_position );
+ }
+ else if ( this->types & mlt_prop_int64 )
{
this->types |= mlt_prop_string;
this->prop_string = malloc( 32 );
- sprintf( this->prop_string, "%e", this->prop_timecode );
+ sprintf( this->prop_string, "%lld", this->prop_int64 );
}
else if ( this->types & mlt_prop_data && this->serialiser != NULL )
{