[x265] [PATCH 1 of 9] pcs: update design to have 'm_achivedFps' for every PCS Instance
Praveen Tiwari
praveen at multicorewareinc.com
Thu Nov 17 16:23:16 CET 2016
Please, ignore this patch. Thanks.
On Thu, Nov 17, 2016 at 8:51 PM, <praveen at multicorewareinc.com> wrote:
> # HG changeset patch
> # User Praveen Tiwari <praveen at multicorewareinc.com>
> # Date 1479128885 -19800
> # Mon Nov 14 18:38:05 2016 +0530
> # Branch stable
> # Node ID 8defd4e7b2e4875247e4ec95e0dd3b9630983526
> # Parent bdf273f9521784ceeda868222d415303a0bcf58b
> pcs: update design to have 'm_achivedFps' for every PCS Instance
>
> diff -r bdf273f95217 -r 8defd4e7b2e4 source/api-uhdkit.cpp
> --- a/source/api-uhdkit.cpp Tue Nov 08 14:20:24 2016 +0530
> +++ b/source/api-uhdkit.cpp Mon Nov 14 18:38:05 2016 +0530
> @@ -206,8 +206,6 @@
> return -1;
> if (numEncoded > 0)
> {
> - uhdkitEnc->m_achievedFps = numEncoded * 1000000.0 /
> (double)(endTime - startTime);
> - uhdkitEnc->m_achievedFps = uhdkitEnc->m_achievedFps /
> uhdkitEnc->m_param->gops; // Achieved fps for each gop encoder
> uhdkitEnc->m_encodedFrameCount += numEncoded;
> controllerIndex = ((uhdkitEnc->m_encodedFrameCount - 1) /
> uhdkitEnc->m_param->x265Param->keyframeMax) % uhdkitEnc->m_param->gops;
> X265_CHECK(controllerIndex >= 0 && controllerIndex <
> uhdkitEnc->m_param->gops, "Invalid controllerIndex: %d, must be between 0
> and %d\n", controllerIndex, uhdkitEnc->m_param->gops);
> diff -r bdf273f95217 -r 8defd4e7b2e4 source/pcs/api-pcs.cpp
> --- a/source/pcs/api-pcs.cpp Tue Nov 08 14:20:24 2016 +0530
> +++ b/source/pcs/api-pcs.cpp Mon Nov 14 18:38:05 2016 +0530
> @@ -211,6 +211,7 @@
> m_pcsParam->statusPrintInterval = param->statusPrintInterval;
> m_curTimeStamp = m_lastTimeStamp = X265_NS::x265_mdate();
> m_framesWindow = 1;
> + m_achievedFps = 0.0;
> m_outFrameCountOfLastAccumulatorReset = 0;
> time(&m_lastStatusOutputTime);
>
> @@ -289,11 +290,11 @@
> int64_t elapsedEncTime = m_curTimeStamp - m_lastTimeStamp;
> int controllerIndex = ((uhdkitEnc->m_encodedFrameCount - 1) /
> uhdkitEnc->m_param->x265Param->keyframeMax) % uhdkitEnc->m_param->gops;
> X265_CHECK(controllerIndex >= 0 && controllerIndex <
> uhdkitEnc->m_param->gops, "Invalid controllerIndex: %d, must be between 0
> and %d\n", controllerIndex, uhdkitEnc->m_param->gops);
> - if (((m_bScenecut == 1) && elapsedEncTime > 0) || elapsedEncTime
> >= 300000 || uhdkitEnc->m_achievedFps < m_pcsParam->fpsSetPoint)
> + if (((m_bScenecut == 1) && elapsedEncTime > 0) || elapsedEncTime
> >= 300000 || m_achievedFps < m_pcsParam->fpsSetPoint)
> {
> // Don't allow outrageously high frame rate measurements to
> skew the controller.
> - uhdkitEnc->m_achievedFps = X265_MIN(uhdkitEnc->m_achievedFps,
> 4 * m_pcsParam->fpsSetPoint);
> - error = (m_pcsParam->fpsSetPoint - uhdkitEnc->m_achievedFps)
> / m_pcsParam->fpsSetPoint;
> + m_achievedFps = X265_MIN(m_achievedFps, 4 *
> m_pcsParam->fpsSetPoint);
> + error = (m_pcsParam->fpsSetPoint - m_achievedFps) /
> m_pcsParam->fpsSetPoint;
>
> if (m_pcsParam->integralReset > 0)
> {
> @@ -308,7 +309,7 @@
> {
> double lowerBound = (m_pcsParam->fpsSetPoint *
> SATURATION_RANGE_MIN) / 100.0; /* Lower bound, 3% of set-point */
> double upperBound = (m_pcsParam->fpsSetPoint *
> SATURATION_RANGE_MAX) / 100.0; /* Upper bound, 10% of set-point */
> - double fpsDiff = (uhdkitEnc->m_achievedFps -
> m_pcsParam->fpsSetPoint);
> + double fpsDiff = (m_achievedFps -
> m_pcsParam->fpsSetPoint);
> resetErrorAccumulater = (fpsDiff >= lowerBound && fpsDiff
> <= upperBound) || m_bScenecut; /* Steady state, or scenecut */
> }
>
> @@ -388,7 +389,7 @@
> m_outFrameCountOfLastAccumulatorReset = uhdkitEnc->m_
> encodedFrameCount;
> m_lastTimeStamp = m_curTimeStamp;
> if (uhdkitEnc->m_reconfigParam->logLevel == UHDKIT_LOG_INFO)
> - uhdkit_pcs_printStatus(&uhdkitEnc->m_reconfigParam[controllerIndex],
> uhdkitEnc->m_achievedFps);
> + uhdkit_pcs_printStatus(&uhdkitEnc->m_reconfigParam[controllerIndex],
> m_achievedFps);
> }
> return true;
> }
> @@ -398,6 +399,11 @@
> m_bScenecut = pic->frameData.bScenecut;
> }
>
> +void pcs::uhdkit_pcs_update_fps(int64_t startTime, int64_t endTime, int
> numEncoded)
> +{
> + m_achievedFps = numEncoded * 1000000.0 / (double)(endTime -
> startTime);
> +}
> +
> int pcs::uhdkit_pcs_getControlParamValue(const x265_param *param, int
> index)
> {
> int controlParamValue[NUM_CONTROLLER] = { param->bEnableFastIntra,
> param->bEnableEarlySkip, param->bEnableRectInter,
> diff -r bdf273f95217 -r 8defd4e7b2e4 source/pcs/pcs.h
> --- a/source/pcs/pcs.h Tue Nov 08 14:20:24 2016 +0530
> +++ b/source/pcs/pcs.h Mon Nov 14 18:38:05 2016 +0530
> @@ -32,6 +32,7 @@
> /* variables handled by the PCS Instance */
> pcs_param* m_pcsParam;
> pcs_controller* m_pcsController;
> + double m_achievedFps;
> int64_t m_curTimeStamp;
> int64_t m_lastTimeStamp;
> time_t m_lastStatusOutputTime;
> @@ -52,6 +53,9 @@
> /* This function updates the scenecut information */
> void uhdkit_pcs_scenecut(x265_picture *pic);
>
> + /* Update achieved fps */
> + void uhdkit_pcs_update_fps(int64_t startTime, int64_t endTime, int
> numEncoded);
> +
> /* Closes all test files */
> void uhdkit_pcs_close();
> };
> diff -r bdf273f95217 -r 8defd4e7b2e4 source/uhdkit-encoder.h
> --- a/source/uhdkit-encoder.h Tue Nov 08 14:20:24 2016 +0530
> +++ b/source/uhdkit-encoder.h Mon Nov 14 18:38:05 2016 +0530
> @@ -35,7 +35,6 @@
> cappedvbr *m_cappedVbr;
> x265_param* m_reconfigParam; //use if needed, for pcs
> int m_encodedFrameCount;
> - double m_achievedFps;
>
> void uhdkitPreprocess(uhdkitEncoder* uhdEnc, x265_picture&, int
> picWidth, int picHeight, int csp);
> uhdkitEncoder()
> @@ -48,7 +47,6 @@
> m_gopParallelEncoder = NULL;
> m_cappedVbr = NULL;
> m_reconfigParam = NULL;
> - m_achievedFps = 0.0;
> }
> };
> }
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20161117/f5d3dd81/attachment-0001.html>
More information about the x265-devel
mailing list