Revert inadvertent changes in commit fea346.
[melted] / src / melted / melted.c
index 1802d3d..85d638b 100644 (file)
 #include <sched.h>
 
 #include <framework/mlt.h>
+#include <mvcp/mvcp_notifier.h>
+#include <mvcp/mvcp_status.h>
 
 /* Application header files */
 #include "melted_server.h"
 #include "melted_log.h"
+#include "melted_commands.h"
+#include "melted_unit.h"
 
 /** Our server context.
 */
@@ -54,7 +58,7 @@ static void main_cleanup( )
 
 void usage( char *app )
 {
-       fprintf( stderr, "Usage: %s [-test] [-port NNNN]\n", app );
+       fprintf( stderr, "Usage: %s [-test] [-port NNNN] [-c config-file]\n", app );
        exit( 0 );
 }
 
@@ -66,8 +70,14 @@ int main( int argc, char **argv )
        int error = 0;
        int index = 0;
        int background = 1;
-       struct timespec tm = { 5, 0 };
+       struct timespec tm = { 1, 0 };
        struct sched_param scp;
+       mvcp_status_t status;
+       struct {
+               int clip_index;
+               int is_logged;
+       } asrun[ MAX_UNITS ];
+       const char *config_file = "/etc/melted.conf";
 
        // Use realtime scheduling if possible
        memset( &scp, '\0', sizeof( scp ) );
@@ -88,6 +98,8 @@ int main( int argc, char **argv )
                        melted_server_set_proxy( server, argv[ ++ index ] );
                else if ( !strcmp( argv[ index ], "-test" ) )
                        background = 0;
+               else if ( !strcmp( argv[ index ], "-c" ) )
+                       config_file = argv[ ++ index ];
                else
                        usage( argv[ 0 ] );
        }
@@ -99,7 +111,7 @@ int main( int argc, char **argv )
                if ( fork() )
                        return 0;
                setsid();
-               melted_log_init( log_syslog, LOG_INFO );
+               melted_log_init( log_syslog, LOG_NOTICE );
        }
        else
        {
@@ -109,14 +121,44 @@ int main( int argc, char **argv )
        atexit( main_cleanup );
 
        /* Set the config script */
-       melted_server_set_config( server, "/etc/melted.conf" );
+       melted_server_set_config( server, config_file );
 
        /* Execute the server */
        error = melted_server_execute( server );
 
+       /* Initialize the as-run log tracking */
+       for ( index = 0; index < MAX_UNITS; index ++ )
+               asrun[ index ].clip_index = -1;
+
        /* We need to wait until we're exited.. */
        while ( !server->shutdown )
+       {
                nanosleep( &tm, NULL );
 
+               /* As-run logging */
+               for ( index = 0; !error && index < MAX_UNITS; index ++ )
+               {
+                       melted_unit unit = melted_get_unit( index );
+
+                       if ( unit && melted_unit_get_status( unit, &status ) == 0 )
+                       {
+                               int length = status.length - 60;
+
+                               /* Reset the logging if needed */
+                               if ( status.clip_index != asrun[ index ].clip_index || status.position < length || status.status == unit_not_loaded )
+                               {
+                                       asrun[ index ].clip_index = status.clip_index;
+                                       asrun[ index ].is_logged = 0;
+                               }
+                               /* Log as-run only once when near the end */
+                               if ( ! asrun[ index ].is_logged && status.length > 0 && status.position > length )
+                               {
+                                       melted_log( LOG_NOTICE, "AS-RUN U%d \"%s\" len %d pos %d", index, status.clip, status.length, status.position );
+                                       asrun[ index ].is_logged = 1;
+                               }
+                       }
+               }
+       }
+
        return error;
 }