X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=libhb%2Frender.c;h=6888a1e0a75bc5b7afb6b6b1e82d7cd4778fdbcc;hb=4b72a63eb61a01275493c4bfb51ba02152d1c5e1;hp=fefec7792629c15df2697aa4747123266f13b3c0;hpb=7d0a452889829dc26998204b746a887815c5e56c;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/libhb/render.c b/libhb/render.c index fefec779..6888a1e0 100644 --- a/libhb/render.c +++ b/libhb/render.c @@ -226,6 +226,7 @@ static hb_buffer_t *delete_buffer_from_chain( hb_buffer_t **buf_out, hb_buffer_t // found 'out' - remove it from the chain pred->next = succ; } + out->next = 0; hb_buffer_close( &out ); return succ; } @@ -493,7 +494,7 @@ int renderWork( hb_work_object_t * w, hb_buffer_t ** buf_in, /* In order to make sure we have continuous time stamps, store the current frame's duration as starting when the last one stopped. */ pv->last_start[0] = pv->last_stop[1]; - pv->last_stop[0] = pv->last_start[0] + (in->stop - in->start); + pv->last_stop[0] = pv->last_start[0] + (buf_tmp_in->stop - buf_tmp_in->start); } /* Apply subtitles */ @@ -668,10 +669,15 @@ void renderClose( hb_work_object_t * w ) pv->count_frames, pv->drops, pv->dups ); } - hb_log("render: lost time: %lld (%i frames)", pv->total_lost_time, pv->dropped_frames); - hb_log("render: gained time: %lld (%i frames) (%lld not accounted for)", pv->total_gained_time, pv->extended_frames, pv->total_lost_time - pv->total_gained_time); + hb_interjob_t * interjob = hb_interjob_get( w->private_data->job->h ); + + /* Preserve dropped frame count for more accurate framerates in 2nd passes. */ + interjob->render_dropped = pv->dropped_frames; + + hb_log("render: lost time: %"PRId64" (%i frames)", pv->total_lost_time, pv->dropped_frames); + hb_log("render: gained time: %"PRId64" (%i frames) (%"PRId64" not accounted for)", pv->total_gained_time, pv->extended_frames, pv->total_lost_time - pv->total_gained_time); if (pv->dropped_frames) - hb_log("render: average dropped frame duration: %lld", (pv->total_lost_time / pv->dropped_frames) ); + hb_log("render: average dropped frame duration: %"PRId64, (pv->total_lost_time / pv->dropped_frames) ); /* Cleanup subtitle queue */ if( pv->subtitle_queue ) @@ -714,8 +720,8 @@ int renderInit( hb_work_object_t * w, hb_job_t * job ) } /* Setup FIFO queue for subtitle cache */ - pv->subtitle_queue = hb_fifo_init( 8 ); - pv->delay_queue = hb_fifo_init( 8 ); + pv->subtitle_queue = hb_fifo_init( 8, 1 ); + pv->delay_queue = hb_fifo_init( 8, 1 ); /* VFR IVTC needs a bunch of time-keeping variables to track how many frames are dropped, how many are extended, what the