History

refine frame rate

ruil2 committed 11 years ago

Commit cf6450b1 parent 59aee605 files · +7704 −7699Browse files

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

Unified · Split

codec/encoder/core/src/encoder_ext.cpp+12−8
@@ -157,6 +157,7 @@ int32_t ParamValidation (SLogContext* pLogCtx, SWelsSvcCodingParam* pCfg) { · 156 unmodified lines
157157 }
158158 for (i = 0; i < pCfg->iSpatialLayerNum; ++ i) {
159159 SSpatialLayerInternal* fDlp = &pCfg->sDependencyLayers[i];
160+ SSpatialLayerConfig* pConfig = &pCfg->sSpatialLayers[i];
160161 if (fDlp->fOutputFrameRate > fDlp->fInputFrameRate || (fDlp->fInputFrameRate >= -fEpsn
161162 && fDlp->fInputFrameRate <= fEpsn)
162163 || (fDlp->fOutputFrameRate >= -fEpsn && fDlp->fOutputFrameRate <= fEpsn)) {
@@ -170,6 +171,7 @@ int32_t ParamValidation (SLogContext* pLogCtx, SWelsSvcCodingParam* pCfg) { · 7 unmodified lines
170171 "AUTO CORRECT: Invalid settings in input frame rate(%.6f) and output frame rate(%.6f) of layer #%d config file: iResult of output frame rate divided by input frame rate should be power of 2(i.e,in/pOut=2^n). \n Auto correcting Output Framerate to Input Framerate %f!\n",
171172 fDlp->fInputFrameRate, fDlp->fOutputFrameRate, i, fDlp->fInputFrameRate);
172173 fDlp->fOutputFrameRate = fDlp->fInputFrameRate;
174+ pConfig->fFrameRate = fDlp->fOutputFrameRate;
173175 }
174176 }
175177
@@ -483,7 +485,8 @@ int32_t ParamValidationExt (SLogContext* pLogCtx, SWelsSvcCodingParam* pCodingPa · 307 unmodified lines
483485
484486
485487 void WelsEncoderApplyFrameRate (SWelsSvcCodingParam* pParam) {
486− SSpatialLayerInternal* pLayerParam;
488+ SSpatialLayerInternal* pLayerParamInternal;
489+ SSpatialLayerConfig* pLayerParam;
487490 const float kfEpsn = 0.000001f;
488491 const int32_t kiNumLayer = pParam->iSpatialLayerNum;
489492 int32_t i;
@@ -493,14 +496,15 @@ void WelsEncoderApplyFrameRate (SWelsSvcCodingParam* pParam) { · 3 unmodified lines
493496
494497 //set input frame rate to each layer
495498 for (i = 0; i < kiNumLayer; i++) {
496− pLayerParam = & (pParam->sDependencyLayers[i]);
497−
498− fRatio = pLayerParam->fOutputFrameRate / pLayerParam->fInputFrameRate;
499− if ((kfMaxFrameRate - pLayerParam->fInputFrameRate) > kfEpsn
500− || (kfMaxFrameRate - pLayerParam->fInputFrameRate) < -kfEpsn) {
501− pLayerParam->fInputFrameRate = kfMaxFrameRate;
499+ pLayerParamInternal = & (pParam->sDependencyLayers[i]);
500+ pLayerParam = & (pParam->sSpatialLayers[i]);
501+ fRatio = pLayerParamInternal->fOutputFrameRate / pLayerParamInternal->fInputFrameRate;
502+ if ((kfMaxFrameRate - pLayerParamInternal->fInputFrameRate) > kfEpsn
503+ || (kfMaxFrameRate - pLayerParamInternal->fInputFrameRate) < -kfEpsn) {
504+ pLayerParamInternal->fInputFrameRate = kfMaxFrameRate;
502505 fTargetOutputFrameRate = kfMaxFrameRate * fRatio;
503− pLayerParam->fOutputFrameRate = (fTargetOutputFrameRate >= 6) ? fTargetOutputFrameRate : (pLayerParam->fInputFrameRate);
506+ pLayerParamInternal->fOutputFrameRate = (fTargetOutputFrameRate >= 6) ? fTargetOutputFrameRate : (pLayerParamInternal->fInputFrameRate);
507+ pLayerParam->fFrameRate = pLayerParamInternal->fOutputFrameRate;
504508 //TODO:{Sijia} from design, there is no sense to have temporal layer when under 6fps even with such setting?
505509 }
506510 }

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