]> git.sesse.net Git - mlt/commitdiff
add mlt_producer_seek_time and mlt_producer_frame_time
authorDan Dennedy <dan@dennedy.org>
Wed, 20 Jun 2012 04:09:48 +0000 (21:09 -0700)
committerDan Dennedy <dan@dennedy.org>
Wed, 20 Jun 2012 04:09:48 +0000 (21:09 -0700)
src/framework/mlt_producer.c
src/framework/mlt_producer.h
src/mlt++/MltProducer.cpp
src/mlt++/MltProducer.h

index ff2a59394f84ed228ca4ca4c8c0bcfe1bfff27d4..b37958197855d193f72c085ee1216de267297fa8 100644 (file)
@@ -287,6 +287,7 @@ mlt_properties mlt_producer_properties( mlt_producer self )
  * \param position set the "play head" position of the producer
  * \return false
  * \todo Document how the properties affect behavior.
+ * \see mlt_producer_seek_time
  */
 
 int mlt_producer_seek( mlt_producer self, mlt_position position )
@@ -325,6 +326,22 @@ int mlt_producer_seek( mlt_producer self, mlt_position position )
        return 0;
 }
 
+/** Seek to a specified time string.
+ *
+ * \public \memberof mlt_producer_s
+ * \param self a producer
+ * \param time set the "play head" position of the producer to the time string
+ * \return false
+ * \see mlt_producer_seek
+ */
+
+int mlt_producer_seek_time( mlt_producer self, const char* time )
+{
+    mlt_properties_set( MLT_PRODUCER_PROPERTIES(self), "_seek_time", time );
+    mlt_position position = mlt_properties_get_position( MLT_PRODUCER_PROPERTIES(self), "_seek_time" );
+    return mlt_producer_seek( self, position );
+}
+
 /** Get the current position (relative to in point).
  *
  * \public \memberof mlt_producer_s
@@ -349,6 +366,19 @@ mlt_position mlt_producer_frame( mlt_producer self )
        return mlt_properties_get_position( MLT_PRODUCER_PROPERTIES( self ), "_frame" );
 }
 
+/** Get the current position (relative to start of producer) as a time string.
+ *
+ * \public \memberof mlt_producer_s
+ * \param self a producer
+ * \param format the time value format
+ * \return the position of the "play head" regardless of the in point
+ */
+
+char* mlt_producer_frame_time( mlt_producer self, mlt_time_format format )
+{
+    return mlt_properties_get_time( MLT_PRODUCER_PROPERTIES( self ), "_frame", format );
+}
+
 /** Set the playing speed.
  *
  * \public \memberof mlt_producer_s
index 0f942d8f2df710eba5c887c90e05a13b6c3d1ca4..8e226f2bdd98dd13b08864b245aef95d424fb131 100644 (file)
@@ -93,8 +93,10 @@ extern mlt_producer mlt_producer_new( mlt_profile );
 extern mlt_service mlt_producer_service( mlt_producer self );
 extern mlt_properties mlt_producer_properties( mlt_producer self );
 extern int mlt_producer_seek( mlt_producer self, mlt_position position );
+extern int mlt_producer_seek_time( mlt_producer self, const char* time );
 extern mlt_position mlt_producer_position( mlt_producer self );
 extern mlt_position mlt_producer_frame( mlt_producer self );
+char* mlt_producer_frame_time( mlt_producer self, mlt_time_format );
 extern int mlt_producer_set_speed( mlt_producer self, double speed );
 extern double mlt_producer_get_speed( mlt_producer self );
 extern double mlt_producer_get_fps( mlt_producer self );
index 739649b8e4d71399fa15fd700386d404ccf5e668..0e3842a1e6a431d064b5823e818df8b67a99a00c 100644 (file)
@@ -111,6 +111,11 @@ int Producer::seek( int position )
        return mlt_producer_seek( get_producer( ), position );
 }
 
+int Producer::seek( const char *time )
+{
+       return mlt_producer_seek_time( get_producer( ), time );
+}
+
 int Producer::position( )
 {
        return mlt_producer_position( get_producer( ) );
@@ -121,6 +126,11 @@ int Producer::frame( )
        return mlt_producer_frame( get_producer( ) );
 }
 
+char* Producer::frame_time( mlt_time_format format )
+{
+       return mlt_producer_frame_time( get_producer(), format );
+}
+
 int Producer::set_speed( double speed )
 {
        return mlt_producer_set_speed( get_producer( ), speed );
index 92695943d926cb9ce46f0da035573fe0bf27627c..473f2f410fb8dc18594299559dc11ae33c4db690 100644 (file)
@@ -52,8 +52,10 @@ namespace Mlt
                        mlt_producer get_parent( );
                        mlt_service get_service( );
                        int seek( int position );
+                       int seek( const char* time );
                        int position( );
                        int frame( );
+                       char* frame_time( mlt_time_format = mlt_time_smpte );
                        int set_speed( double speed );
                        int pause( );
                        double get_speed( );