Pushed to Release_3.3 and grafted the fix to default. On Thu, Mar 19, 2020 at 11:59 AM Srikanth Kurapati < srikanth.kurap...@multicorewareinc.com> wrote:
> Hi Aruna, > > The changes in the previous patch are for segmentation > faults occurring due to bit depth mismatch. This patch fixes > wrong computation of plane sizes for chroma planes introduced in the > previous changeset during code code optimization. The changes in the > previous change set fail when ever source resolution and encoder resolution > are different. as per the original algorithm since scd happens on x265_pic > and not frame the chroma histogram computation should be done for source > plane computed from source resolution and not the padded resolution in > param structure. All histograms will be computed on the encoder bit depth > only. > > On Wed, Mar 18, 2020 at 8:31 PM Aruna Matheswaran < > ar...@multicorewareinc.com> wrote: > >> >> >> On Tue, Mar 17, 2020 at 2:48 PM <srikanth.kurap...@multicorewareinc.com> >> wrote: >> >>> # HG changeset patch >>> # User Srikanth Kurapati >>> # Date 1584430274 -19800 >>> # Tue Mar 17 13:01:14 2020 +0530 >>> # Node ID b7a02a40bc5d97308d41b925f9c37df414ab6ecb >>> # Parent b7b0de75112b8022789590640662f2fab956cfbe >>> Fix: segmentation fault for hist-scenecut option >>> >>> fixes plane size calculation for chroma planes using source resolution >>> and not >>> padded resolution. >>> >> >> Is this because you compute the luma histogram on pixel domain and chroma >> histogram on input depth? >> If so, do you still need the additional memory and memcpy introduced in >> "Changeset: 12619 (96a10df63c0b) Fix: Segmentation fault for hist-scenecut >> option in 16bpp builds." ? >> >>> " >>> diff -r b7b0de75112b -r b7a02a40bc5d source/encoder/encoder.cpp >>> --- a/source/encoder/encoder.cpp Fri Feb 21 17:02:18 2020 +0530 >>> +++ b/source/encoder/encoder.cpp Tue Mar 17 13:01:14 2020 +0530 >>> @@ -218,10 +218,7 @@ >>> >>> if (m_param->bHistBasedSceneCut) >>> { >>> - for (int i = 0; i < x265_cli_csps[m_param->internalCsp].planes; >>> i++) >>> - { >>> - m_planeSizes[i] = (m_param->sourceWidth >> >>> x265_cli_csps[p->internalCsp].width[i]) * (m_param->sourceHeight >> >>> x265_cli_csps[m_param->internalCsp].height[i]); >>> - } >>> + m_planeSizes[0] = (m_param->sourceWidth >> >>> x265_cli_csps[p->internalCsp].width[0]) * (m_param->sourceHeight >> >>> x265_cli_csps[m_param->internalCsp].height[0]); >>> uint32_t pixelbytes = m_param->internalBitDepth > 8 ? 2 : 1; >>> m_edgePic = X265_MALLOC(pixel, m_planeSizes[0] * pixelbytes); >>> m_edgeHistThreshold = m_param->edgeTransitionThreshold; >>> @@ -1605,6 +1602,14 @@ >>> if (m_param->bHistBasedSceneCut && pic_in) >>> { >>> x265_picture *pic = (x265_picture *) pic_in; >>> + >>> + if (pic->poc == 0) >>> + { >>> + /* for entire encode compute the chroma plane sizes >>> only once */ >>> + for (int i = 1; i < >>> x265_cli_csps[m_param->internalCsp].planes; i++) >>> + m_planeSizes[i] = (pic->width >> >>> x265_cli_csps[m_param->internalCsp].width[i]) * (pic->height >> >>> x265_cli_csps[m_param->internalCsp].height[i]); >>> + } >>> + >>> if (computeHistograms(pic)) >>> { >>> double maxUVSad = 0.0, edgeSad = 0.0; >>> _______________________________________________ >>> x265-devel mailing list >>> x265-devel@videolan.org >>> https://mailman.videolan.org/listinfo/x265-devel >>> >> >> >> -- >> Regards, >> *Aruna Matheswaran,* >> Video Codec Engineer, >> Media & AI analytics BU, >> >> >> >> _______________________________________________ >> x265-devel mailing list >> x265-devel@videolan.org >> https://mailman.videolan.org/listinfo/x265-devel >> > > > -- > *With Regards,* > *Srikanth Kurapati.* > _______________________________________________ > x265-devel mailing list > x265-devel@videolan.org > https://mailman.videolan.org/listinfo/x265-devel > -- Regards, *Aruna Matheswaran,* Video Codec Engineer, Media & AI analytics BU,
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel