int mlt_properties_inherit( mlt_properties this, mlt_properties that )
{
int count = mlt_properties_count( that );
- while ( count -- )
+ int i = 0;
+ for ( i = 0; i < count; i ++ )
{
- char *value = mlt_properties_get_value( that, count );
+ char *value = mlt_properties_get_value( that, i );
if ( value != NULL )
{
- char *name = mlt_properties_get_name( that, count );
+ char *name = mlt_properties_get_name( that, i );
mlt_properties_set( this, name, value );
}
}
return 0;
}
+/** Pass all properties from 'that' that match the prefix to 'this' (excluding the prefix).
+*/
+
+int mlt_properties_pass( mlt_properties this, mlt_properties that, char *prefix )
+{
+ int count = mlt_properties_count( that );
+ int length = strlen( prefix );
+ int i = 0;
+ for ( i = 0; i < count; i ++ )
+ {
+ char *name = mlt_properties_get_name( that, i );
+ if ( !strncmp( name, prefix, length ) )
+ {
+ char *value = mlt_properties_get_value( that, i );
+ if ( value != NULL )
+ mlt_properties_set( this, name + length, value );
+ }
+ }
+ return 0;
+}
+
/** Locate a property by name
*/
// Check that we have space and resize if necessary
if ( list->count == list->size )
{
- list->size += 10;
+ list->size += 50;
list->name = realloc( list->name, list->size * sizeof( char * ) );
list->value = realloc( list->value, list->size * sizeof( mlt_property ) );
}
return NULL;
}
+/** Get a data value by index.
+*/
+
+void *mlt_properties_get_data_at( mlt_properties this, int index, int *size )
+{
+ property_list *list = this->private;
+ if ( index >= 0 && index < list->count )
+ return mlt_property_get_data( list->value[ index ], size );
+ return NULL;
+}
+
/** Return the number of items in the list.
*/