#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <pthread.h>
#include <unistd.h>
#include <libxml/tree.h>
strcmp( name, "height" ) != 0 )
{
char *value = mlt_properties_get_value( properties, i );
- if ( strcmp( context->root, "" ) && !strncmp( value, context->root, strlen( context->root ) ) )
- value += strlen( context->root ) + 1;
+ int rootlen = strlen( context->root );
+ if ( rootlen && !strncmp( value, context->root, rootlen ) && value[ rootlen ] == '/' )
+ value += rootlen + 1;
p = xmlNewTextChild( node, NULL, _x("property"), _x(value) );
xmlNewProp( p, _x("name"), _x(name) );
}
char *value = mlt_properties_get_value( properties, i );
if ( value != NULL )
{
- if ( strcmp( context->root, "" ) && !strncmp( value, context->root, strlen( context->root ) ) )
- value += strlen( context->root ) + 1;
+ int rootlen = strlen( context->root );
+ if ( rootlen && !strncmp( value, context->root, rootlen ) && value[ rootlen ] == '/' )
+ value += rootlen + 1;
p = xmlNewTextChild( node, NULL, _x("property"), _x(value) );
xmlNewProp( p, _x("name"), _x(name) );
}
xmlDocPtr doc = xmlNewDoc( _x("1.0") );
xmlNodePtr root = xmlNewNode( NULL, _x("mlt") );
struct serialise_context_s *context = calloc( 1, sizeof( struct serialise_context_s ) );
-
+ mlt_profile profile = mlt_service_profile( MLT_CONSUMER_SERVICE( consumer ) );
+ char tmpstr[ 32 ];
+
xmlDocSetRootElement( doc, root );
// If we have root, then deal with it now
xmlNewProp( root, _x("title"), _x(mlt_properties_get( properties, "title" )) );
mlt_properties_set_int( properties, "global_feed", 1 );
+ // Add a profile child element
+ if ( profile )
+ {
+ xmlNodePtr profile_node = xmlNewChild( root, NULL, _x("profile"), NULL );
+ if ( profile->description )
+ xmlNewProp( profile_node, _x("description"), _x(profile->description) );
+ sprintf( tmpstr, "%d", profile->width );
+ xmlNewProp( profile_node, _x("width"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->height );
+ xmlNewProp( profile_node, _x("height"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->progressive );
+ xmlNewProp( profile_node, _x("progressive"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->sample_aspect_num );
+ xmlNewProp( profile_node, _x("sample_aspect_num"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->sample_aspect_den );
+ xmlNewProp( profile_node, _x("sample_aspect_den"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->display_aspect_num );
+ xmlNewProp( profile_node, _x("display_aspect_num"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->display_aspect_den );
+ xmlNewProp( profile_node, _x("display_aspect_den"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->frame_rate_num );
+ xmlNewProp( profile_node, _x("frame_rate_num"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->frame_rate_den );
+ xmlNewProp( profile_node, _x("frame_rate_den"), _x(tmpstr) );
+ sprintf( tmpstr, "%d", profile->colorspace );
+ xmlNewProp( profile_node, _x("colorspace"), _x(tmpstr) );
+ }
+
// Construct the context maps
context->id_map = mlt_properties_new();
context->hide_map = mlt_properties_new();