]> git.sesse.net Git - mlt/commitdiff
added clear to the miracle command set and valerie api
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Tue, 23 Mar 2004 12:49:35 +0000 (12:49 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Tue, 23 Mar 2004 12:49:35 +0000 (12:49 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@233 d19143bc-622f-0410-bfdd-b5b2a6649095

src/miracle/miracle_local.c
src/miracle/miracle_unit.c
src/miracle/miracle_unit.h
src/miracle/miracle_unit_commands.c
src/miracle/miracle_unit_commands.h
src/valerie/valerie.c
src/valerie/valerie.h

index 9929e1230bdaa78618dde1d3df2aee577e324093..51f35f804a27f6c646c73e709fafa857eda8df66 100644 (file)
@@ -174,6 +174,7 @@ static command_t vocabulary[] =
        {"INSERT", miracle_insert, 1, ATYPE_STRING, "Insert a clip at the given clip index."},
        {"REMOVE", miracle_remove, 1, ATYPE_NONE, "Remove a clip at the given clip index."},
        {"CLEAN", miracle_clean, 1, ATYPE_NONE, "Clean a unit by removing all but the currently playing clip."},
+       {"CLEAR", miracle_clear, 1, ATYPE_NONE, "Clear a unit by removing all clips."},
        {"MOVE", miracle_move, 1, ATYPE_INT, "Move a clip to another clip index."},
        {"APND", miracle_append, 1, ATYPE_STRING, "Append a clip specified in absolute filename argument."},
        {"PLAY", miracle_play, 1, ATYPE_NONE, "Play a loaded clip at speed -2000 to 2000 where 1000 = normal forward speed."},
index 83f0f024c7b93124e32ac9350fcdba5e5683e7a7..ff6072317d4ab5ed35c382e56b4a3c1dde092a57 100644 (file)
@@ -325,6 +325,14 @@ valerie_error_code miracle_unit_clean( miracle_unit unit )
        return valerie_ok;
 }
 
+valerie_error_code miracle_unit_clear( miracle_unit unit )
+{
+       clear_unit( unit );
+       miracle_log( LOG_DEBUG, "Cleared playlist" );
+       miracle_unit_status_communicate( unit );
+       return valerie_ok;
+}
+
 valerie_error_code miracle_unit_move( miracle_unit unit, int src, int dest )
 {
        mlt_properties properties = unit->properties;
index 07d38341e8078564105de5f45708c77b4d864c8c..3ba87513ab3f6a1c92d4ac323c1a8c24a0b3f8eb 100644 (file)
@@ -47,6 +47,7 @@ extern valerie_error_code     miracle_unit_insert( miracle_unit unit, char *clip, i
 extern valerie_error_code   miracle_unit_append( miracle_unit unit, char *clip, int32_t in, int32_t out );
 extern valerie_error_code      miracle_unit_remove( miracle_unit unit, int index );
 extern valerie_error_code      miracle_unit_clean( miracle_unit unit );
+extern valerie_error_code      miracle_unit_clear( miracle_unit unit );
 extern valerie_error_code      miracle_unit_move( miracle_unit unit, int src, int dest );
 extern int                  miracle_unit_transfer( miracle_unit dest_unit, miracle_unit src_unit );
 extern void                 miracle_unit_play( miracle_unit_t *unit, int speed );
index f1904299895c9bdea62c198c24d7afe9c275b6d6..95737f4d5d1e85cd4e699a07955dc838276d4014 100644 (file)
@@ -106,7 +106,7 @@ int miracle_insert( command_argument cmd_arg )
        char *filename = (char*) cmd_arg->argument;
        char fullname[1024];
 
-       if ( filename[0] == '/' )
+       if ( strlen( cmd_arg->root_dir ) && filename[0] == '/' )
                filename++;
 
        snprintf( fullname, 1023, "%s%s", cmd_arg->root_dir, filename );
@@ -165,6 +165,20 @@ int miracle_clean( command_argument cmd_arg )
        return RESPONSE_SUCCESS;
 }
 
+int miracle_clear( command_argument cmd_arg )
+{
+       miracle_unit unit = miracle_get_unit(cmd_arg->unit);
+       
+       if (unit == NULL)
+               return RESPONSE_INVALID_UNIT;
+       else
+       {
+               if ( miracle_unit_clear( unit ) != valerie_ok )
+                       return RESPONSE_BAD_FILE;
+       }
+       return RESPONSE_SUCCESS;
+}
+
 int miracle_move( command_argument cmd_arg )
 {
        miracle_unit unit = miracle_get_unit(cmd_arg->unit);
@@ -198,7 +212,7 @@ int miracle_append( command_argument cmd_arg )
        char *filename = (char*) cmd_arg->argument;
        char fullname[1024];
 
-       if ( filename[0] == '/' )
+       if ( strlen( cmd_arg->root_dir ) && filename[0] == '/' )
                filename++;
 
        snprintf( fullname, 1023, "%s%s", cmd_arg->root_dir, filename );
index 575ff1beec00c1a4929bc78655be8c944a4a9a7a..b4bde3a1b7943dc1bb105e0f89c326e1e2120775 100644 (file)
@@ -34,6 +34,7 @@ extern response_codes miracle_load( command_argument );
 extern response_codes miracle_insert( command_argument );
 extern response_codes miracle_remove( command_argument );
 extern response_codes miracle_clean( command_argument );
+extern response_codes miracle_clear( command_argument );
 extern response_codes miracle_move( command_argument );
 extern response_codes miracle_append( command_argument );
 extern response_codes miracle_play( command_argument );
index b1c5f9402865cba9c87bace901ad49598436c585..5b0d330f2349d2aea64d8b702567fa3f1859b208 100644 (file)
@@ -260,6 +260,14 @@ valerie_error_code valerie_unit_clean( valerie this, int unit )
        return valerie_execute( this, 1024, "CLEAN U%d", unit );
 }
 
+/** Clear the unit - this function removes all clips.
+*/
+
+valerie_error_code valerie_unit_clear( valerie this, int unit )
+{
+       return valerie_execute( this, 1024, "CLEAR U%d", unit );
+}
+
 /** Move clips on the units playlist.
 */
 
index 2ff0020b9ab3bf98927748b66f341be445fea164..663b6c2af011afe312acd03d811f722ad7a698d6 100644 (file)
@@ -95,6 +95,7 @@ extern valerie_error_code valerie_unit_load_back( valerie, int, char * );
 extern valerie_error_code valerie_unit_load_back_clipped( valerie, int, char *, int32_t, int32_t );
 extern valerie_error_code valerie_unit_append( valerie, int, char *, int32_t, int32_t );
 extern valerie_error_code valerie_unit_clean( valerie, int );
+extern valerie_error_code valerie_unit_clear( valerie, int );
 extern valerie_error_code valerie_unit_clip_move( valerie, int, valerie_clip_offset, int, valerie_clip_offset, int );
 extern valerie_error_code valerie_unit_clip_remove( valerie, int, valerie_clip_offset, int );
 extern valerie_error_code valerie_unit_remove_current_clip( valerie, int );