Merge "Only wait for previous frame's motion vector if needed."
This commit is contained in:
commit
a1ef75bb63
@ -69,13 +69,23 @@ static void find_mv_refs_idx(const VP9_COMMON *cm, const MACROBLOCKD *xd,
|
||||
}
|
||||
}
|
||||
|
||||
// Synchronize here for frame parallel decode if sync function is provided.
|
||||
if (sync != NULL) {
|
||||
// TODO(hkuang): Remove this sync after fixing pthread_cond_broadcast
|
||||
// on windows platform. The sync here is unncessary if use_perv_frame_mvs
|
||||
// is 0. But after removing it, there will be hang in the unit test on windows
|
||||
// due to several threads waiting for a thread's signal.
|
||||
#if defined(_WIN32) && !HAVE_PTHREAD_H
|
||||
if (cm->frame_parallel_decode && sync != NULL) {
|
||||
sync(data, mi_row);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Check the last frame's mode and mv info.
|
||||
if (cm->use_prev_frame_mvs) {
|
||||
// Synchronize here for frame parallel decode if sync function is provided.
|
||||
if (cm->frame_parallel_decode && sync != NULL) {
|
||||
sync(data, mi_row);
|
||||
}
|
||||
|
||||
if (prev_frame_mvs->ref_frame[0] == ref_frame) {
|
||||
ADD_MV_REF_LIST(prev_frame_mvs->mv[0], refmv_count, mv_ref_list, Done);
|
||||
} else if (prev_frame_mvs->ref_frame[1] == ref_frame) {
|
||||
|
@ -38,8 +38,14 @@ void vp9_frameworker_unlock_stats(VP9Worker *const worker) {
|
||||
void vp9_frameworker_signal_stats(VP9Worker *const worker) {
|
||||
#if CONFIG_MULTITHREAD
|
||||
FrameWorkerData *const worker_data = worker->data1;
|
||||
// TODO(hkuang): Investigate using broadcast or signal.
|
||||
|
||||
// TODO(hkuang): Fix the pthread_cond_broadcast in windows wrapper.
|
||||
#if defined(_WIN32) && !HAVE_PTHREAD_H
|
||||
pthread_cond_signal(&worker_data->stats_cond);
|
||||
#else
|
||||
pthread_cond_broadcast(&worker_data->stats_cond);
|
||||
#endif
|
||||
|
||||
#else
|
||||
(void)worker;
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user