X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Fmuxcommon.c;h=1f39df11d92ab52c14ac5fa398aca98ae72dab46;hb=033e32de9c380f54c7d1362a3979da205ebc3a29;hp=ea01043768e3a168ed02838c0df3dab873eae539;hpb=c09eebe1c76235af427934c977af990817d37fe1;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/muxcommon.c b/libhb/muxcommon.c index ea010437..1f39df11 100644 --- a/libhb/muxcommon.c +++ b/libhb/muxcommon.c @@ -262,7 +262,7 @@ static void MuxerFunc( void * _mux ) { hb_subtitle_t *subtitle = hb_list_item( title->list_subtitle, i ); - if (subtitle->dest != PASSTHRUSUB) + if (subtitle->config.dest != PASSTHRUSUB) continue; add_mux_track( mux, subtitle->fifo_out, subtitle->mux_data, 0 ); } @@ -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 ); @@ -344,23 +340,22 @@ finished: if( !stat( job->file, &sb ) ) { - hb_deep_log( 2, "mux: file size, %lld bytes", (uint64_t) sb.st_size ); + hb_deep_log( 2, "mux: file size, %"PRId64" bytes", (uint64_t) sb.st_size ); bytes_total = 0; frames_total = 0; for( i = 0; i < mux->ntracks; ++i ) { track = mux->track[i]; - hb_log( "mux: track %d, %lld frames, %lld bytes, %.2f kbps, fifo %d", + hb_log( "mux: track %d, %"PRId64" frames, %"PRId64" bytes, %.2f kbps, fifo %d", i, track->frames, track->bytes, 90000.0 * track->bytes / mux->pts / 125, track->mf.flen ); if( !i && ( job->vquality < 0.0 || job->vquality > 1.0 ) ) { /* Video */ - hb_deep_log( 2, "mux: video bitrate error, %+lld bytes", - track->bytes - mux->pts * job->vbitrate * - 125 / 90000 ); + hb_deep_log( 2, "mux: video bitrate error, %+"PRId64" bytes", + (int64_t)(track->bytes - mux->pts * job->vbitrate * 125 / 90000) ); } bytes_total += track->bytes; frames_total += track->frames;