On Mon, Sep 5, 2011 at 4:14 AM, j-b-m <[email protected]> wrote: > Hi Dan, > > Moving this discussion from the Kdenlive bug tracker (1) to the mlt-dev > mailing list since it may be useful one day to find it here... > > First, your last change to producer_melt does not work, since it is > placed just before the track is inserted, so we still get the crash. > mlt_multitrack_count must be called after the track was inserted to get > the correct count, see my patch below.
Agreed, strange that my test did not fail. > Then, I understand and I agree that the framework should not contain > module specific code. However, in that case, my proposed patch (on > Kdenlive's bug tracker) to mlt_multitrack solved the problem once for > all for everyone. I realize that advantage, and it is something that has been bothering me to consider making an exception with a strong comment. I have also been thinking about about using events, so the avformat producer can detect when it has been added to a multitrack, but it gets ugly with a few events linked together. > Using your approach, every application using MLT will have to set the > avformat cache count to the number of tracks if it uses more than 10 > tracks, otherwise it will result in a crash. > > Again, it's ok for me if that is the way you prefer, I just wanted to > make it clear for other developers using MLT. > > regards > jb > > > > (1) http://kdenlive.org/mantis/view.php?id=2286 > > -------------------------------------------------------------------------------------- > > --- a/src/modules/melt/producer_melt.c > +++ b/src/modules/melt/producer_melt.c > @@ -449,10 +449,6 @@ 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. > - if ( mlt_multitrack_count( multitrack ) > > mlt_service_cache_get_size( MLT_PLAYLIST_SERVICE( playlist ), > "producer_avformat" ) ) > - mlt_service_cache_set_size( MLT_PLAYLIST_SERVICE( > playlist ), "producer_avformat", mlt_multitrack_count( multitrack ) + 2 ); > - > // Connect last producer to playlist > if ( producer != NULL && !mlt_producer_is_cut( producer ) ) > mlt_playlist_append( playlist, producer ); > @@ -465,6 +461,11 @@ mlt_producer producer_melt_init( mlt_profile > profile, mlt_service_type type, con > mlt_producer_get_playtime( MLT_PLAYLIST_PRODUCER( > playlist ) ) > 0 ) > mlt_multitrack_connect( multitrack, > MLT_PLAYLIST_PRODUCER( playlist ), track ); > > + // Set the size of the producer_avformat cache to the number of > tracks. > + if ( mlt_multitrack_count( multitrack ) > > mlt_service_cache_get_size( MLT_PLAYLIST_SERVICE( playlist ), > "producer_avformat" ) ) { > + mlt_service_cache_set_size( MLT_PLAYLIST_SERVICE( > playlist ), "producer_avformat", mlt_multitrack_count( multitrack ) + 2 ); > + } > + > mlt_producer prod = MLT_TRACTOR_PRODUCER( tractor ); > mlt_producer_optimise( prod ); > mlt_properties props = MLT_TRACTOR_PROPERTIES( tractor ); > > > ------------------------------------------------------------------------------ > Special Offer -- Download ArcSight Logger for FREE! > Finally, a world-class log management solution at an even better > price-free! And you'll get a free "Love Thy Logs" t-shirt when you > download Logger. Secure your free ArcSight Logger TODAY! > http://p.sf.net/sfu/arcsisghtdev2dev > _______________________________________________ > Mlt-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/mlt-devel > -- +-DRD-+ ------------------------------------------------------------------------------ Special Offer -- Download ArcSight Logger for FREE! Finally, a world-class log management solution at an even better price-free! And you'll get a free "Love Thy Logs" t-shirt when you download Logger. Secure your free ArcSight Logger TODAY! http://p.sf.net/sfu/arcsisghtdev2dev _______________________________________________ Mlt-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mlt-devel
