]> git.sesse.net Git - mlt/commitdiff
Fix XML and melt producers producer_avformat cache size.
authorDan Dennedy <dan@dennedy.org>
Mon, 5 Sep 2011 06:05:37 +0000 (23:05 -0700)
committerDan Dennedy <dan@dennedy.org>
Mon, 5 Sep 2011 06:05:37 +0000 (23:05 -0700)
Use track-count + 2 in case a track is using a mixer between playlist
items.

src/modules/melt/producer_melt.c
src/modules/xml/producer_xml.c

index 7b8730ff97f0ee4686a8466ce1f271c93a5df250..8192f2c88f030b3f36fa7d44e09be43eebfe5e93 100644 (file)
@@ -450,7 +450,8 @@ mlt_producer producer_melt_init( mlt_profile profile, mlt_service_type type, con
        }
 
        // Set the size of the producer_avformat cache to the number of tracks.
-       mlt_service_cache_set_size( MLT_PLAYLIST_SERVICE( playlist ), "producer_avformat", track + 1 );
+       if ( track > mlt_service_cache_get_size( MLT_PLAYLIST_SERVICE( playlist ), "producer_avformat" ) )
+               mlt_service_cache_set_size( MLT_PLAYLIST_SERVICE( playlist ), "producer_avformat", track + 2 );
 
        // Connect last producer to playlist
        if ( producer != NULL && !mlt_producer_is_cut( producer ) )
index b9c55e2850ba488cda8a4568b72d727d4704e9b1..bc73f49c561092a3f2a151d414d9f95c10755ab8 100644 (file)
@@ -879,6 +879,10 @@ static void on_end_track( deserialise_context context, const xmlChar *name )
                                else if ( strcmp( hide_s, "both" ) == 0 )
                                        mlt_properties_set_int( producer_props, "hide", 3 );
                        }
+
+                       // Set the size of the producer_avformat cache to the number of tracks.
+                       if ( multitrack->count > mlt_service_cache_get_size( MLT_MULTITRACK_SERVICE(multitrack), "producer_avformat" ) )
+                               mlt_service_cache_set_size( MLT_MULTITRACK_SERVICE(multitrack), "producer_avformat", multitrack->count + 2 );
                }
 
                if ( parent != NULL )