+ int avail[6*8] = {0}; + DCTELEM *ptr = s->block[0]; + int i, j, itype, has_ac; + + // Set neighbour information. + if(r->avail_cache[1]) + avail[0] = 1; + if(r->avail_cache[2]) + avail[1] = avail[2] = 1; + if(r->avail_cache[3]) + avail[3] = avail[4] = 1; + if(r->avail_cache[4]) + avail[5] = 1; + if(r->avail_cache[5]) + avail[8] = avail[16] = 1; + if(r->avail_cache[9]) + avail[24] = avail[32] = 1;
You set all these values, but avail[] is never used. + if(cbp & 1){ + dsp->clear_block(ptr); Not part of this patch, but is it possible to do the same optimization here that I did in VP8: have idct clear the block, thus avoiding the need for a separate clear_block call? + for(i = 0; i < 4; i++, cbp >>= 1){ + uint8_t *pdst; + if(!(cbp & 1)) continue; Here's a really evil way of doing this that I used in VP8. int tmpcbp = cbp&0xf; for(; tmpcbp ; tmpcbp >>= 1){ Jason _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel