1 --- ffmpeg-4.4/libavcodec/hevc_mvs.c.orig 2021-05-08 12:22:19.580985429 +0300
2 +++ ffmpeg-4.4/libavcodec/hevc_mvs.c 2021-05-08 12:29:05.340985454 +0300
4 const int xB1 = x0 + nPbW - 1;
5 const int yB1 = y0 - 1;
7 - const int xB0 = x0 + nPbW;
8 - const int yB0 = y0 - 1;
9 + const int xB0_ = x0 + nPbW;
10 + const int yB0_ = y0 - 1;
12 const int xA0 = x0 - 1;
13 const int yA0 = y0 + nPbH;
17 // above right spatial merge candidate
18 - is_available_b0 = AVAILABLE(cand_up_right, B0) &&
19 - xB0 < s->ps.sps->width &&
20 - PRED_BLOCK_AVAILABLE(B0) &&
21 - !is_diff_mer(s, xB0, yB0, x0, y0);
22 + is_available_b0 = AVAILABLE(cand_up_right, B0_) &&
23 + xB0_ < s->ps.sps->width &&
24 + PRED_BLOCK_AVAILABLE(B0_) &&
25 + !is_diff_mer(s, xB0_, yB0_, x0, y0);
27 if (is_available_b0 &&
28 - !(is_available_b1 && COMPARE_MV_REFIDX(B0, B1))) {
29 - mergecandlist[nb_merge_cand] = TAB_MVF_PU(B0);
30 + !(is_available_b1 && COMPARE_MV_REFIDX(B0_, B1))) {
31 + mergecandlist[nb_merge_cand] = TAB_MVF_PU(B0_);
32 if (merge_idx == nb_merge_cand)
36 MvField *tab_mvf = s->ref->tab_mvf;
37 int isScaledFlag_L0 = 0;
38 int availableFlagLXA0 = 1;
39 - int availableFlagLXB0 = 1;
40 + int availableFlagLXB0_ = 1;
42 int min_pu_width = s->ps.sps->min_pu_width;
56 // above right spatial merge candidate
62 - is_available_b0 = AVAILABLE(cand_up_right, B0) &&
63 - xB0 < s->ps.sps->width &&
64 - PRED_BLOCK_AVAILABLE(B0);
65 + is_available_b0 = AVAILABLE(cand_up_right, B0_) &&
66 + xB0_ < s->ps.sps->width &&
67 + PRED_BLOCK_AVAILABLE(B0_);
69 // above spatial merge candidate
73 // above right spatial merge candidate
74 if (is_available_b0) {
75 - if (MP_MX(B0, pred_flag_index_l0, mxB)) {
76 + if (MP_MX(B0_, pred_flag_index_l0, mxB)) {
79 - if (MP_MX(B0, pred_flag_index_l1, mxB)) {
80 + if (MP_MX(B0_, pred_flag_index_l1, mxB)) {
88 - availableFlagLXB0 = 0;
89 + availableFlagLXB0_ = 0;
92 if (!isScaledFlag_L0) {
93 - if (availableFlagLXB0) {
94 + if (availableFlagLXB0_) {
95 availableFlagLXA0 = 1;
98 - availableFlagLXB0 = 0;
99 + availableFlagLXB0_ = 0;
102 if (is_available_b0) {
103 - availableFlagLXB0 = MP_MX_LT(B0, pred_flag_index_l0, mxB);
104 - if (!availableFlagLXB0)
105 - availableFlagLXB0 = MP_MX_LT(B0, pred_flag_index_l1, mxB);
106 + availableFlagLXB0_ = MP_MX_LT(B0_, pred_flag_index_l0, mxB);
107 + if (!availableFlagLXB0_)
108 + availableFlagLXB0_ = MP_MX_LT(B0_, pred_flag_index_l1, mxB);
111 - if (is_available_b1 && !availableFlagLXB0) {
112 - availableFlagLXB0 = MP_MX_LT(B1, pred_flag_index_l0, mxB);
113 - if (!availableFlagLXB0)
114 - availableFlagLXB0 = MP_MX_LT(B1, pred_flag_index_l1, mxB);
115 + if (is_available_b1 && !availableFlagLXB0_) {
116 + availableFlagLXB0_ = MP_MX_LT(B1, pred_flag_index_l0, mxB);
117 + if (!availableFlagLXB0_)
118 + availableFlagLXB0_ = MP_MX_LT(B1, pred_flag_index_l1, mxB);
121 - if (is_available_b2 && !availableFlagLXB0) {
122 - availableFlagLXB0 = MP_MX_LT(B2, pred_flag_index_l0, mxB);
123 - if (!availableFlagLXB0)
124 - availableFlagLXB0 = MP_MX_LT(B2, pred_flag_index_l1, mxB);
125 + if (is_available_b2 && !availableFlagLXB0_) {
126 + availableFlagLXB0_ = MP_MX_LT(B2, pred_flag_index_l0, mxB);
127 + if (!availableFlagLXB0_)
128 + availableFlagLXB0_ = MP_MX_LT(B2, pred_flag_index_l1, mxB);
132 if (availableFlagLXA0)
133 mvpcand_list[numMVPCandLX++] = mxA;
135 - if (availableFlagLXB0 && (!availableFlagLXA0 || mxA.x != mxB.x || mxA.y != mxB.y))
136 + if (availableFlagLXB0_ && (!availableFlagLXA0 || mxA.x != mxB.x || mxA.y != mxB.y))
137 mvpcand_list[numMVPCandLX++] = mxB;
139 //temporal motion vector prediction candidate