static av_cold int decode_init(AVCodecContext *avctx) { HYuvContext *s = avctx->priv_data; int ret; ff_huffyuvdsp_init(&s->hdsp); memset(s->vlc, 0, 4 * sizeof(VLC)); s->interlaced = avctx->height > 288; s->bgr32 = 1; if (avctx->extradata_size) { if ((avctx->bits_per_coded_sample & 7) && avctx->bits_per_coded_sample != 12) s->version = 1; // do such files exist at all? else if (avctx->extradata_size > 3 && avctx->extradata[3] == 0) s->version = 2; else s->version = 3; } else s->version = 0; s->bps = 8; s->n = 1<<s->bps; s->vlc_n = FFMIN(s->n, MAX_VLC_N); s->chroma = 1; if (s->version >= 2) { int method, interlace; if (avctx->extradata_size < 4) return AVERROR_INVALIDDATA; method = avctx->extradata[0]; s->decorrelate = method & 64 ? 1 : 0; s->predictor = method & 63; if (s->version == 2) { s->bitstream_bpp = avctx->extradata[1]; if (s->bitstream_bpp == 0) s->bitstream_bpp = avctx->bits_per_coded_sample & ~7; } else { s->bps = (avctx->extradata[1] >> 4) + 1; s->n = 1<<s->bps; s->vlc_n = FFMIN(s->n, MAX_VLC_N); s->chroma_h_shift = avctx->extradata[1] & 3; s->chroma_v_shift = (avctx->extradata[1] >> 2) & 3; s->yuv = !!(avctx->extradata[2] & 1); s->chroma= !!(avctx->extradata[2] & 3); s->alpha = !!(avctx->extradata[2] & 4); } interlace = (avctx->extradata[2] & 0x30) >> 4; s->interlaced = (interlace == 1) ? 1 : (interlace == 2) ? 0 : s->interlaced; s->context = avctx->extradata[2] & 0x40 ? 1 : 0; if ((ret = read_huffman_tables(s, avctx->extradata + 4, avctx->extradata_size - 4)) < 0) return ret; } else {
static av_cold int decode_init(AVCodecContext *avctx) { HYuvContext *s = avctx->priv_data; int ret; ff_huffyuv_common_init(avctx); ff_huffyuvdsp_init(&s->hdsp); memset(s->vlc, 0, 3 * sizeof(VLC)); s->interlaced = s->height > 288; s->bgr32 = 1; if (avctx->extradata_size) { if ((avctx->bits_per_coded_sample & 7) && avctx->bits_per_coded_sample != 12) s->version = 1; // do such files exist at all? else s->version = 2; } else s->version = 0; if (s->version == 2) { int method, interlace; if (avctx->extradata_size < 4) return AVERROR_INVALIDDATA; method = avctx->extradata[0]; s->decorrelate = method & 64 ? 1 : 0; s->predictor = method & 63; s->bitstream_bpp = avctx->extradata[1]; if (s->bitstream_bpp == 0) s->bitstream_bpp = avctx->bits_per_coded_sample & ~7; interlace = (avctx->extradata[2] & 0x30) >> 4; s->interlaced = (interlace == 1) ? 1 : (interlace == 2) ? 0 : s->interlaced; s->context = avctx->extradata[2] & 0x40 ? 1 : 0; if ((ret = read_huffman_tables(s, avctx->extradata + 4, avctx->extradata_size - 4)) < 0) return ret; } else {