39 |
* MinChen <chenm001@163.com> |
* MinChen <chenm001@163.com> |
40 |
* 14.04.2002 added FrameCodeB() |
* 14.04.2002 added FrameCodeB() |
41 |
* |
* |
42 |
* $Id: encoder.c,v 1.76.2.39 2003-01-15 14:36:06 syskin Exp $ |
* $Id: encoder.c,v 1.76.2.40 2003-01-21 22:05:44 edgomez Exp $ |
43 |
* |
* |
44 |
****************************************************************************/ |
****************************************************************************/ |
45 |
|
|
229 |
|
|
230 |
pEnc->bitrate = pParam->rc_bitrate; |
pEnc->bitrate = pParam->rc_bitrate; |
231 |
|
|
232 |
pEnc->iFrameNum = 0; |
pEnc->iFrameNum = -1; |
233 |
pEnc->mbParam.iMaxKeyInterval = pParam->max_key_interval; |
pEnc->mbParam.iMaxKeyInterval = pParam->max_key_interval; |
234 |
|
|
235 |
/* try to allocate frame memory */ |
/* try to allocate frame memory */ |
661 |
if (intra < 0) return -1; |
if (intra < 0) return -1; |
662 |
if (intra == 1) return I_VOP; |
if (intra == 1) return I_VOP; |
663 |
if (intra == 2) return B_VOP; |
if (intra == 2) return B_VOP; |
|
if (intra == 3) return S_VOP; |
|
664 |
|
|
665 |
return P_VOP; |
return P_VOP; |
666 |
} |
} |
732 |
|
|
733 |
BitstreamPadAlways(&bs); |
BitstreamPadAlways(&bs); |
734 |
pFrame->length = BitstreamLength(&bs); |
pFrame->length = BitstreamLength(&bs); |
|
if(pEnc->current->coding_type == P_VOP) |
|
735 |
pFrame->intra = 0; |
pFrame->intra = 0; |
736 |
else |
|
|
pFrame->intra = 3; |
|
737 |
|
|
738 |
emms(); |
emms(); |
739 |
|
|
1060 |
} |
} |
1061 |
FrameCodeP(pEnc, &bs, &bits, 1, 0); |
FrameCodeP(pEnc, &bs, &bits, 1, 0); |
1062 |
bframes_count = 0; |
bframes_count = 0; |
|
|
|
|
if(pEnc->current->coding_type == P_VOP) |
|
1063 |
pFrame->intra = 0; |
pFrame->intra = 0; |
|
else |
|
|
pFrame->intra = 3; |
|
|
|
|
1064 |
|
|
1065 |
} else { |
} else { |
1066 |
|
|
1098 |
|
|
1099 |
FrameCodeP(pEnc, &bs, &bits, 1, 0); |
FrameCodeP(pEnc, &bs, &bits, 1, 0); |
1100 |
bframes_count = 0; |
bframes_count = 0; |
|
if(pEnc->current->coding_type == P_VOP) |
|
1101 |
pFrame->intra = 0; |
pFrame->intra = 0; |
|
else |
|
|
pFrame->intra = 3; |
|
1102 |
pEnc->flush_bframes = 1; |
pEnc->flush_bframes = 1; |
1103 |
|
|
1104 |
if ((pEnc->mbParam.global & XVID_GLOBAL_PACKED) && (pEnc->bframenum_tail > 0)) { |
if ((pEnc->mbParam.global & XVID_GLOBAL_PACKED) && (pEnc->bframenum_tail > 0)) { |