| Index: source/libvpx/vp9/common/vp9_mvref_common.c
|
| diff --git a/source/libvpx/vp9/common/vp9_mvref_common.c b/source/libvpx/vp9/common/vp9_mvref_common.c
|
| index 51aa82411a9254d89b49574b7208e482f5ba0a28..52a731329d3ec8de5f8a9ea4d17e9bd205daec7f 100644
|
| --- a/source/libvpx/vp9/common/vp9_mvref_common.c
|
| +++ b/source/libvpx/vp9/common/vp9_mvref_common.c
|
| @@ -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) {
|
| - sync(data, mi_row);
|
| - }
|
| + // 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) {
|
|
|