History

add UNSPECIFIED value for max bit rate setting

Sijia Chen committed 11 years ago

Commit 0b2c82d1 parent 810b9773 files · +19 −3Browse files

Showing the changes to codec/encoder/core/src/encoder_ext.cpp (1 of 3 files). Show all

Unified · Split

codec/encoder/core/src/encoder_ext.cpp+15−1
@@ -494,6 +494,20 @@ void WelsEncoderApplyBitRate (SLogContext* pLogCtx, SWelsSvcCodingParam* pParam, · 493 unmodified lines
494494 pLayerParam = & (pParam->sSpatialLayers[i]);
495495 fRatio = pLayerParam->iSpatialBitrate / (static_cast<float> (iOrigTotalBitrate));
496496 pLayerParam->iSpatialBitrate = static_cast<int32_t> (pParam->iTargetBitrate * fRatio);
497+ if ( UNSPECIFIED_BIT_RATE != pLayerParam->iMaxSpatialBitrate && pLayerParam->iSpatialBitrate > pLayerParam->iMaxSpatialBitrate ) {
498+ WelsLog (pLogCtx, WELS_LOG_WARNING,
499+ "WelsEncoderApplyBitRate(), iSpatialBitrate(%d) > iMaxSpatialBitrate(%d) at Layer %d, limiting iSpatialBitrate to iMaxSpatialBitrate!",
500+ pLayerParam->iSpatialBitrate, pLayerParam->iMaxSpatialBitrate, iLayer);
501+ pLayerParam->iSpatialBitrate = pLayerParam->iMaxSpatialBitrate;
502+ }
503+ }
504+ } else {
505+ SSpatialLayerConfig* pLayerParam = & (pParam->sSpatialLayers[iLayer]);
506+ if ( UNSPECIFIED_BIT_RATE != pLayerParam->iMaxSpatialBitrate && pLayerParam->iSpatialBitrate > pLayerParam->iMaxSpatialBitrate ) {
507+ WelsLog (pLogCtx, WELS_LOG_WARNING,
508+ "WelsEncoderApplyBitRate(), iSpatialBitrate(%d) > iMaxSpatialBitrate(%d) at Layer %d, limiting iSpatialBitrate to iMaxSpatialBitrate!",
509+ pLayerParam->iSpatialBitrate, pLayerParam->iMaxSpatialBitrate, iLayer);
510+ pLayerParam->iSpatialBitrate = pLayerParam->iMaxSpatialBitrate;
497511 }
498512 }
499513 }
@@ -3005,7 +3019,7 @@ bool CheckFrameSkipBasedMaxbr (sWelsEncCtx* pCtx, int32_t iSpatialNum, EVideoFra · 2505 unmodified lines
30053019 if (pCtx->pSvcParam->bEnableFrameSkip) {
30063020 if ((RC_QUALITY_MODE == pCtx->pSvcParam->iRCMode) || (RC_BITRATE_MODE == pCtx->pSvcParam->iRCMode)) {
30073021 for (int32_t i = 0; i < iSpatialNum; i++) {
3008− if (0 == pCtx->pSvcParam->sSpatialLayers[i].iMaxSpatialBitrate) {
3022+ if (UNSPECIFIED_BIT_RATE == pCtx->pSvcParam->sSpatialLayers[i].iMaxSpatialBitrate) {
30093023 break;
30103024 }
30113025 pCtx->uiDependencyId = (uint8_t) (pSpatialIndexMap + i)->iDid;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t