h264: skip chroma edges at the picture boundary while deblocking 4:4:4
This handles macroblock edges for the chroma components in the same way as for the luma compoment for 4:4:4 streams. The Spec explicitly states that the deblocking filter is not applied to edges at the boundary of the picture. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
This commit is contained in:
@@ -2361,6 +2361,7 @@ static av_always_inline void xchg_mb_border(H264Context *h, uint8_t *src_y,
|
|||||||
}
|
}
|
||||||
if (simple || !CONFIG_GRAY || !(h->flags & CODEC_FLAG_GRAY)) {
|
if (simple || !CONFIG_GRAY || !(h->flags & CODEC_FLAG_GRAY)) {
|
||||||
if (chroma444) {
|
if (chroma444) {
|
||||||
|
if (deblock_top) {
|
||||||
if (deblock_topleft) {
|
if (deblock_topleft) {
|
||||||
XCHG(top_border_m1 + (24 << pixel_shift), src_cb - (7 << pixel_shift), 1);
|
XCHG(top_border_m1 + (24 << pixel_shift), src_cb - (7 << pixel_shift), 1);
|
||||||
XCHG(top_border_m1 + (40 << pixel_shift), src_cr - (7 << pixel_shift), 1);
|
XCHG(top_border_m1 + (40 << pixel_shift), src_cr - (7 << pixel_shift), 1);
|
||||||
@@ -2373,6 +2374,7 @@ static av_always_inline void xchg_mb_border(H264Context *h, uint8_t *src_y,
|
|||||||
XCHG(h->top_borders[top_idx][h->mb_x + 1] + (16 << pixel_shift), src_cb + (17 << pixel_shift), 1);
|
XCHG(h->top_borders[top_idx][h->mb_x + 1] + (16 << pixel_shift), src_cb + (17 << pixel_shift), 1);
|
||||||
XCHG(h->top_borders[top_idx][h->mb_x + 1] + (32 << pixel_shift), src_cr + (17 << pixel_shift), 1);
|
XCHG(h->top_borders[top_idx][h->mb_x + 1] + (32 << pixel_shift), src_cr + (17 << pixel_shift), 1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (deblock_top) {
|
if (deblock_top) {
|
||||||
if (deblock_topleft) {
|
if (deblock_topleft) {
|
||||||
|
Reference in New Issue
Block a user