Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> --- libavcodec/sheervideo.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-)
diff --git a/libavcodec/sheervideo.c b/libavcodec/sheervideo.c index e41645e..88fb174 100644 --- a/libavcodec/sheervideo.c +++ b/libavcodec/sheervideo.c @@ -1029,14 +1029,15 @@ static int decode_frame(AVCodecContext *avctx, unsigned format; int ret; - if (avpkt->size <= 20) - return AVERROR_INVALIDDATA; - - if (AV_RL32(avpkt->data) != MKTAG('S','h','i','r')) - return AVERROR_INVALIDDATA; +// if (avpkt->size <= 20) +// return AVERROR_INVALIDDATA; +// +// if (AV_RL32(avpkt->data) != MKTAG('S','h','i','r')) +// return AVERROR_INVALIDDATA; format = AV_RL32(avpkt->data + 16); switch (format) { + default: case MKTAG(' ', 'R', 'G', 'B'): avctx->pix_fmt = AV_PIX_FMT_RGB0; s->lut_l[0] = (uint8_t *)&lut_r; @@ -1059,11 +1060,31 @@ static int decode_frame(AVCodecContext *avctx, s->lut_s[3] = (uint8_t *)&lut_sbg; s->decode_frame = decode_argb; break; - default: + avpriv_report_missing_feature(avctx, "unsupported format: 0x%X", format); return AVERROR_PATCHWELCOME; } + for(int table=0; table < 3; table++) { + uint8_t array[32]; + uint64_t index=0; + int code, len; + av_log(0,0, "Table %d\n", table); + for(;;) { + AV_WB64(array, index); + if ((ret = init_get_bits8(&gb, array, sizeof(array))) < 0) + return ret; + code = get_vlc3(&gb, s->lut_l[table], s->lut_s[table]) & 0xFF; + len = get_bits_count(&gb); + av_log(0,0, "code: %5d, len:%2d, bits:%8LX\n", code, len, index >> (64 - len)); + index += 1ULL << (64-len); + if(!index) + break; + } + } + exit(0); + + p->pict_type = AV_PICTURE_TYPE_I; p->key_frame = 1; -- 1.7.9.5 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel