char *mlt_properties_get( mlt_properties self, const char *name )
{
+ char *result = NULL;
mlt_property value = mlt_properties_find( self, name );
- property_list *list = self->local;
- return value == NULL ? NULL : mlt_property_get_string_l( value, list->locale );
+ if ( value )
+ {
+ property_list *list = self->local;
+ result = mlt_property_get_string_l( value, list->locale );
+ }
+ return result;
}
/** Get a property name by index.
int mlt_properties_get_int( mlt_properties self, const char *name )
{
- mlt_profile profile = mlt_properties_get_data( self, "_profile", NULL );
- double fps = mlt_profile_fps( profile );
- property_list *list = self->local;
+ int result = 0;
mlt_property value = mlt_properties_find( self, name );
- return value == NULL ? 0 : mlt_property_get_int( value, fps, list->locale );
+ if ( value )
+ {
+ mlt_profile profile = mlt_properties_get_data( self, "_profile", NULL );
+ double fps = mlt_profile_fps( profile );
+ property_list *list = self->local;
+ result = mlt_property_get_int( value, fps, list->locale );
+ }
+ return result;
}
/** Set a property to an integer value.
double mlt_properties_get_double( mlt_properties self, const char *name )
{
- mlt_profile profile = mlt_properties_get_data( self, "_profile", NULL );
- double fps = mlt_profile_fps( profile );
+ double result = 0;
mlt_property value = mlt_properties_find( self, name );
- property_list *list = self->local;
- return value == NULL ? 0 : mlt_property_get_double( value, fps, list->locale );
+ if ( value )
+ {
+ mlt_profile profile = mlt_properties_get_data( self, "_profile", NULL );
+ double fps = mlt_profile_fps( profile );
+ property_list *list = self->local;
+ result = mlt_property_get_double( value, fps, list->locale );
+ }
+ return result;
}
/** Set a property to a floating point value.
mlt_position mlt_properties_get_position( mlt_properties self, const char *name )
{
- mlt_profile profile = mlt_properties_get_data( self, "_profile", NULL );
- double fps = mlt_profile_fps( profile );
- property_list *list = self->local;
+ mlt_position result = 0;
mlt_property value = mlt_properties_find( self, name );
- return value == NULL ? 0 : mlt_property_get_position( value, fps, list->locale );
+ if ( value )
+ {
+ mlt_profile profile = mlt_properties_get_data( self, "_profile", NULL );
+ double fps = mlt_profile_fps( profile );
+ property_list *list = self->local;
+ result = mlt_property_get_position( value, fps, list->locale );
+ }
+ return result;
}
/** Set a property to a position value.
return NULL;
}
+/** Convert a frame count to a time string.
+ *
+ * Do not free the returned string. It's lifetime is controlled by the property.
+ * \public \memberof mlt_properties_s
+ * \param self a properties list
+ * \param frames the frame count to convert
+ * \param format the time format that you want
+ * \return the time string or NULL if error, e.g. there is no profile
+ */
+
+char *mlt_properties_frames_to_time( mlt_properties self, mlt_position frames, mlt_time_format format )
+{
+ const char *name = "_mlt_properties_time";
+ mlt_properties_set_position( self, name, frames );
+ return mlt_properties_get_time( self, name, format );
+}
+
+/** Convert a time string to a frame count.
+ *
+ * \public \memberof mlt_properties_s
+ * \param self a properties list
+ * \param time the time string to convert
+ * \return a frame count or a negative value if error, e.g. there is no profile
+ */
+
+mlt_position mlt_properties_time_to_frames( mlt_properties self, const char *time )
+{
+ const char *name = "_mlt_properties_time";
+ mlt_properties_set( self, name, time );
+ return mlt_properties_get_position( self, name );
+}
+
/** Convert a numeric property to a tuple of color components.
*
* If the property's string is red, green, blue, white, or black, then it