|
|
@ -49,7 +49,7 @@ typedef struct { |
|
|
|
GetBitContext gb; |
|
|
|
GetBitContext gb; |
|
|
|
ScanTable scantable; |
|
|
|
ScanTable scantable; |
|
|
|
DSPContext dsp; |
|
|
|
DSPContext dsp; |
|
|
|
VLC vlc1; |
|
|
|
VLC vlc; |
|
|
|
} MimicContext; |
|
|
|
} MimicContext; |
|
|
|
|
|
|
|
|
|
|
|
static const uint32_t huffcodes[] = { |
|
|
|
static const uint32_t huffcodes[] = { |
|
|
@ -109,7 +109,7 @@ static av_cold int mimic_decode_init(AVCodecContext *avctx) |
|
|
|
ctx->prev_index = 0; |
|
|
|
ctx->prev_index = 0; |
|
|
|
ctx->cur_index = 15; |
|
|
|
ctx->cur_index = 15; |
|
|
|
|
|
|
|
|
|
|
|
if(init_vlc(&ctx->vlc1, 8, sizeof(huffbits)/sizeof(huffbits[0]), |
|
|
|
if(init_vlc(&ctx->vlc, 8, sizeof(huffbits)/sizeof(huffbits[0]), |
|
|
|
huffbits, 1, 1, huffcodes, 4, 4, 0)) { |
|
|
|
huffbits, 1, 1, huffcodes, 4, 4, 0)) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "error initializing vlc table\n"); |
|
|
|
av_log(avctx, AV_LOG_ERROR, "error initializing vlc table\n"); |
|
|
|
return -1; |
|
|
|
return -1; |
|
|
@ -171,7 +171,7 @@ static int vlc_decode_block(MimicContext *ctx, DCTELEM *block, int num_coeffs, |
|
|
|
int value; |
|
|
|
int value; |
|
|
|
int coeff; |
|
|
|
int coeff; |
|
|
|
|
|
|
|
|
|
|
|
vlc = get_vlc2(&ctx->gb, ctx->vlc1.table, ctx->vlc1.bits, 4); |
|
|
|
vlc = get_vlc2(&ctx->gb, ctx->vlc.table, ctx->vlc.bits, 4); |
|
|
|
if(!vlc) /* end-of-block code */ |
|
|
|
if(!vlc) /* end-of-block code */ |
|
|
|
return 1; |
|
|
|
return 1; |
|
|
|
if(vlc == -1) |
|
|
|
if(vlc == -1) |
|
|
@ -380,7 +380,7 @@ static av_cold int mimic_decode_end(AVCodecContext *avctx) |
|
|
|
for(i = 0; i < 16; i++) |
|
|
|
for(i = 0; i < 16; i++) |
|
|
|
if(ctx->buf_ptrs[i].data[0]) |
|
|
|
if(ctx->buf_ptrs[i].data[0]) |
|
|
|
avctx->release_buffer(avctx, &ctx->buf_ptrs[i]); |
|
|
|
avctx->release_buffer(avctx, &ctx->buf_ptrs[i]); |
|
|
|
free_vlc(&ctx->vlc1); |
|
|
|
free_vlc(&ctx->vlc); |
|
|
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|