# HG changeset patch # User michael # Date 1186966435 0 # Node ID f0bee2532ecf16814dff276d13d6e37293cfdedb # Parent 80ee0d3dd53e7be81b21613a06f8fed6ec701b8d replace vlc_type by version and set that from codec_tag which contains the 4xm video version from the demuxer diff -r 80ee0d3dd53e -r f0bee2532ecf 4xm.c --- a/4xm.c Sun Aug 12 15:47:27 2007 +0000 +++ b/4xm.c Mon Aug 13 00:53:55 2007 +0000 @@ -138,7 +138,7 @@ DECLARE_ALIGNED_8(DCTELEM, block[6][64]); uint8_t *bitstream_buffer; unsigned int bitstream_buffer_size; - int vlc_type; + int version; CFrameBuffer cfrm[CFRAME_BUFFER_COUNT]; } FourXContext; @@ -296,7 +296,7 @@ static void decode_p_block(FourXContext *f, uint16_t *dst, uint16_t *src, int log2w, int log2h, int stride){ const int index= size2index[log2h][log2w]; const int h= 1<gb, block_type_vlc[f->vlc_type][index].table, BLOCK_TYPE_VLC_BITS, 1); + int code= get_vlc2(&f->gb, block_type_vlc[1-f->version][index].table, BLOCK_TYPE_VLC_BITS, 1); assert(code>=0 && code<=6); @@ -345,13 +345,11 @@ bitstream_size= get32(buf+8); wordstream_size= get32(buf+12); bytestream_size= get32(buf+16); - f->vlc_type= 0; }else{ extra=0; bitstream_size = AV_RL16(buf-4); wordstream_size= AV_RL16(buf-2); bytestream_size= FFMAX(length - bitstream_size - wordstream_size, 0); - f->vlc_type= 1; } if(bitstream_size+ bytestream_size+ wordstream_size + extra != length @@ -785,6 +783,7 @@ static int decode_init(AVCodecContext *avctx){ FourXContext * const f = avctx->priv_data; + f->version= avctx->codec_tag == 0x40000; common_init(avctx); init_vlcs(f);