Skip to content

Commit 14341c6

Browse files
committed
hevc : update hls_decode_neighbour
1 parent b68d306 commit 14341c6

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

libavcodec/hevc.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1795,26 +1795,26 @@ static void hls_decode_neighbour(HEVCContext *s, int x_ctb, int y_ctb,
17951795
lc->end_of_tiles_y = FFMIN(y_ctb + ctb_size, s->sps->height);
17961796

17971797
if (s->pps->tiles_enabled_flag) {
1798-
tile_left_boundary = x_ctb > 0 &&
1799-
s->pps->tile_id[ctb_addr_ts] == s->pps->tile_id[s->pps->ctb_addr_rs_to_ts[ctb_addr_rs - 1]];
1798+
tile_left_boundary = x_ctb > 0 &&
1799+
s->pps->tile_id[ctb_addr_ts] != s->pps->tile_id[s->pps->ctb_addr_rs_to_ts[ctb_addr_rs-1]];
18001800
slice_left_boundary = x_ctb > 0 &&
1801-
s->tab_slice_address[ctb_addr_rs] == s->tab_slice_address[ctb_addr_rs - 1];
1801+
s->tab_slice_address[ctb_addr_rs] != s->tab_slice_address[ctb_addr_rs - 1];
18021802
tile_up_boundary = y_ctb > 0 &&
1803-
s->pps->tile_id[ctb_addr_ts] == s->pps->tile_id[s->pps->ctb_addr_rs_to_ts[ctb_addr_rs - s->sps->ctb_width]];
1803+
s->pps->tile_id[ctb_addr_ts] != s->pps->tile_id[s->pps->ctb_addr_rs_to_ts[ctb_addr_rs - s->sps->ctb_width]];
18041804
slice_up_boundary = y_ctb > 0 &&
1805-
s->tab_slice_address[ctb_addr_rs] == s->tab_slice_address[ctb_addr_rs - s->sps->ctb_width];
1805+
s->tab_slice_address[ctb_addr_rs] != s->tab_slice_address[ctb_addr_rs - s->sps->ctb_width];
18061806
} else {
1807-
tile_left_boundary =
1808-
tile_up_boundary = 1;
1809-
slice_left_boundary = ctb_addr_in_slice > 0;
1810-
slice_up_boundary = ctb_addr_in_slice >= s->sps->ctb_width;
1811-
}
1812-
lc->slice_or_tiles_left_boundary = (!slice_left_boundary) + (!tile_left_boundary << 1);
1813-
lc->slice_or_tiles_up_boundary = (!slice_up_boundary + (!tile_up_boundary << 1));
1814-
lc->ctb_left_flag = ((x_ctb > 0) && (ctb_addr_in_slice > 0) && tile_left_boundary);
1815-
lc->ctb_up_flag = ((y_ctb > 0) && (ctb_addr_in_slice >= s->sps->ctb_width) && tile_up_boundary);
1816-
lc->ctb_up_right_flag = ((y_ctb > 0) && (ctb_addr_in_slice+1 >= s->sps->ctb_width) && (s->pps->tile_id[ctb_addr_ts] == s->pps->tile_id[s->pps->ctb_addr_rs_to_ts[ctb_addr_rs+1 - s->sps->ctb_width]]));
1817-
lc->ctb_up_left_flag = ((x_ctb > 0) && (y_ctb > 0) && (ctb_addr_in_slice-1 >= s->sps->ctb_width) && (s->pps->tile_id[ctb_addr_ts] == s->pps->tile_id[s->pps->ctb_addr_rs_to_ts[ctb_addr_rs-1 - s->sps->ctb_width]]));
1807+
tile_left_boundary =
1808+
tile_up_boundary = 0;
1809+
slice_left_boundary = ctb_addr_in_slice <= 0;
1810+
slice_up_boundary = ctb_addr_in_slice < s->sps->ctb_width;
1811+
}
1812+
lc->slice_or_tiles_left_boundary = slice_left_boundary + (tile_left_boundary << 1);
1813+
lc->slice_or_tiles_up_boundary = slice_up_boundary + (tile_up_boundary << 1);
1814+
lc->ctb_left_flag = ((x_ctb > 0) && (ctb_addr_in_slice > 0) && !tile_left_boundary);
1815+
lc->ctb_up_flag = ((y_ctb > 0) && (ctb_addr_in_slice >= s->sps->ctb_width) && !tile_up_boundary);
1816+
lc->ctb_up_right_flag = ((y_ctb > 0) && (ctb_addr_in_slice+1 >= s->sps->ctb_width) && (s->pps->tile_id[ctb_addr_ts] == s->pps->tile_id[s->pps->ctb_addr_rs_to_ts[ctb_addr_rs+1 - s->sps->ctb_width]]));
1817+
lc->ctb_up_left_flag = ((x_ctb > 0) && (y_ctb > 0) && (ctb_addr_in_slice-1 >= s->sps->ctb_width) && (s->pps->tile_id[ctb_addr_ts] == s->pps->tile_id[s->pps->ctb_addr_rs_to_ts[ctb_addr_rs-1 - s->sps->ctb_width]]));
18181818
}
18191819

18201820
static int hls_decode_entry(AVCodecContext *avctxt, void *isFilterThread)

0 commit comments

Comments
 (0)