Multithreaded encoder, late sync loopfilter
Sync with loopfilter thread just at the beginning of next frame encoding. This returns control to application faster and allows a better multicore scaling. When PSNR packets are generated the final filtered frame is needed imediatly so we cannot delay the sync. Change-Id: I288d97b5e331d41d6f5bb49d97986fa12ac6f066
This commit is contained in:
parent
6f9457ec12
commit
380d64ecb1
@ -3764,6 +3764,17 @@ static void encode_frame_to_data_rate
|
||||
vp8_setup_key_frame(cpi);
|
||||
}
|
||||
|
||||
#if CONFIG_MULTITHREAD
|
||||
/* wait for loopfilter thread done (for last picture)
|
||||
* don't do it for first frame, re-code and when PSNR is calculated
|
||||
*/
|
||||
if (cpi->b_multi_threaded && cm->current_video_frame && (!Loop) &&
|
||||
(!cpi->b_calculate_psnr))
|
||||
{
|
||||
sem_wait(&cpi->h_event_end_lpf);
|
||||
}
|
||||
#endif
|
||||
|
||||
// transform / motion compensation build reconstruction frame
|
||||
vp8_encode_frame(cpi);
|
||||
|
||||
@ -4136,8 +4147,8 @@ static void encode_frame_to_data_rate
|
||||
vp8_pack_bitstream(cpi, dest, size);
|
||||
|
||||
#if CONFIG_MULTITHREAD
|
||||
/* wait for loopfilter thread done */
|
||||
if (cpi->b_multi_threaded)
|
||||
/* if PSNR packets are generated we have to wait for the lpf */
|
||||
if (cpi->b_multi_threaded && cpi->b_calculate_psnr)
|
||||
{
|
||||
sem_wait(&cpi->h_event_end_lpf);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user