OSDN Git Service

MacGui: HTTP optimized mp4 implementation
[handbrake-jp/handbrake-jp-git.git] / libhb / muxcommon.c
index 090f332..d6a8270 100644 (file)
@@ -65,11 +65,13 @@ static void MuxerFunc( void * _mux )
     hb_mux_object_t * m = NULL;
 
     /* Get a real muxer */
-    if( job->pass != 1 )
+    if( job->pass == 0 || job->pass == 2)
     {
         switch( job->mux )
         {
             case HB_MUX_MP4:
+            case HB_MUX_PSP:
+                       case HB_MUX_IPOD:
                 m = hb_mux_mp4_init( job );
                 break;
             case HB_MUX_AVI:
@@ -78,6 +80,8 @@ static void MuxerFunc( void * _mux )
             case HB_MUX_OGM:
                 m = hb_mux_ogm_init( job );
                 break;
+            case HB_MUX_MKV:
+                m = hb_mux_mkv_init( job );
         }
     }
 
@@ -110,7 +114,7 @@ static void MuxerFunc( void * _mux )
     }
 
     /* Create file, write headers */
-    if( job->pass != 1 )
+    if( job->pass == 0 || job->pass == 2 )
     {
         m->init( m );
     }
@@ -132,16 +136,19 @@ static void MuxerFunc( void * _mux )
         hb_list_add( list, track );
     }
 
-    while( !*job->die && !job->done )
+       int thread_sleep_interval = 50;
+       while( !*job->die && !job->done )
     {
         if( !( track = GetTrack( list ) ) )
         {
-            hb_snooze( 50 );
+            hb_snooze( thread_sleep_interval );
+//                     thread_sleep_interval += 1;
             continue;
         }
+//             thread_sleep_interval = MAX(1, (thread_sleep_interval - 1));
 
         buf = hb_fifo_get( track->fifo );
-        if( job->pass != 1 )
+        if( job->pass == 0 || job->pass == 2 )
         {
             m->mux( m, track->mux_data, buf );
             track->frames += 1;
@@ -151,11 +158,18 @@ static void MuxerFunc( void * _mux )
         hb_buffer_close( &buf );
     }
 
-    if( job->pass != 1 )
+    if( job->pass == 0 || job->pass == 2 )
     {
         struct stat sb;
         uint64_t bytes_total, frames_total;
 
+#define p state.param.muxing
+        /* Update the UI */
+        hb_state_t state;
+        state.state   = HB_STATE_MUXING;
+               p.progress = 0;
+        hb_set_state( job->h, &state );
+#undef p
         m->end( m );
 
         if( !stat( job->file, &sb ) )