diff options
author | Mickaƫl Raulet <mraulet@insa-rennes.fr> | 2013-10-21 11:49:35 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-10-22 20:20:40 +0200 |
commit | 0c8aba3842a718eb9139fc88b7b60dc79e127bd7 (patch) | |
tree | 5f688a62b6e74e920f54450cc4a313ebcfe06877 /libavcodec/hevc_mvs.c | |
parent | e146c326b91297ff900db632eb0dba30289e9ee6 (diff) | |
download | ffmpeg-0c8aba3842a718eb9139fc88b7b60dc79e127bd7.tar.gz |
hevc: add wavefront parallel processing
cherry picked from commit b971f2c8fdc60f8bab605a6e8060492eb548a53a
cherry picked from commit e57b0a2c915ce6b8a9d57b8292f6581f0680842e
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/hevc_mvs.c')
-rw-r--r-- | libavcodec/hevc_mvs.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libavcodec/hevc_mvs.c b/libavcodec/hevc_mvs.c index 701510903b..0b9286bd7b 100644 --- a/libavcodec/hevc_mvs.c +++ b/libavcodec/hevc_mvs.c @@ -40,7 +40,7 @@ static const uint8_t l0_l1_cand_idx[12][2] = { void ff_hevc_set_neighbour_available(HEVCContext *s, int x0, int y0, int nPbW, int nPbH) { - HEVCLocalContext *lc = &s->HEVClc; + HEVCLocalContext *lc = s->HEVClc; int x0b = x0 & ((1 << s->sps->log2_ctb_size) - 1); int y0b = y0 & ((1 << s->sps->log2_ctb_size) - 1); @@ -98,7 +98,7 @@ static int check_prediction_block_available(HEVCContext *s, int log2_cb_size, int x0, int y0, int nPbW, int nPbH, int xA1, int yA1, int partIdx) { - HEVCLocalContext *lc = &s->HEVClc; + HEVCLocalContext *lc = s->HEVClc; if (lc->cu.x < xA1 && lc->cu.y < yA1 && (lc->cu.x + (1 << log2_cb_size)) > xA1 && @@ -272,7 +272,8 @@ static int temporal_luma_motion_vector(HEVCContext *s, int x0, int y0, xPRb = x0 + nPbW; yPRb = y0 + nPbH; - ff_thread_await_progress(&ref->tf, INT_MAX, 0); + if (s->threads_type == FF_THREAD_FRAME ) + ff_thread_await_progress(&ref->tf, INT_MAX, 0); if (tab_mvf && y0 >> s->sps->log2_ctb_size == yPRb >> s->sps->log2_ctb_size && yPRb < s->sps->height && @@ -322,7 +323,7 @@ static void derive_spatial_merge_candidates(HEVCContext *s, int x0, int y0, int singleMCLFlag, int part_idx, struct MvField mergecandlist[]) { - HEVCLocalContext *lc = &s->HEVClc; + HEVCLocalContext *lc = s->HEVClc; RefPicList *refPicList = s->ref->refPicList; MvField *tab_mvf = s->ref->tab_mvf; @@ -707,7 +708,7 @@ void ff_hevc_luma_mv_merge_mode(HEVCContext *s, int x0, int y0, int nPbW, struct MvField mergecand_list[MRG_MAX_NUM_CANDS] = { { { { 0 } } } }; int nPbW2 = nPbW; int nPbH2 = nPbH; - HEVCLocalContext *lc = &s->HEVClc; + HEVCLocalContext *lc = s->HEVClc; if (s->pps->log2_parallel_merge_level > 2 && nCS == 8) { singleMCLFlag = 1; @@ -794,7 +795,7 @@ void ff_hevc_luma_mv_mvp_mode(HEVCContext *s, int x0, int y0, int nPbW, int merge_idx, MvField *mv, int mvp_lx_flag, int LX) { - HEVCLocalContext *lc = &s->HEVClc; + HEVCLocalContext *lc = s->HEVClc; MvField *tab_mvf = s->ref->tab_mvf; int isScaledFlag_L0 = 0; int availableFlagLXA0 = 0; |