1609 |
memcpy((void *)((ptr_t)bs->start + pos), |
memcpy((void *)((ptr_t)bs->start + pos), |
1610 |
(void *)((ptr_t)pEnc->smpData[k].bs->start), len); |
(void *)((ptr_t)pEnc->smpData[k].bs->start), len); |
1611 |
|
|
1612 |
current->length += len; |
current->length = pos += len; |
|
pos += len; |
|
1613 |
|
|
1614 |
/* collect stats */ |
/* collect stats */ |
1615 |
current->sStat.iTextBits += pEnc->smpData[k].sStat->iTextBits; |
current->sStat.iTextBits += pEnc->smpData[k].sStat->iTextBits; |
1916 |
if (!reference->is_edged) { |
if (!reference->is_edged) { |
1917 |
start_timer(); |
start_timer(); |
1918 |
image_setedges(pRef, pParam->edged_width, pParam->edged_height, |
image_setedges(pRef, pParam->edged_width, pParam->edged_height, |
1919 |
pParam->width, pParam->height, XVID_BS_VERSION); |
pParam->width, pParam->height, 0); |
1920 |
stop_edges_timer(); |
stop_edges_timer(); |
1921 |
reference->is_edged = 1; |
reference->is_edged = 1; |
1922 |
} |
} |
2129 |
|
|
2130 |
if (current->sStat.kblks + current->sStat.mblks < |
if (current->sStat.kblks + current->sStat.mblks < |
2131 |
(pParam->frame_drop_ratio * mb_width * mb_height) / 100 && |
(pParam->frame_drop_ratio * mb_width * mb_height) / 100 && |
2132 |
( (pEnc->bframenum_head >= pEnc->bframenum_tail) || !(pEnc->mbParam.global_flags & XVID_GLOBAL_CLOSED_GOP)) && |
( (pEnc->bframenum_head >= pEnc->bframenum_tail) || !(pEnc->mbParam.global_flags & XVID_GLOBAL_CLOSED_GOP)) ) |
|
(current->coding_type == P_VOP) ) |
|
2133 |
{ |
{ |
2134 |
current->sStat.kblks = current->sStat.mblks = current->sStat.iTextBits = 0; |
current->sStat.kblks = current->sStat.mblks = current->sStat.iTextBits = 0; |
2135 |
current->sStat.ublks = mb_width * mb_height; |
current->sStat.ublks = mb_width * mb_height; |
2301 |
if (!pEnc->reference->is_edged) { |
if (!pEnc->reference->is_edged) { |
2302 |
image_setedges(f_ref, pEnc->mbParam.edged_width, |
image_setedges(f_ref, pEnc->mbParam.edged_width, |
2303 |
pEnc->mbParam.edged_height, pEnc->mbParam.width, |
pEnc->mbParam.edged_height, pEnc->mbParam.width, |
2304 |
pEnc->mbParam.height, XVID_BS_VERSION); |
pEnc->mbParam.height, 0); |
2305 |
pEnc->reference->is_edged = 1; |
pEnc->current->is_edged = 1; |
2306 |
} |
} |
2307 |
|
|
2308 |
if (pEnc->reference->is_interpolated != 0) { |
if (pEnc->reference->is_interpolated != 0) { |
2318 |
if (!pEnc->current->is_edged) { |
if (!pEnc->current->is_edged) { |
2319 |
image_setedges(b_ref, pEnc->mbParam.edged_width, |
image_setedges(b_ref, pEnc->mbParam.edged_width, |
2320 |
pEnc->mbParam.edged_height, pEnc->mbParam.width, |
pEnc->mbParam.edged_height, pEnc->mbParam.width, |
2321 |
pEnc->mbParam.height, XVID_BS_VERSION); |
pEnc->mbParam.height, 0); |
2322 |
pEnc->current->is_edged = 1; |
pEnc->current->is_edged = 1; |
2323 |
} |
} |
2324 |
|
|
2333 |
|
|
2334 |
frame->coding_type = B_VOP; |
frame->coding_type = B_VOP; |
2335 |
|
|
2336 |
if ((frame->vop_flags & XVID_VOP_RD_PSNRHVSM) && (frame->vop_flags & XVID_VOP_RD_BVOP)) { |
if (pEnc->current->vop_flags & XVID_VOP_RD_PSNRHVSM) { |
2337 |
image_block_variance(&frame->image, pEnc->mbParam.edged_width, frame->mbs, |
image_block_variance(&pEnc->current->image, pEnc->mbParam.edged_width, pEnc->current->mbs, |
2338 |
pEnc->mbParam.mb_width, pEnc->mbParam.mb_height); |
pEnc->mbParam.mb_width, pEnc->mbParam.mb_height); |
2339 |
} |
} |
2340 |
|
|