page_close( this->pages[ -- this->page_count ] );
free( this );
}
+
+char* frames2tc( int f, float fps, char* buf )
+{
+ int tc[4] = { 0, 0, 0, 0 };
+ float d;
+ int t;
+
+ if ( fps )
+ {
+ d = f / fps;
+ t = d;
+
+ tc[0] = (d - t) * fps;
+ tc[1] = t % 60; t /= 60;
+ tc[2] = t % 60; t /= 60;
+ tc[3] = t % 24;
+ }
+
+ sprintf(buf, "%.2d:%.2d:%.2d:%.2d", tc[3], tc[2], tc[1], tc[0]);
+
+ return buf;
+}
extern void dv1394app_disconnect( dv1394app );
extern void dv1394app_close( dv1394app );
+extern char* frames2tc( int f, float fps, char* buf );
+
#endif
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
- list_store = gtk_list_store_new( 6, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT );
+ list_store = gtk_list_store_new( 6,
+ G_TYPE_BOOLEAN,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_STRING,
+ G_TYPE_INT );
gtk_tree_view_set_model( GTK_TREE_VIEW( treeview ), GTK_TREE_MODEL( list_store ) );
renderer = gtk_cell_renderer_toggle_new( );
for ( index = 0; index < mvcp_list_count( list ); index ++ )
{
+ char tc1[12], tc2[12], tc3[12];
mvcp_list_get( list, index, &entry );
gtk_list_store_append( list_store, &iter );
- gtk_list_store_set( list_store, &iter, 0, index == clip, 1, ( int )entry.in, 2, ( int )entry.out, 3, ( int )entry.size, 4, entry.full, 5, entry.clip, -1 );
+ gtk_list_store_set( list_store, &iter,
+ 0, index == clip,
+ 1, frames2tc( entry.in, entry.fps, tc1),
+ 2, frames2tc( entry.out, entry.fps, tc2),
+ 3, frames2tc( entry.size, entry.fps, tc3),
+ 4, entry.full,
+ 5, entry.clip,
+ -1 );
}
this->clip = clip;
/** Show the status associated to a unit.
*/
+static char* status_to_text( mvcp_status status )
+{
+ switch( status->status )
+ {
+ case unit_offline: return "offline"; break;
+ case unit_undefined: return "undefined"; break;
+ case unit_not_loaded: return "unloaded"; break;
+ case unit_stopped: return "stopped"; break;
+ case unit_playing: return "playing"; break;
+ case unit_paused: return "paused"; break;
+ case unit_disconnected: return "disconnect"; break;
+ case unit_unknown: return "unknown"; break;
+ }
+ return "unknown";
+}
+
static int show_status( page_status this, mvcp_status status )
{
GtkWidget *widget = this_page_get_widget( ( page )this );
char temp[ 1024 ] = "";
char temp2[ 1024 ];
char label_name[ 256 ];
+ char tc1[12], tc2[12], tc3[12];
- sprintf( temp, "%05d %05d %05d %s [", status->in, status->position, status->out, status->clip );
-
- switch( status->status )
- {
- case unit_offline:
- strcat( temp, "offline" );
- break;
- case unit_undefined:
- strcat( temp, "undefined" );
- break;
- case unit_not_loaded:
- strcat( temp, "unloaded" );
- break;
- case unit_stopped:
- strcat( temp, "stopped" );
- break;
- case unit_playing:
- strcat( temp, "playing" );
- break;
- case unit_paused:
- strcat( temp, "paused" );
- break;
- case unit_disconnected:
- strcat( temp, "disconnect" );
- break;
- default:
- strcat( temp, "unknown" );
- break;
- }
+ sprintf( temp, "[%s] IN:%s POS:%s OUT:%s %s",
+ status_to_text( status ),
+ frames2tc(status->in, status->fps, tc1),
+ frames2tc(status->position, status->fps, tc2),
+ frames2tc(status->out, status->fps, tc3),
+ status->clip
+ );
- strcat( temp, "]" );
-
sprintf( label_name, "label_unit_%d", status->unit );
gdk_threads_enter();