mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-23 04:24:35 +02:00
h264: dont mess with chroma planes for grayscale h264.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
dfacef9e73
commit
28a613b09b
@ -2179,8 +2179,10 @@ static av_always_inline void hl_decode_mb_internal(H264Context *h, int simple,
|
||||
uvlinesize, 1, 0, simple, pixel_shift);
|
||||
|
||||
if (simple || !CONFIG_GRAY || !(s->flags & CODEC_FLAG_GRAY)) {
|
||||
h->hpc.pred8x8[h->chroma_pred_mode](dest_cb, uvlinesize);
|
||||
h->hpc.pred8x8[h->chroma_pred_mode](dest_cr, uvlinesize);
|
||||
if (CHROMA) {
|
||||
h->hpc.pred8x8[h->chroma_pred_mode](dest_cb, uvlinesize);
|
||||
h->hpc.pred8x8[h->chroma_pred_mode](dest_cr, uvlinesize);
|
||||
}
|
||||
}
|
||||
|
||||
hl_decode_mb_predict_luma(h, mb_type, is_h264, simple,
|
||||
|
@ -87,6 +87,7 @@
|
||||
#define CABAC h->pps.cabac
|
||||
#endif
|
||||
|
||||
#define CHROMA (h->sps.chroma_format_idc)
|
||||
#define CHROMA422 (h->sps.chroma_format_idc == 2)
|
||||
#define CHROMA444 (h->sps.chroma_format_idc == 3)
|
||||
|
||||
|
@ -245,7 +245,7 @@ static av_always_inline void h264_filter_mb_fast_internal(H264Context *h,
|
||||
int pixel_shift)
|
||||
{
|
||||
MpegEncContext * const s = &h->s;
|
||||
int chroma = !(CONFIG_GRAY && (s->flags&CODEC_FLAG_GRAY));
|
||||
int chroma = CHROMA && !(CONFIG_GRAY && (s->flags&CODEC_FLAG_GRAY));
|
||||
int chroma444 = CHROMA444;
|
||||
int chroma422 = CHROMA422;
|
||||
|
||||
@ -713,7 +713,7 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint
|
||||
const int mvy_limit = IS_INTERLACED(mb_type) ? 2 : 4;
|
||||
int first_vertical_edge_done = 0;
|
||||
av_unused int dir;
|
||||
int chroma = !(CONFIG_GRAY && (s->flags&CODEC_FLAG_GRAY));
|
||||
int chroma = CHROMA && !(CONFIG_GRAY && (s->flags&CODEC_FLAG_GRAY));
|
||||
int qp_bd_offset = 6 * (h->sps.bit_depth_luma - 8);
|
||||
int a = h->slice_alpha_c0_offset - qp_bd_offset;
|
||||
int b = h->slice_beta_offset - qp_bd_offset;
|
||||
|
@ -823,6 +823,7 @@ static av_cold int svq3_decode_init(AVCodecContext *avctx)
|
||||
s->flags2 = avctx->flags2;
|
||||
s->unrestricted_mv = 1;
|
||||
h->is_complex=1;
|
||||
h->sps.chroma_format_idc = 1;
|
||||
avctx->pix_fmt = avctx->codec->pix_fmts[0];
|
||||
|
||||
if (!s->context_initialized) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user