MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / asv2_encode_block

Function asv2_encode_block

libavcodec/asv1.c:270–307  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

268}
269
270static inline void asv2_encode_block(ASV1Context *a, DCTELEM block[64]){
271 int i;
272 int count=0;
273
274 for(count=63; count>3; count--){
275 const int index= scantab[count];
276
277 if( (block[index]*a->q_intra_matrix[index] + (1<<15))>>16 )
278 break;
279 }
280
281 count >>= 2;
282
283 asv2_put_bits(&a->pb, 4, count);
284 asv2_put_bits(&a->pb, 8, (block[0] + 32)>>6);
285 block[0]= 0;
286
287 for(i=0; i<=count; i++){
288 const int index= scantab[4*i];
289 int ccp=0;
290
291 if( (block[index + 0] = (block[index + 0]*a->q_intra_matrix[index + 0] + (1<<15))>>16) ) ccp |= 8;
292 if( (block[index + 8] = (block[index + 8]*a->q_intra_matrix[index + 8] + (1<<15))>>16) ) ccp |= 4;
293 if( (block[index + 1] = (block[index + 1]*a->q_intra_matrix[index + 1] + (1<<15))>>16) ) ccp |= 2;
294 if( (block[index + 9] = (block[index + 9]*a->q_intra_matrix[index + 9] + (1<<15))>>16) ) ccp |= 1;
295
296 assert(i || ccp<8);
297 if(i) put_bits(&a->pb, ac_ccp_tab[ccp][1], ac_ccp_tab[ccp][0]);
298 else put_bits(&a->pb, dc_ccp_tab[ccp][1], dc_ccp_tab[ccp][0]);
299
300 if(ccp){
301 if(ccp&8) asv2_put_level(&a->pb, block[index + 0]);
302 if(ccp&4) asv2_put_level(&a->pb, block[index + 8]);
303 if(ccp&2) asv2_put_level(&a->pb, block[index + 1]);
304 if(ccp&1) asv2_put_level(&a->pb, block[index + 9]);
305 }
306 }
307}
308
309static inline int decode_mb(ASV1Context *a, DCTELEM block[6][64]){
310 int i;

Callers 1

encode_mbFunction · 0.85

Calls 2

asv2_put_bitsFunction · 0.85
asv2_put_levelFunction · 0.85

Tested by

no test coverage detected