[x265] [PATCH] app: fix broken input read
Aruna Matheswaran
aruna at multicorewareinc.com
Tue Apr 28 11:41:37 CEST 2020
Pushed to default.
On Thu, Apr 16, 2020 at 8:19 PM Aruna Matheswaran <
aruna at multicorewareinc.com> wrote:
> # HG changeset patch
> # User Aruna Matheswaran <aruna at multicorewareinc.com>
> # Date 1587043136 -19800
> # Thu Apr 16 18:48:56 2020 +0530
> # Node ID 94bfe7f2c0c12616145f8fc1a1762ed55204a0a6
> # Parent 6bb2d88029c2e13fa13b5b053aa725d4fa84a084
> app: fix broken input read
>
> This patch fixes indefinite wait for input frames that led the encoder to
> stuck after encoding all the frames.
>
> diff -r 6bb2d88029c2 -r 94bfe7f2c0c1 source/abrEncApp.cpp
> --- a/source/abrEncApp.cpp Thu Apr 09 13:09:15 2020 +0530
> +++ b/source/abrEncApp.cpp Thu Apr 16 18:48:56 2020 +0530
> @@ -213,7 +213,7 @@
> m_input = m_cliopt.input;
> m_param = x265_param_alloc();
> x265_copy_params(m_param, cliopt.param);
> - m_doneReading = false;
> + m_inputOver = false;
> m_lastIdx = -1;
> m_encoder = NULL;
> m_scaler = NULL;
> @@ -461,7 +461,7 @@
> int ipwrite = m_parent->m_picWriteCnt[m_id].get();
>
> bool isAbrLoad = m_isAnalysisLoad && (m_parent->m_numEncodes > 1);
> - while (m_threadActive && (ipread == ipwrite))
> + while (!m_inputOver && (ipread == ipwrite))
> {
> ipwrite =
> m_parent->m_picWriteCnt[m_id].waitForChange(ipwrite);
> }
> @@ -978,7 +978,7 @@
> /* unscaled picture is stored in the last index */
> uint32_t srcId = m_id - 1;
> int QDepth = m_parentEnc->m_parent->m_queueSize;
> - while (!m_parentEnc->m_doneReading)
> + while (!m_parentEnc->m_inputOver)
> {
>
> uint32_t scaledWritten =
> m_parentEnc->m_parent->m_picWriteCnt[m_id].get();
> @@ -1092,7 +1092,7 @@
> x265_picture* src = x265_picture_alloc();
> x265_picture_init(m_parentEnc->m_param, src);
>
> - while (!m_parentEnc->m_doneReading)
> + while (m_threadActive)
> {
> uint32_t written =
> m_parentEnc->m_parent->m_picWriteCnt[m_id].get();
> uint32_t writeIdx = written % QDepth;
> @@ -1141,11 +1141,11 @@
> }
> else
> {
> + m_threadActive = false;
> + m_parentEnc->m_inputOver = true;
> m_parentEnc->m_parent->m_picWriteCnt[m_id].poke();
> - break;
> }
> }
> x265_picture_free(src);
> - m_threadActive = false;
> }
> }
> diff -r 6bb2d88029c2 -r 94bfe7f2c0c1 source/abrEncApp.h
> --- a/source/abrEncApp.h Thu Apr 09 13:09:15 2020 +0530
> +++ b/source/abrEncApp.h Thu Apr 16 18:48:56 2020 +0530
> @@ -80,7 +80,7 @@
> bool m_isScaled;
> bool m_isAnalysisSave;
> bool m_isAnalysisLoad;
> - bool m_doneReading;
> + bool m_inputOver;
>
> int m_threadActive;
> int m_lastIdx;
>
--
Regards,
*Aruna Matheswaran,*
Video Codec Engineer,
Media & AI analytics BU,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20200428/a4962d37/attachment.html>
More information about the x265-devel
mailing list