Mercurial > libavcodec.hg
comparison mjpeg.c @ 1275:61317ffc64d5 libavcodec
cleanup
author | michaelni |
---|---|
date | Tue, 20 May 2003 01:03:40 +0000 |
parents | ec946cb74397 |
children | 8623c2e29555 |
comparison
equal
deleted
inserted
replaced
1274:95061e8c5ea9 | 1275:61317ffc64d5 |
---|---|
901 } | 901 } |
902 | 902 |
903 static inline int mjpeg_decode_dc(MJpegDecodeContext *s, int dc_index) | 903 static inline int mjpeg_decode_dc(MJpegDecodeContext *s, int dc_index) |
904 { | 904 { |
905 int code, diff; | 905 int code, diff; |
906 #if 1 | |
907 code = get_vlc2(&s->gb, s->vlcs[0][dc_index].table, 9, 2); | 906 code = get_vlc2(&s->gb, s->vlcs[0][dc_index].table, 9, 2); |
908 #else | |
909 code = get_vlc(&s->gb, &s->vlcs[0][dc_index]); | |
910 #endif | |
911 if (code < 0) | 907 if (code < 0) |
912 { | 908 { |
913 dprintf("mjpeg_decode_dc: bad vlc: %d:%d (%p)\n", 0, dc_index, | 909 dprintf("mjpeg_decode_dc: bad vlc: %d:%d (%p)\n", 0, dc_index, |
914 &s->vlcs[0][dc_index]); | 910 &s->vlcs[0][dc_index]); |
915 return 0xffff; | 911 return 0xffff; |
916 } | 912 } |
917 if (code == 0) { | 913 if (code == 0) { |
918 diff = 0; | 914 diff = 0; |
919 } else { | 915 } else { |
920 diff = get_bits(&s->gb, code); | 916 diff = get_xbits(&s->gb, code); |
921 if ((diff & (1 << (code - 1))) == 0) | |
922 diff = (-1 << code) | (diff + 1); | |
923 } | 917 } |
924 return diff; | 918 return diff; |
925 } | 919 } |
926 | 920 |
927 /* decode block and dequantize */ | 921 /* decode block and dequantize */ |
945 block[0] = val; | 939 block[0] = val; |
946 /* AC coefs */ | 940 /* AC coefs */ |
947 ac_vlc = &s->vlcs[1][ac_index]; | 941 ac_vlc = &s->vlcs[1][ac_index]; |
948 i = 1; | 942 i = 1; |
949 for(;;) { | 943 for(;;) { |
950 #if 1 | |
951 code = get_vlc2(&s->gb, s->vlcs[1][ac_index].table, 9, 2); | 944 code = get_vlc2(&s->gb, s->vlcs[1][ac_index].table, 9, 2); |
952 #else | 945 |
953 code = get_vlc(&s->gb, ac_vlc); | |
954 #endif | |
955 if (code < 0) { | 946 if (code < 0) { |
956 dprintf("error ac\n"); | 947 dprintf("error ac\n"); |
957 return -1; | 948 return -1; |
958 } | 949 } |
959 /* EOB */ | 950 /* EOB */ |
962 if (code == 0xf0) { | 953 if (code == 0xf0) { |
963 i += 16; | 954 i += 16; |
964 } else { | 955 } else { |
965 run = code >> 4; | 956 run = code >> 4; |
966 nbits = code & 0xf; | 957 nbits = code & 0xf; |
967 level = get_bits(&s->gb, nbits); | 958 level = get_xbits(&s->gb, nbits); |
968 if ((level & (1 << (nbits - 1))) == 0) | |
969 level = (-1 << nbits) | (level + 1); | |
970 i += run; | 959 i += run; |
971 if (i >= 64) { | 960 if (i >= 64) { |
972 dprintf("error count: %d\n", i); | 961 dprintf("error count: %d\n", i); |
973 return -1; | 962 return -1; |
974 } | 963 } |