From 5f8f3adaf7cc01a161092ea272f50279a7ad971a Mon Sep 17 00:00:00 2001 From: lilo_booter Date: Sat, 28 Aug 2004 18:28:45 +0000 Subject: [PATCH] Tractor enhancements git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@395 d19143bc-622f-0410-bfdd-b5b2a6649095 --- src/framework/mlt_multitrack.h | 1 + src/framework/mlt_playlist.c | 3 +++ src/framework/mlt_tractor.c | 35 ++++++++++++++++++++++++++++++++++ src/framework/mlt_tractor.h | 3 +++ 4 files changed, 42 insertions(+) diff --git a/src/framework/mlt_multitrack.h b/src/framework/mlt_multitrack.h index 19ead699..809678c9 100644 --- a/src/framework/mlt_multitrack.h +++ b/src/framework/mlt_multitrack.h @@ -34,6 +34,7 @@ extern int mlt_multitrack_connect( mlt_multitrack self, mlt_producer producer, i extern mlt_position mlt_multitrack_clip( mlt_multitrack self, mlt_whence whence, int index ); extern void mlt_multitrack_close( mlt_multitrack self ); extern int mlt_multitrack_count( mlt_multitrack self ); +extern void mlt_multitrack_refresh( mlt_multitrack self ); extern mlt_producer mlt_multitrack_track( mlt_multitrack self, int track ); #endif diff --git a/src/framework/mlt_playlist.c b/src/framework/mlt_playlist.c index 1347a0e3..0e017ceb 100644 --- a/src/framework/mlt_playlist.c +++ b/src/framework/mlt_playlist.c @@ -89,6 +89,9 @@ mlt_playlist mlt_playlist_init( ) mlt_properties_set( mlt_playlist_properties( this ), "eof", "pause" ); mlt_properties_set( mlt_playlist_properties( this ), "resource", "" ); mlt_properties_set( mlt_playlist_properties( this ), "mlt_type", "mlt_producer" ); + mlt_properties_set_position( mlt_playlist_properties( this ), "in", 0 ); + mlt_properties_set_position( mlt_playlist_properties( this ), "out", 0 ); + mlt_properties_set_position( mlt_playlist_properties( this ), "length", 0 ); this->size = 10; this->list = malloc( this->size * sizeof( playlist_entry * ) ); diff --git a/src/framework/mlt_tractor.c b/src/framework/mlt_tractor.c index c07b7041..3dbc50bd 100644 --- a/src/framework/mlt_tractor.c +++ b/src/framework/mlt_tractor.c @@ -86,6 +86,9 @@ mlt_tractor mlt_tractor_new( ) mlt_properties_set( props, "resource", "" ); mlt_properties_set( props, "mlt_type", "mlt_producer" ); mlt_properties_set( props, "mlt_service", "tractor" ); + mlt_properties_set_position( props, "in", 0 ); + mlt_properties_set_position( props, "out", 0 ); + mlt_properties_set_position( props, "length", 0 ); mlt_properties_set_data( props, "multitrack", multitrack, 0, ( mlt_destructor )mlt_multitrack_close, NULL ); mlt_properties_set_data( props, "field", field, 0, ( mlt_destructor )mlt_field_close, NULL ); @@ -142,6 +145,20 @@ mlt_multitrack mlt_tractor_multitrack( mlt_tractor this ) return mlt_properties_get_data( mlt_tractor_properties( this ), "multitrack", NULL ); } +/** Ensure the tractors in/out points match the multitrack. +*/ + +void mlt_tractor_refresh( mlt_tractor this ) +{ + mlt_multitrack multitrack = mlt_tractor_multitrack( this ); + mlt_properties properties = mlt_multitrack_properties( multitrack ); + mlt_properties self = mlt_tractor_properties( this ); + mlt_multitrack_refresh( multitrack ); + mlt_properties_set_position( self, "in", 0 ); + mlt_properties_set_position( self, "out", mlt_properties_get_position( properties, "out" ) ); + mlt_properties_set_position( self, "length", mlt_properties_get_position( properties, "length" ) ); +} + /** Connect the tractor. */ @@ -156,6 +173,24 @@ int mlt_tractor_connect( mlt_tractor this, mlt_service producer ) return ret; } +/** Set the producer for a specific track. +*/ + +int mlt_tractor_set_track( mlt_tractor this, mlt_producer producer, int index ) +{ + int error = mlt_multitrack_connect( mlt_tractor_multitrack( this ), producer, index ); + mlt_tractor_refresh( this ); + return error; +} + +/** Get the producer for a specific track. +*/ + +mlt_producer mlt_tractor_get_track( mlt_tractor this, int index ) +{ + return mlt_multitrack_track( mlt_tractor_multitrack( this ), index ); +} + static int producer_get_image( mlt_frame this, uint8_t **buffer, mlt_image_format *format, int *width, int *height, int writable ) { mlt_properties properties = mlt_frame_properties( this ); diff --git a/src/framework/mlt_tractor.h b/src/framework/mlt_tractor.h index d8cff554..b9e606ff 100644 --- a/src/framework/mlt_tractor.h +++ b/src/framework/mlt_tractor.h @@ -31,6 +31,9 @@ extern mlt_properties mlt_tractor_properties( mlt_tractor self ); extern mlt_field mlt_tractor_field( mlt_tractor self ); extern mlt_multitrack mlt_tractor_multitrack( mlt_tractor self ); extern int mlt_tractor_connect( mlt_tractor self, mlt_service service ); +extern void mlt_tractor_refresh( mlt_tractor self ); +extern int mlt_tractor_set_track( mlt_tractor self, mlt_producer producer, int index ); +extern mlt_producer mlt_tractor_get_track( mlt_tractor self, int index ); extern void mlt_tractor_close( mlt_tractor self ); #endif -- 2.39.2