[x265] keep TComPic until next call when recpic is exported as pic_out
Steve Borho
steve at borho.org
Thu Jun 19 16:44:04 CEST 2014
On Thu, Jun 19, 2014 at 8:49 AM, Satoshi Nakagawa <nakagawa424 at oki.com> wrote:
> # HG changeset patch
> # User Satoshi Nakagawa <nakagawa424 at oki.com>
> # Date 1403183616 -32400
> # Thu Jun 19 22:13:36 2014 +0900
> # Node ID 17b083a024a2ed2b209cc0e8f1fbd3cf90956bd5
> # Parent d2a13e8541f45fcd4c7d554e0b7c89a82f2a0ff9
> keep TComPic until next call when recpic is exported as pic_out
ah.. the recon pixels may disappear if we don't hold on to the picture
for one more encode cycle. good catch.
> diff -r d2a13e8541f4 -r 17b083a024a2 source/encoder/encoder.cpp
> --- a/source/encoder/encoder.cpp Thu Jun 19 10:28:47 2014 +0530
> +++ b/source/encoder/encoder.cpp Thu Jun 19 22:13:36 2014 +0900
> @@ -59,6 +59,7 @@
> m_frameEncoder = NULL;
> m_rateControl = NULL;
> m_dpb = NULL;
> + m_exportedPic = NULL;
> m_nals = NULL;
> m_packetData = NULL;
> m_outputCount = 0;
> @@ -132,6 +133,12 @@
>
> void Encoder::destroy()
> {
> + if (m_exportedPic)
> + {
> + ATOMIC_DEC(&m_exportedPic->m_countRefEncoders);
> + m_exportedPic = NULL;
> + }
> +
> if (m_frameEncoder)
> {
> for (int i = 0; i < m_totalFrameThreads; i++)
> @@ -255,6 +262,13 @@
> if (m_aborted)
> return -1;
>
> + if (m_exportedPic)
> + {
> + ATOMIC_DEC(&m_exportedPic->m_countRefEncoders);
> + m_exportedPic = NULL;
> + m_dpb->recycleUnreferenced();
> + }
> +
> if (pic_in)
> {
> if (pic_in->colorSpace != m_param->internalCsp)
> @@ -434,8 +448,14 @@
> finishFrameStats(out, curEncoder, bits);
>
> // Allow this frame to be recycled if no frame encoders are using it for reference
> - ATOMIC_DEC(&out->m_countRefEncoders);
> - m_dpb->recycleUnreferenced();
> + if (!pic_out)
> + {
> + ATOMIC_DEC(&out->m_countRefEncoders);
> + m_dpb->recycleUnreferenced();
> + }
> + else
> + m_exportedPic = out;
> +
> ret = 1;
> }
>
> diff -r d2a13e8541f4 -r 17b083a024a2 source/encoder/encoder.h
> --- a/source/encoder/encoder.h Thu Jun 19 10:28:47 2014 +0530
> +++ b/source/encoder/encoder.h Thu Jun 19 22:13:36 2014 +0900
> @@ -87,6 +87,8 @@
> FrameEncoder* m_frameEncoder;
> DPB* m_dpb;
>
> + TComPic* m_exportedPic;
> +
> /* frame parallelism */
> int m_curEncoder;
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
--
Steve Borho
More information about the x265-devel
mailing list