[x265] [PATCH] Fix dts calculation when disabling lookahead in analysis load mode
Pradeep Ramachandran
pradeep at multicorewareinc.com
Thu Oct 5 08:59:48 CEST 2017
On Wed, Oct 4, 2017 at 1:10 PM, Divya Manivannan <divya at multicorewareinc.com
> wrote:
> # HG changeset patch
> # User Divya Manivannan <divya at multicorewareinc.com>
> # Date 1506315677 -19800
> # Mon Sep 25 10:31:17 2017 +0530
> # Node ID 623fd118479831744b7b114bdce3f0026c006f68
> # Parent 30998ebc3a3b7503f62e9ed520d7c67acca92b33
> Fix dts calculation when disabling lookahead in analysis load mode
>
Pushed to default branch
>
> diff -r 30998ebc3a3b -r 623fd1184798 source/encoder/encoder.cpp
> --- a/source/encoder/encoder.cpp Tue Oct 03 19:54:22 2017 +0530
> +++ b/source/encoder/encoder.cpp Mon Sep 25 10:31:17 2017 +0530
> @@ -911,6 +911,7 @@
> if (m_param->scaleFactor)
> factor = m_param->scaleFactor * 2;
> pic_out->analysisData.numCuInHeight =
> outFrame->m_analysisData.numCuInHeight;
> + pic_out->analysisData.lookahead.dts =
> outFrame->m_dts;
> pic_out->analysisData.satdCost *= factor;
> pic_out->analysisData.lookahead.keyframe =
> outFrame->m_lowres.bKeyframe;
> pic_out->analysisData.lookahead.lastMiniGopBFrame
> = outFrame->m_lowres.bLastMiniGopBFrame;
> @@ -1099,6 +1100,7 @@
> }
> if (m_param->analysisReuseMode == X265_ANALYSIS_LOAD &&
> m_param->bDisableLookahead)
> {
> + frameEnc->m_dts = frameEnc->m_analysisData.lookahead.dts;
> for (uint32_t index = 0; index < frameEnc->m_analysisData.numCuInHeight;
> index++)
> {
> frameEnc->m_encData->m_rowStat[index].intraSatdForVbv
> = frameEnc->m_analysisData.lookahead.intraSatdForVbv[index];
> @@ -1162,16 +1164,19 @@
> frameEnc->m_encData->m_slice->m_iNumRPSInSPS =
> m_sps.spsrpsNum;
>
> curEncoder->m_rce.encodeOrder = frameEnc->m_encodeOrder =
> m_encodedFrameNum++;
> - if (m_bframeDelay)
> + if (m_param->analysisReuseMode != X265_ANALYSIS_LOAD ||
> !m_param->bDisableLookahead)
> {
> - int64_t *prevReorderedPts = m_prevReorderedPts;
> - frameEnc->m_dts = m_encodedFrameNum > m_bframeDelay
> - ? prevReorderedPts[(m_encodedFrameNum -
> m_bframeDelay) % m_bframeDelay]
> - : frameEnc->m_reorderedPts - m_bframeDelayTime;
> - prevReorderedPts[m_encodedFrameNum % m_bframeDelay] =
> frameEnc->m_reorderedPts;
> + if (m_bframeDelay)
> + {
> + int64_t *prevReorderedPts = m_prevReorderedPts;
> + frameEnc->m_dts = m_encodedFrameNum > m_bframeDelay
> + ? prevReorderedPts[(m_encodedFrameNum -
> m_bframeDelay) % m_bframeDelay]
> + : frameEnc->m_reorderedPts - m_bframeDelayTime;
> + prevReorderedPts[m_encodedFrameNum % m_bframeDelay]
> = frameEnc->m_reorderedPts;
> + }
> + else
> + frameEnc->m_dts = frameEnc->m_reorderedPts;
> }
> - else
> - frameEnc->m_dts = frameEnc->m_reorderedPts;
>
> /* Allocate analysis data before encode in save mode. This is
> allocated in frameEnc */
> if (m_param->analysisReuseMode == X265_ANALYSIS_SAVE)
> diff -r 30998ebc3a3b -r 623fd1184798 source/x265.h
> --- a/source/x265.h Tue Oct 03 19:54:22 2017 +0530
> +++ b/source/x265.h Mon Sep 25 10:31:17 2017 +0530
> @@ -100,6 +100,7 @@
> int keyframe;
> int lastMiniGopBFrame;
> int plannedType[X265_LOOKAHEAD_MAX + 1];
> + int64_t dts;
> } x265_lookahead_data;
>
> /* Stores all analysis data for a single frame */
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20171005/f6d69453/attachment.html>
More information about the x265-devel
mailing list