+ { /* consider I-block */
+ fblock_t fb_i;
+ int y,c;
+ memcpy(&fb_i, &fb, sizeof(fblock_t));
+ dodct(&fb_i);
+ quantize(&fb_i, &b_i, 1, *quant);
+ getblockpatterns(&b_i, &y, &c, 1);
+ bits_i = 1; //cod
+ bits_i += mcbpc_inter[3*4+c].len;
+ bits_i += cbpy[y].len;
+ bits_i += coefbits8x8(b_i.y1, 1);
+ bits_i += coefbits8x8(b_i.y2, 1);
+ bits_i += coefbits8x8(b_i.y3, 1);
+ bits_i += coefbits8x8(b_i.y4, 1);
+ bits_i += coefbits8x8(b_i.u, 1);
+ bits_i += coefbits8x8(b_i.v, 1);
+ }
+
+ { /* consider mvd(0,0)-block */
+ fblock_t fbdiff;
+ int y,c;
+ memcpy(&fbdiff, &fb, sizeof(fblock_t));
+ getregion(&fbold_v00, s->oldpic, bx, by, s->linex);
+ yuvdiff(&fbdiff, &fbold_v00);
+ dodct(&fbdiff);
+ quantize(&fbdiff, &b_v00, 0, *quant);
+ getblockpatterns(&b_v00, &y, &c, 0);
+ bits_v00 = 1; //cod
+ bits_v00 += mcbpc_inter[0*4+c].len;
+ bits_v00 += cbpy[y^15].len;
+ bits_v00 += mvd[32].len; // (0,0)
+ bits_v00 += mvd[32].len;
+ bits_v00 += coefbits8x8(b_v00.y1, 0);
+ bits_v00 += coefbits8x8(b_v00.y2, 0);
+ bits_v00 += coefbits8x8(b_v00.y3, 0);
+ bits_v00 += coefbits8x8(b_v00.y4, 0);
+ bits_v00 += coefbits8x8(b_v00.u, 0);
+ bits_v00 += coefbits8x8(b_v00.v, 0);
+ }
+
+ if(bits_i > bits_v00)