]> git.sesse.net Git - mlt/commitdiff
Let qglsl multi consumer work with more consumers.
authorDan Dennedy <dan@dennedy.org>
Mon, 25 Feb 2013 03:29:14 +0000 (19:29 -0800)
committerDan Dennedy <dan@dennedy.org>
Mon, 25 Feb 2013 03:29:14 +0000 (19:29 -0800)
Works with sdl and decklink consumers.

src/framework/mlt_frame.c
src/modules/core/consumer_multi.c

index 15243af1419665110b88aff0bb1441bf57c162d6..7b431df7bcd2bb09930eba5ddb1448039ec550a8 100644 (file)
@@ -1029,6 +1029,13 @@ mlt_frame mlt_frame_clone( mlt_frame self, int is_deep )
        int size;
 
        mlt_properties_inherit( new_props, properties );
+
+       // Carry over some special data properties for the multi consumer.
+       mlt_properties_set_data( new_props, "_producer",
+               mlt_frame_get_original_producer( self ), 0, NULL, NULL );
+       mlt_properties_set_data( new_props, "movit.convert",
+               mlt_properties_get_data( properties, "movit.convert", NULL), 0, NULL, NULL );
+
        if ( is_deep )
        {
                data = mlt_properties_get_data( properties, "audio", &size );
index 38ef951939de93d0a6014f26da983f97d5df736b..1781746a419fec89f9c0b2d5f6b13eebbbb00576 100644 (file)
@@ -135,6 +135,16 @@ static void attach_normalisers( mlt_profile profile, mlt_service service )
 
        // Attach the audio and video format converters
        int created = 0;
+       // movit.convert skips setting the frame->convert_image pointer if GLSL cannot be used.
+       mlt_filter filter = mlt_factory_filter( profile, "movit.convert", NULL );
+       if ( filter != NULL )
+       {
+               mlt_properties_set_int( MLT_FILTER_PROPERTIES( filter ), "_loader", 1 );
+               mlt_service_attach( service, filter );
+               mlt_filter_close( filter );
+               created = 1;
+       }
+       // avcolor_space and imageconvert only set frame->convert_image if it has not been set.
        create_filter( profile, service, "avcolor_space", &created );
        if ( !created )
                create_filter( profile, service, "imageconvert", &created );