52 |
* exception also makes it possible to release a modified version which |
* exception also makes it possible to release a modified version which |
53 |
* carries forward this exception. |
* carries forward this exception. |
54 |
* |
* |
55 |
* $Id: encoder.c,v 1.89 2002-11-28 07:27:37 suxen_drol Exp $ |
* $Id: encoder.c,v 1.90 2003-02-04 22:00:44 edgomez Exp $ |
56 |
* |
* |
57 |
****************************************************************************/ |
****************************************************************************/ |
58 |
|
|
636 |
return; |
return; |
637 |
} |
} |
638 |
|
|
639 |
pEnc->current->fcode = |
pEnc->current->fcode = (hint->rawhints != 0) ? |
640 |
(hint->rawhints) ? hint->mvhint.fcode : BitstreamGetBits(&bs, |
(uint32_t)hint->mvhint.fcode : BitstreamGetBits(&bs, FCODEBITS); |
|
FCODEBITS); |
|
641 |
|
|
642 |
length = pEnc->current->fcode + 5; |
length = pEnc->current->fcode + 5; |
643 |
high = 1 << (length - 1); |
high = 1 << (length - 1); |
652 |
VECTOR tmp; |
VECTOR tmp; |
653 |
int vec; |
int vec; |
654 |
|
|
655 |
pMB->mode = |
pMB->mode = (hint->rawhints != 0) ? |
656 |
(hint->rawhints) ? bhint->mode : BitstreamGetBits(&bs, |
(uint32_t)bhint->mode : BitstreamGetBits(&bs, MODEBITS); |
|
MODEBITS); |
|
657 |
|
|
658 |
pMB->mode = (pMB->mode == MODE_INTER_Q) ? MODE_INTER : pMB->mode; |
pMB->mode = (pMB->mode == MODE_INTER_Q) ? MODE_INTER : pMB->mode; |
659 |
pMB->mode = (pMB->mode == MODE_INTRA_Q) ? MODE_INTRA : pMB->mode; |
pMB->mode = (pMB->mode == MODE_INTRA_Q) ? MODE_INTRA : pMB->mode; |
660 |
|
|
661 |
if (pMB->mode == MODE_INTER) { |
if (pMB->mode == MODE_INTER) { |
662 |
tmp.x = |
tmp.x = (hint->rawhints) ? |
663 |
(hint->rawhints) ? bhint->mvs[0].x : BitstreamGetBits(&bs, |
bhint->mvs[0].x : (int)BitstreamGetBits(&bs, length); |
664 |
length); |
tmp.y = (hint->rawhints) ? |
665 |
tmp.y = |
bhint->mvs[0].y : (int)BitstreamGetBits(&bs, length); |
|
(hint->rawhints) ? bhint->mvs[0].y : BitstreamGetBits(&bs, |
|
|
length); |
|
666 |
tmp.x -= (tmp.x >= high) ? high * 2 : 0; |
tmp.x -= (tmp.x >= high) ? high * 2 : 0; |
667 |
tmp.y -= (tmp.y >= high) ? high * 2 : 0; |
tmp.y -= (tmp.y >= high) ? high * 2 : 0; |
668 |
|
|
676 |
} |
} |
677 |
} else if (pMB->mode == MODE_INTER4V) { |
} else if (pMB->mode == MODE_INTER4V) { |
678 |
for (vec = 0; vec < 4; ++vec) { |
for (vec = 0; vec < 4; ++vec) { |
679 |
tmp.x = |
tmp.x = (hint->rawhints) ? |
680 |
(hint->rawhints) ? bhint->mvs[vec]. |
bhint->mvs[vec].x : (int)BitstreamGetBits(&bs, length); |
681 |
x : BitstreamGetBits(&bs, length); |
tmp.y = (hint->rawhints) ? |
682 |
tmp.y = |
bhint->mvs[vec].y : (int)BitstreamGetBits(&bs, length); |
|
(hint->rawhints) ? bhint->mvs[vec]. |
|
|
y : BitstreamGetBits(&bs, length); |
|
683 |
tmp.x -= (tmp.x >= high) ? high * 2 : 0; |
tmp.x -= (tmp.x >= high) ? high * 2 : 0; |
684 |
tmp.y -= (tmp.y >= high) ? high * 2 : 0; |
tmp.y -= (tmp.y >= high) ? high * 2 : 0; |
685 |
|
|