OSDN Git Service

Another subtitle muxing fix: Don't check the rdy bit before calling OutputTrackChunk...
authorvan <van@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Mon, 11 May 2009 07:12:39 +0000 (07:12 +0000)
committervan <van@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Mon, 11 May 2009 07:12:39 +0000 (07:12 +0000)
git-svn-id: svn://localhost/HandBrake/trunk@2410 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/muxcommon.c

index ea01043..a404911 100644 (file)
@@ -285,21 +285,18 @@ static void MuxerFunc( void * _mux )
         {
             for ( i = 0; i < mux->ntracks; ++i )
             {
-                if ( mux->rdy & (1 << i) )
+                track = mux->track[i];
+                OutputTrackChunk( mux, track, m );
+
+                // if the track is at eof or still has data that's past
+                // our next interleave point then leave it marked as rdy.
+                // Otherwise clear rdy.
+                if ( ( mux->eof & (1 << i) ) == 0 &&
+                     ( track->mf.out == track->mf.in ||
+                       track->mf.fifo[(track->mf.in-1) & (track->mf.flen-1)]->stop
+                         < mux->pts + mux->interleave ) )
                 {
-                    track = mux->track[i];
-                    OutputTrackChunk( mux, track, m );
-
-                    // if the track is at eof or still has data that's past
-                    // our next interleave point then leave it marked as rdy.
-                    // Otherwise clear rdy.
-                    if ( ( mux->eof & (1 << i) ) == 0 &&
-                         ( track->mf.out == track->mf.in ||
-                           track->mf.fifo[(track->mf.in-1) & (track->mf.flen-1)]->stop
-                             < mux->pts + mux->interleave ) )
-                    {
-                        mux->rdy &=~ ( 1 << i );
-                    }
+                    mux->rdy &=~ ( 1 << i );
                 }
             }
 
@@ -330,13 +327,12 @@ finished:
         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;
+        state.state = HB_STATE_MUXING;
+        state.param.muxing.progress = 0;
         hb_set_state( job->h, &state );
-#undef p
+
         if( m )
         {
             m->end( m );