|
|
@ -115,7 +115,7 @@ typedef struct BinkContext { |
|
|
|
AVCodecContext *avctx; |
|
|
|
AVCodecContext *avctx; |
|
|
|
DSPContext dsp; |
|
|
|
DSPContext dsp; |
|
|
|
HpelDSPContext hdsp; |
|
|
|
HpelDSPContext hdsp; |
|
|
|
BinkDSPContext bdsp; |
|
|
|
BinkDSPContext binkdsp; |
|
|
|
AVFrame *last; |
|
|
|
AVFrame *last; |
|
|
|
int version; ///< internal Bink file version
|
|
|
|
int version; ///< internal Bink file version
|
|
|
|
int has_alpha; |
|
|
|
int has_alpha; |
|
|
@ -867,7 +867,7 @@ static int binkb_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, |
|
|
|
dctblock[0] = binkb_get_value(c, BINKB_SRC_INTRA_DC); |
|
|
|
dctblock[0] = binkb_get_value(c, BINKB_SRC_INTRA_DC); |
|
|
|
qp = binkb_get_value(c, BINKB_SRC_INTRA_Q); |
|
|
|
qp = binkb_get_value(c, BINKB_SRC_INTRA_Q); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, binkb_intra_quant, qp); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, binkb_intra_quant, qp); |
|
|
|
c->bdsp.idct_put(dst, stride, dctblock); |
|
|
|
c->binkdsp.idct_put(dst, stride, dctblock); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 3: |
|
|
|
case 3: |
|
|
|
xoff = binkb_get_value(c, BINKB_SRC_X_OFF); |
|
|
|
xoff = binkb_get_value(c, BINKB_SRC_X_OFF); |
|
|
@ -883,7 +883,7 @@ static int binkb_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, |
|
|
|
c->dsp.clear_block(block); |
|
|
|
c->dsp.clear_block(block); |
|
|
|
v = binkb_get_value(c, BINKB_SRC_INTER_COEFS); |
|
|
|
v = binkb_get_value(c, BINKB_SRC_INTER_COEFS); |
|
|
|
read_residue(gb, block, v); |
|
|
|
read_residue(gb, block, v); |
|
|
|
c->bdsp.add_pixels8(dst, block, stride); |
|
|
|
c->binkdsp.add_pixels8(dst, block, stride); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
case 4: |
|
|
|
xoff = binkb_get_value(c, BINKB_SRC_X_OFF); |
|
|
|
xoff = binkb_get_value(c, BINKB_SRC_X_OFF); |
|
|
@ -900,7 +900,7 @@ static int binkb_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, |
|
|
|
dctblock[0] = binkb_get_value(c, BINKB_SRC_INTER_DC); |
|
|
|
dctblock[0] = binkb_get_value(c, BINKB_SRC_INTER_DC); |
|
|
|
qp = binkb_get_value(c, BINKB_SRC_INTER_Q); |
|
|
|
qp = binkb_get_value(c, BINKB_SRC_INTER_Q); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, binkb_inter_quant, qp); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, binkb_inter_quant, qp); |
|
|
|
c->bdsp.idct_add(dst, stride, dctblock); |
|
|
|
c->binkdsp.idct_add(dst, stride, dctblock); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case 5: |
|
|
|
case 5: |
|
|
|
v = binkb_get_value(c, BINKB_SRC_COLORS); |
|
|
|
v = binkb_get_value(c, BINKB_SRC_COLORS); |
|
|
@ -1043,7 +1043,7 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, |
|
|
|
memset(dctblock, 0, sizeof(*dctblock) * 64); |
|
|
|
memset(dctblock, 0, sizeof(*dctblock) * 64); |
|
|
|
dctblock[0] = get_value(c, BINK_SRC_INTRA_DC); |
|
|
|
dctblock[0] = get_value(c, BINK_SRC_INTRA_DC); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, bink_intra_quant, -1); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, bink_intra_quant, -1); |
|
|
|
c->bdsp.idct_put(ublock, 8, dctblock); |
|
|
|
c->binkdsp.idct_put(ublock, 8, dctblock); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case FILL_BLOCK: |
|
|
|
case FILL_BLOCK: |
|
|
|
v = get_value(c, BINK_SRC_COLORS); |
|
|
|
v = get_value(c, BINK_SRC_COLORS); |
|
|
@ -1068,7 +1068,7 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
} |
|
|
|
} |
|
|
|
if (blk != FILL_BLOCK) |
|
|
|
if (blk != FILL_BLOCK) |
|
|
|
c->bdsp.scale_block(ublock, dst, stride); |
|
|
|
c->binkdsp.scale_block(ublock, dst, stride); |
|
|
|
bx++; |
|
|
|
bx++; |
|
|
|
dst += 8; |
|
|
|
dst += 8; |
|
|
|
prev += 8; |
|
|
|
prev += 8; |
|
|
@ -1120,13 +1120,13 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, |
|
|
|
c->dsp.clear_block(block); |
|
|
|
c->dsp.clear_block(block); |
|
|
|
v = get_bits(gb, 7); |
|
|
|
v = get_bits(gb, 7); |
|
|
|
read_residue(gb, block, v); |
|
|
|
read_residue(gb, block, v); |
|
|
|
c->bdsp.add_pixels8(dst, block, stride); |
|
|
|
c->binkdsp.add_pixels8(dst, block, stride); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case INTRA_BLOCK: |
|
|
|
case INTRA_BLOCK: |
|
|
|
memset(dctblock, 0, sizeof(*dctblock) * 64); |
|
|
|
memset(dctblock, 0, sizeof(*dctblock) * 64); |
|
|
|
dctblock[0] = get_value(c, BINK_SRC_INTRA_DC); |
|
|
|
dctblock[0] = get_value(c, BINK_SRC_INTRA_DC); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, bink_intra_quant, -1); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, bink_intra_quant, -1); |
|
|
|
c->bdsp.idct_put(dst, stride, dctblock); |
|
|
|
c->binkdsp.idct_put(dst, stride, dctblock); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case FILL_BLOCK: |
|
|
|
case FILL_BLOCK: |
|
|
|
v = get_value(c, BINK_SRC_COLORS); |
|
|
|
v = get_value(c, BINK_SRC_COLORS); |
|
|
@ -1140,7 +1140,7 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, |
|
|
|
memset(dctblock, 0, sizeof(*dctblock) * 64); |
|
|
|
memset(dctblock, 0, sizeof(*dctblock) * 64); |
|
|
|
dctblock[0] = get_value(c, BINK_SRC_INTER_DC); |
|
|
|
dctblock[0] = get_value(c, BINK_SRC_INTER_DC); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, bink_inter_quant, -1); |
|
|
|
read_dct_coeffs(gb, dctblock, bink_scan, bink_inter_quant, -1); |
|
|
|
c->bdsp.idct_add(dst, stride, dctblock); |
|
|
|
c->binkdsp.idct_add(dst, stride, dctblock); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case PATTERN_BLOCK: |
|
|
|
case PATTERN_BLOCK: |
|
|
|
for (i = 0; i < 2; i++) |
|
|
|
for (i = 0; i < 2; i++) |
|
|
@ -1312,7 +1312,7 @@ static av_cold int decode_init(AVCodecContext *avctx) |
|
|
|
|
|
|
|
|
|
|
|
ff_dsputil_init(&c->dsp, avctx); |
|
|
|
ff_dsputil_init(&c->dsp, avctx); |
|
|
|
ff_hpeldsp_init(&c->hdsp, avctx->flags); |
|
|
|
ff_hpeldsp_init(&c->hdsp, avctx->flags); |
|
|
|
ff_binkdsp_init(&c->bdsp); |
|
|
|
ff_binkdsp_init(&c->binkdsp); |
|
|
|
|
|
|
|
|
|
|
|
init_bundles(c); |
|
|
|
init_bundles(c); |
|
|
|
|
|
|
|
|
|
|
|