|
|
@ -282,27 +282,16 @@ static int mimic_decode_frame(AVCodecContext *avctx, void *data, |
|
|
|
int quality, num_coeffs; |
|
|
|
int quality, num_coeffs; |
|
|
|
int swap_buf_size = buf_size - MIMIC_HEADER_SIZE; |
|
|
|
int swap_buf_size = buf_size - MIMIC_HEADER_SIZE; |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
* Header structure: |
|
|
|
|
|
|
|
* uint16_t I_dont_remember; |
|
|
|
|
|
|
|
* uint16_t quality; |
|
|
|
|
|
|
|
* uint16_t width; |
|
|
|
|
|
|
|
* uint16_t height; |
|
|
|
|
|
|
|
* uint32_t some_constant; |
|
|
|
|
|
|
|
* uint32_t is_pframe; |
|
|
|
|
|
|
|
* uint32_t num_coeffs; |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(buf_size < MIMIC_HEADER_SIZE) { |
|
|
|
if(buf_size < MIMIC_HEADER_SIZE) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "insufficient data\n"); |
|
|
|
av_log(avctx, AV_LOG_ERROR, "insufficient data\n"); |
|
|
|
return -1; |
|
|
|
return -1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
buf += 2; |
|
|
|
buf += 2; /* some constant (always 256) */ |
|
|
|
quality = bytestream_get_le16(&buf); |
|
|
|
quality = bytestream_get_le16(&buf); |
|
|
|
width = bytestream_get_le16(&buf); |
|
|
|
width = bytestream_get_le16(&buf); |
|
|
|
height = bytestream_get_le16(&buf); |
|
|
|
height = bytestream_get_le16(&buf); |
|
|
|
buf += 4; |
|
|
|
buf += 4; /* some constant */ |
|
|
|
is_pframe = bytestream_get_le32(&buf); |
|
|
|
is_pframe = bytestream_get_le32(&buf); |
|
|
|
num_coeffs = bytestream_get_le32(&buf); |
|
|
|
num_coeffs = bytestream_get_le32(&buf); |
|
|
|
|
|
|
|
|
|
|
|