| 235 | } |
| 236 | |
| 237 | static inline void asv1_encode_block(ASV1Context *a, DCTELEM block[64]){ |
| 238 | int i; |
| 239 | int nc_count=0; |
| 240 | |
| 241 | put_bits(&a->pb, 8, (block[0] + 32)>>6); |
| 242 | block[0]= 0; |
| 243 | |
| 244 | for(i=0; i<10; i++){ |
| 245 | const int index= scantab[4*i]; |
| 246 | int ccp=0; |
| 247 | |
| 248 | if( (block[index + 0] = (block[index + 0]*a->q_intra_matrix[index + 0] + (1<<15))>>16) ) ccp |= 8; |
| 249 | if( (block[index + 8] = (block[index + 8]*a->q_intra_matrix[index + 8] + (1<<15))>>16) ) ccp |= 4; |
| 250 | if( (block[index + 1] = (block[index + 1]*a->q_intra_matrix[index + 1] + (1<<15))>>16) ) ccp |= 2; |
| 251 | if( (block[index + 9] = (block[index + 9]*a->q_intra_matrix[index + 9] + (1<<15))>>16) ) ccp |= 1; |
| 252 | |
| 253 | if(ccp){ |
| 254 | for(;nc_count; nc_count--) |
| 255 | put_bits(&a->pb, ccp_tab[0][1], ccp_tab[0][0]); |
| 256 | |
| 257 | put_bits(&a->pb, ccp_tab[ccp][1], ccp_tab[ccp][0]); |
| 258 | |
| 259 | if(ccp&8) asv1_put_level(&a->pb, block[index + 0]); |
| 260 | if(ccp&4) asv1_put_level(&a->pb, block[index + 8]); |
| 261 | if(ccp&2) asv1_put_level(&a->pb, block[index + 1]); |
| 262 | if(ccp&1) asv1_put_level(&a->pb, block[index + 9]); |
| 263 | }else{ |
| 264 | nc_count++; |
| 265 | } |
| 266 | } |
| 267 | put_bits(&a->pb, ccp_tab[16][1], ccp_tab[16][0]); |
| 268 | } |
| 269 | |
| 270 | static inline void asv2_encode_block(ASV1Context *a, DCTELEM block[64]){ |
| 271 | int i; |
no test coverage detected