|
|
|
@ -115,8 +115,8 @@ static void init_idct(AVCodecContext *avctx) |
|
|
|
|
MJpegDecodeContext *s = avctx->priv_data; |
|
|
|
|
|
|
|
|
|
ff_idctdsp_init(&s->idsp, avctx); |
|
|
|
|
ff_init_scantable(s->idsp.idct_permutation, &s->scantable, |
|
|
|
|
ff_zigzag_direct); |
|
|
|
|
ff_permute_scantable(s->permutated_scantable, ff_zigzag_direct, |
|
|
|
|
s->idsp.idct_permutation); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) |
|
|
|
@ -846,7 +846,7 @@ static int decode_block(MJpegDecodeContext *s, int16_t *block, int component, |
|
|
|
|
av_log(s->avctx, AV_LOG_ERROR, "error count: %d\n", i); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
j = s->scantable.permutated[i]; |
|
|
|
|
j = s->permutated_scantable[i]; |
|
|
|
|
block[j] = level * quant_matrix[i]; |
|
|
|
|
} |
|
|
|
|
} while (i < 63); |
|
|
|
@ -909,14 +909,14 @@ static int decode_block_progressive(MJpegDecodeContext *s, int16_t *block, |
|
|
|
|
|
|
|
|
|
if (i >= se) { |
|
|
|
|
if (i == se) { |
|
|
|
|
j = s->scantable.permutated[se]; |
|
|
|
|
j = s->permutated_scantable[se]; |
|
|
|
|
block[j] = level * (quant_matrix[se] << Al); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
av_log(s->avctx, AV_LOG_ERROR, "error count: %d\n", i); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
j = s->scantable.permutated[i]; |
|
|
|
|
j = s->permutated_scantable[i]; |
|
|
|
|
block[j] = level * (quant_matrix[i] << Al); |
|
|
|
|
} else { |
|
|
|
|
if (run == 0xF) {// ZRL - skip 15 coefficients
|
|
|
|
@ -964,7 +964,7 @@ for (; ; i++) { \ |
|
|
|
|
} \
|
|
|
|
|
break; \
|
|
|
|
|
} \
|
|
|
|
|
j = s->scantable.permutated[i]; \
|
|
|
|
|
j = s->permutated_scantable[i]; \
|
|
|
|
|
if (block[j]) \
|
|
|
|
|
REFINE_BIT(j) \
|
|
|
|
|
else if (run-- == 0) \
|
|
|
|
@ -994,7 +994,7 @@ static int decode_block_refinement(MJpegDecodeContext *s, int16_t *block, |
|
|
|
|
val = SHOW_UBITS(re, &s->gb, 1); |
|
|
|
|
LAST_SKIP_BITS(re, &s->gb, 1); |
|
|
|
|
ZERO_RUN; |
|
|
|
|
j = s->scantable.permutated[i]; |
|
|
|
|
j = s->permutated_scantable[i]; |
|
|
|
|
val--; |
|
|
|
|
block[j] = ((quant_matrix[i] << Al) ^ val) - val; |
|
|
|
|
if (i == se) { |
|
|
|
@ -1026,7 +1026,7 @@ static int decode_block_refinement(MJpegDecodeContext *s, int16_t *block, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (; i <= last; i++) { |
|
|
|
|
j = s->scantable.permutated[i]; |
|
|
|
|
j = s->permutated_scantable[i]; |
|
|
|
|
if (block[j]) |
|
|
|
|
REFINE_BIT(j) |
|
|
|
|
} |
|
|
|
|