Commit 46082c2b authored by Carl Eugen Hoyos's avatar Carl Eugen Hoyos

lavc/sheervideo: Fix Y prediction for interlaced frames with transparency.

Based on 260de8a2 by Paul B Mahol.
Fixes ticket #6210.
parent d1bfd19a
...@@ -2185,7 +2185,7 @@ static void decode_aybri(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb) ...@@ -2185,7 +2185,7 @@ static void decode_aybri(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
dst_v[x] = get_bits(gb, 8); dst_v[x] = get_bits(gb, 8);
} }
} else { } else {
int pred[4] = { 125, 125, -128, -128 }; int pred[4] = { 125, s->alt ? 125 : -146, -128, -128 };
for (x = 0; x < avctx->width; x++) { for (x = 0; x < avctx->width; x++) {
int a, y, u, v; int a, y, u, v;
...@@ -2263,7 +2263,7 @@ static void decode_aybr(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb) ...@@ -2263,7 +2263,7 @@ static void decode_aybr(AVCodecContext *avctx, AVFrame *p, GetBitContext *gb)
dst_v[x] = get_bits(gb, 8); dst_v[x] = get_bits(gb, 8);
} }
} else { } else {
int pred[4] = { 125, 125, -128, -128 }; int pred[4] = { 125, s->alt ? 125 : -146, -128, -128 };
for (x = 0; x < avctx->width; x++) { for (x = 0; x < avctx->width; x++) {
int a, y, u, v; int a, y, u, v;
...@@ -2959,6 +2959,7 @@ static int decode_frame(AVCodecContext *avctx, ...@@ -2959,6 +2959,7 @@ static int decode_frame(AVCodecContext *avctx,
} }
break; break;
case MKTAG('A', 'Y', 'B', 'R'): case MKTAG('A', 'Y', 'B', 'R'):
s->alt = 1;
case MKTAG('A', 'Y', 'b', 'R'): case MKTAG('A', 'Y', 'b', 'R'):
avctx->pix_fmt = AV_PIX_FMT_YUVA444P; avctx->pix_fmt = AV_PIX_FMT_YUVA444P;
s->decode_frame = decode_aybr; s->decode_frame = decode_aybr;
...@@ -2968,6 +2969,7 @@ static int decode_frame(AVCodecContext *avctx, ...@@ -2968,6 +2969,7 @@ static int decode_frame(AVCodecContext *avctx,
} }
break; break;
case MKTAG('A', 'y', 'B', 'R'): case MKTAG('A', 'y', 'B', 'R'):
s->alt = 1;
case MKTAG('A', 'y', 'b', 'R'): case MKTAG('A', 'y', 'b', 'R'):
avctx->pix_fmt = AV_PIX_FMT_YUVA444P; avctx->pix_fmt = AV_PIX_FMT_YUVA444P;
s->decode_frame = decode_aybri; s->decode_frame = decode_aybri;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment