[x265] analysis: encodeResidue() directly write to reconPic
Steve Borho
steve at borho.org
Fri Nov 14 18:50:47 CET 2014
On 11/14, Satoshi Nakagawa wrote:
> # HG changeset patch
> # User Satoshi Nakagawa <nakagawa424 at oki.com>
> # Date 1415954107 -32400
> # Fri Nov 14 17:35:07 2014 +0900
> # Node ID 5734fa1a54c35a7ee84490b8120898bdc6724255
> # Parent 64314f8061f1742c3c1278b455b15554c174b7b8
> analysis: encodeResidue() directly write to reconPic
queued, thanks
> diff -r 64314f8061f1 -r 5734fa1a54c3 source/encoder/analysis.cpp
> --- a/source/encoder/analysis.cpp Thu Nov 13 18:40:35 2014 +0900
> +++ b/source/encoder/analysis.cpp Fri Nov 14 17:35:07 2014 +0900
> @@ -1671,7 +1671,6 @@
>
> /* reuse the bestMode data structures at the current depth */
> Mode *bestMode = m_modeDepth[cuGeom.depth].bestMode;
> - Yuv& reconYuv = bestMode->reconYuv;
> CUData& cu = bestMode->cu;
>
> cu.copyFromPic(ctu, cuGeom);
> @@ -1687,7 +1686,7 @@
> getBestIntraModeChroma(*bestMode, cuGeom);
> residualQTIntraChroma(*bestMode, cuGeom, 0, 0);
> }
> - else if (cu.isInter(0))
> + else // if (cu.isInter(0))
> {
> X265_CHECK(!ctu.isSkipped(absPartIdx), "skip not expected prior to transform\n");
>
> @@ -1721,37 +1720,31 @@
> if (cu.m_mergeFlag[0] && cu.m_partSize[0] == SIZE_2Nx2N && !cu.getQtRootCbf(0))
> cu.setPredModeSubParts(MODE_SKIP);
>
> - PicYuv& reconPicYuv = *m_frame->m_reconPic;
> - if (cu.getQtRootCbf(0)) // TODO: split to each component
> - {
> - /* residualTransformQuantInter() wrote transformed residual back into
> - * resiYuv. Generate the recon pixels by adding it to the prediction */
> + /* residualTransformQuantInter() wrote transformed residual back into
> + * resiYuv. Generate the recon pixels by adding it to the prediction */
>
> - primitives.luma_add_ps[sizeIdx](reconYuv.m_buf[0], reconYuv.m_size,
> + PicYuv& reconPic = *m_frame->m_reconPic;
> + if (cu.m_cbf[0][0])
> + primitives.luma_add_ps[sizeIdx](reconPic.getLumaAddr(cu.m_cuAddr, absPartIdx), reconPic.m_stride,
> predY, resiYuv.m_buf[0], predYuv.m_size, resiYuv.m_size);
> - primitives.chroma[m_csp].add_ps[sizeIdx](reconYuv.m_buf[1], reconYuv.m_csize,
> - predU, resiYuv.m_buf[1], predYuv.m_csize, resiYuv.m_csize);
> - primitives.chroma[m_csp].add_ps[sizeIdx](reconYuv.m_buf[2], reconYuv.m_csize,
> - predV, resiYuv.m_buf[2], predYuv.m_csize, resiYuv.m_csize);
> + else
> + primitives.luma_copy_pp[sizeIdx](reconPic.getLumaAddr(cu.m_cuAddr, absPartIdx), reconPic.m_stride,
> + predY, predYuv.m_size);
>
> - /* copy the reconstructed part to the recon pic for later intra
> - * predictions */
> - reconYuv.copyToPicYuv(*m_frame->m_reconPic, cu.m_cuAddr, absPartIdx);
> - }
> + if (cu.m_cbf[1][0])
> + primitives.chroma[m_csp].add_ps[sizeIdx](reconPic.getCbAddr(cu.m_cuAddr, absPartIdx), reconPic.m_strideC,
> + predU, resiYuv.m_buf[1], predYuv.m_csize, resiYuv.m_csize);
> else
> - {
> - /* copy the prediction pixels to the recon pic for later intra
> - * predictions */
> + primitives.chroma[m_csp].copy_pp[sizeIdx](reconPic.getCbAddr(cu.m_cuAddr, absPartIdx), reconPic.m_strideC,
> + predU, predYuv.m_csize);
>
> - primitives.luma_copy_pp[sizeIdx](reconPicYuv.getLumaAddr(cu.m_cuAddr, absPartIdx), reconPicYuv.m_stride,
> - predY, predYuv.m_size);
> - primitives.chroma[m_csp].copy_pp[sizeIdx](reconPicYuv.getCbAddr(cu.m_cuAddr, absPartIdx), reconPicYuv.m_strideC,
> - predU, predYuv.m_csize);
> - primitives.chroma[m_csp].copy_pp[sizeIdx](reconPicYuv.getCrAddr(cu.m_cuAddr, absPartIdx), reconPicYuv.m_strideC,
> + if (cu.m_cbf[2][0])
> + primitives.chroma[m_csp].add_ps[sizeIdx](reconPic.getCrAddr(cu.m_cuAddr, absPartIdx), reconPic.m_strideC,
> + predV, resiYuv.m_buf[2], predYuv.m_csize, resiYuv.m_csize);
> + else
> + primitives.chroma[m_csp].copy_pp[sizeIdx](reconPic.getCrAddr(cu.m_cuAddr, absPartIdx), reconPic.m_strideC,
> predV, predYuv.m_csize);
> - }
> }
> - /* else if (cu.m_predMode[0] == MODE_NONE) {} */
>
> checkDQP(cu, cuGeom);
> cu.updatePic(cuGeom.depth);
> _______________________________________________
> 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