412 |
Statistics * pStat) |
Statistics * pStat) |
413 |
{ |
{ |
414 |
|
|
|
int intra = (pMB->mode == MODE_INTRA || pMB->mode == MODE_INTRA_Q); |
|
|
|
|
415 |
if (frame->coding_type == P_VOP) { |
if (frame->coding_type == P_VOP) { |
416 |
if (pMB->cbp == 0 && pMB->mode == MODE_INTER && pMB->mvs[0].x == 0 && |
if (pMB->cbp == 0 && pMB->mode == MODE_INTER && pMB->mvs[0].x == 0 && |
417 |
pMB->mvs[0].y == 0) { |
pMB->mvs[0].y == 0) { |
418 |
|
|
419 |
|
#ifdef _DISABLE_SKIP |
420 |
|
/* disable SKIP when Bframes active until some workaround for the B-SKIP problem is found */ |
421 |
|
BitstreamPutBit(bs, 0); // always coded! |
422 |
|
#else |
423 |
BitstreamPutBit(bs, 1); // not_coded |
BitstreamPutBit(bs, 1); // not_coded |
424 |
|
|
425 |
return; |
return; |
426 |
|
#endif |
427 |
} else |
} else |
428 |
BitstreamPutBit(bs, 0); // coded |
BitstreamPutBit(bs, 0); // coded |
429 |
} |
} |
430 |
|
|
431 |
if (intra) |
if (pMB->mode == MODE_INTRA || pMB->mode == MODE_INTRA_Q) |
432 |
CodeBlockIntra(frame, pMB, qcoeff, bs, pStat); |
CodeBlockIntra(frame, pMB, qcoeff, bs, pStat); |
433 |
else |
else |
434 |
CodeBlockInter(frame, pMB, qcoeff, bs, pStat); |
CodeBlockInter(frame, pMB, qcoeff, bs, pStat); |