50 #define V2_INTRA_CBPC_VLC_BITS 3
51 #define V2_MB_TYPE_VLC_BITS 7
53 #define V2_MV_VLC_BITS 9
54 #define TEX_VLC_BITS 9
56 #define DEFAULT_INTER_INDEX 3
62 int level, uni_code, uni_len;
64 for(level=-256; level<256; level++){
75 l= (-
level) ^ ((1 << size) - 1);
82 uni_code ^= (1<<uni_len)-1;
85 uni_code<<=
size; uni_code|=l;
88 uni_code<<=1; uni_code|=1;
98 uni_code ^= (1<<uni_len)-1;
101 uni_code<<=
size; uni_code|=l;
104 uni_code<<=1; uni_code|=1;
116 static int initialized=0;
138 #if CONFIG_VC1_DECODER
215 return FASTDIV((sum + (scale>>1)), scale);
220 int16_t **dc_val_ptr,
int *dir_ptr)
239 b = dc_val[ - 1 -
wrap];
250 #if ARCH_X86 && HAVE_7REGS && HAVE_EBX_AVAILABLE
252 "movl %3, %%eax \n\t"
253 "shrl $1, %%eax \n\t"
254 "addl %%eax, %2 \n\t"
255 "addl %%eax, %1 \n\t"
256 "addl %0, %%eax \n\t"
258 "movl %%edx, %0 \n\t"
259 "movl %1, %%eax \n\t"
261 "movl %%edx, %1 \n\t"
262 "movl %2, %%eax \n\t"
264 "movl %%edx, %2 \n\t"
265 :
"+b" (a),
"+c" (b),
"+D" (c)
275 a = (a + (8 >> 1)) / 8;
276 b = (b + (8 >> 1)) / 8;
277 c = (c + (8 >> 1)) / 8;
279 a =
FASTDIV((a + (scale >> 1)), scale);
280 b =
FASTDIV((b + (scale >> 1)), scale);
281 c =
FASTDIV((c + (scale >> 1)), scale);
298 if (abs(a - b) < abs(b - c)) {
313 if(s->
mb_x==0) a= (1024 + (scale>>1))/
scale;
314 else a=
get_dc(dest-8, wrap, scale*8);
315 if(s->
mb_y==0) c= (1024 + (scale>>1))/
scale;
316 else c=
get_dc(dest-8*wrap, wrap, scale*8);
343 if (abs(a - b) < abs(b - c)) {
352 if (abs(a - b) <= abs(b - c)) {
362 *dc_val_ptr = &dc_val[0];
380 int code, val, sign, shift;
383 av_dlog(s,
"MV code %d at %d %d pred: %d\n", code, s->
mb_x,s->
mb_y, pred);
393 val = (val - 1) << shift;
433 if(code<0 || code>7){
485 for (i = 0; i < 6; i++) {
534 int val = ((code >> (5 - i)) & 1);
540 cbp |= val << (5 - i);
560 ((cbp & 3) ? 1 : 0) +((cbp & 0x3C)? 2 : 0),
576 for (i = 0; i < 6; i++) {
702 if(start_code!=0x00000100){
720 if(!had_i)
return -1;
856 if(left>=length && left<length+8)
865 else if(left<length+8)
907 }
else if (level != 0) {
938 int n,
int coded,
const uint8_t *scan_table)
979 if (dc_pred_dir == 0)
989 qadd = (s->
qscale - 1) | 1;
1058 if(sign) level= -
level;
1061 #if 0 // waste of time / this will detect very few errors
1063 const int abs_level=
FFABS(level);
1064 const int run1= run - rl->
max_run[last][abs_level] - run_diff;
1066 if(abs_level <= rl->max_level[last][run]){
1068 return DECODING_AC_LOST;
1070 if(abs_level <= rl->max_level[last][run]*2){
1072 return DECODING_AC_LOST;
1074 if(run1>=0 && abs_level <= rl->max_level[last][run1]){
1076 return DECODING_AC_LOST;
1082 if (level>0) level= level * qmul + qadd;
1083 else level= level * qmul - qadd;
1084 #if 0 // waste of time too :(
1085 if(level>2048 || level<-2048){
1087 return DECODING_AC_LOST;
1092 #ifdef ERROR_DETAILS
1095 else if((i>62 && i<192) || i>192+63)
1102 i+= run + rl->
max_run[run>>7][level/qmul] + run_diff;
1105 #ifdef ERROR_DETAILS
1108 else if((i>62 && i<192) || i>192+63)
1117 level = level + rl->
max_level[run>>7][(run-1)&63] * qmul;
1120 #ifdef ERROR_DETAILS
1123 else if((i>62 && i<192) || i>192+63)
1131 #ifdef ERROR_DETAILS
1134 else if((i>62 && i<192) || i>192+63)
1151 block[scan_table[i]] =
level;
1155 block[scan_table[i]] =
level;
1173 int *mx_ptr,
int *my_ptr)
1185 if (code == mv->
n) {
1211 .
name =
"msmpeg4v1",
1224 .
name =
"msmpeg4v2",