Ok, will modify the patch accordingly and send. On Tue, Aug 11, 2015 at 8:57 AM, Deepthi Nandakumar < deep...@multicorewareinc.com> wrote:
> Thanks - this version is technically correct, can you send another patch > without the callback functions? > > On Fri, Aug 7, 2015 at 11:50 PM, Steve Borho <st...@borho.org> wrote: > >> On 08/07, santhosh...@multicorewareinc.com wrote: >> > # HG changeset patch >> > # User Santhoshini Sekar<santhosh...@multicorewareinc.com> >> > # Date 1438839704 -19800 >> > # Thu Aug 06 11:11:44 2015 +0530 >> > # Node ID 450055cd2ef7e85ba8fff2d163161c0d0428b5fe >> > # Parent 9982ac741d1850d2b2451985feef5e0de0790794 >> > add API and implementation for Region of Interest(ROI) >> >> this version looks ok >> >> > diff -r 9982ac741d18 -r 450055cd2ef7 source/CMakeLists.txt >> > --- a/source/CMakeLists.txt Thu Aug 06 10:29:06 2015 +0530 >> > +++ b/source/CMakeLists.txt Thu Aug 06 11:11:44 2015 +0530 >> > @@ -30,7 +30,7 @@ >> > mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD) >> > >> > # X265_BUILD must be incremented each time the public API is changed >> > -set(X265_BUILD 68) >> > +set(X265_BUILD 69) >> > configure_file("${PROJECT_SOURCE_DIR}/x265.def.in" >> > "${PROJECT_BINARY_DIR}/x265.def") >> > configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in" >> > diff -r 9982ac741d18 -r 450055cd2ef7 source/common/frame.h >> > --- a/source/common/frame.h Thu Aug 06 10:29:06 2015 +0530 >> > +++ b/source/common/frame.h Thu Aug 06 11:11:44 2015 +0530 >> > @@ -59,6 +59,8 @@ >> > bool m_lowresInit; // lowres init >> complete (pre-analysis) >> > bool m_bChromaExtended; // orig chroma planes >> motion extended for weight analysis >> > >> > + float* m_quantOffsets; // points to >> quantOffsets in x265_picture >> > + >> > /* Frame Parallelism - notification between FrameEncoders of >> available motion reference rows */ >> > ThreadSafeInteger m_reconRowCount; // count of CTU rows >> completely reconstructed and extended for motion reference >> > volatile uint32_t m_countRefEncoders; // count of >> FrameEncoder threads monitoring m_reconRowCount >> > @@ -73,6 +75,7 @@ >> > bool allocEncodeData(x265_param *param, const SPS& sps); >> > void reinit(const SPS& sps); >> > void destroy(); >> > + void (*quantOffsetsFree)(void*); >> > }; >> > } >> > >> > diff -r 9982ac741d18 -r 450055cd2ef7 source/encoder/encoder.cpp >> > --- a/source/encoder/encoder.cpp Thu Aug 06 10:29:06 2015 +0530 >> > +++ b/source/encoder/encoder.cpp Thu Aug 06 11:11:44 2015 +0530 >> > @@ -465,6 +465,8 @@ >> > inFrame->m_pts = pic_in->pts; >> > inFrame->m_forceqp = pic_in->forceqp; >> > inFrame->m_param = m_reconfigured ? m_latestParam : >> m_param; >> > + inFrame->m_quantOffsets = pic_in->quantOffsets; >> > + inFrame->quantOffsetsFree = pic_in->quantOffsets_free; >> > >> > if (m_pocLast == 0) >> > m_firstPts = inFrame->m_pts; >> > @@ -632,6 +634,9 @@ >> > frameEnc = m_lookahead->getDecidedPicture(); >> > if (frameEnc && !pass) >> > { >> > + if (frameEnc->quantOffsetsFree) >> > + frameEnc->quantOffsetsFree(frameEnc->m_quantOffsets); >> > + >> > /* give this frame a FrameData instance before encoding */ >> > if (m_dpb->m_picSymFreeList) >> > { >> > diff -r 9982ac741d18 -r 450055cd2ef7 source/encoder/slicetype.cpp >> > --- a/source/encoder/slicetype.cpp Thu Aug 06 10:29:06 2015 +0530 >> > +++ b/source/encoder/slicetype.cpp Thu Aug 06 11:11:44 2015 +0530 >> > @@ -96,6 +96,7 @@ >> > int maxRow = curFrame->m_fencPic->m_picHeight; >> > int blockCount = curFrame->m_lowres.maxBlocksInRow * >> curFrame->m_lowres.maxBlocksInCol; >> > >> > + float* quantOffsets = curFrame->m_quantOffsets; >> > for (int y = 0; y < 3; y++) >> > { >> > curFrame->m_lowres.wp_ssd[y] = 0; >> > @@ -113,10 +114,21 @@ >> > >> > if (param->rc.aqMode && param->rc.aqStrength == 0) >> > { >> > - memset(curFrame->m_lowres.qpCuTreeOffset, 0, cuCount * >> sizeof(double)); >> > - memset(curFrame->m_lowres.qpAqOffset, 0, cuCount * >> sizeof(double)); >> > - for (int cuxy = 0; cuxy < cuCount; cuxy++) >> > - curFrame->m_lowres.invQscaleFactor[cuxy] = 256; >> > + if (quantOffsets) >> > + { >> > + for (int cuxy = 0; cuxy < cuCount; cuxy++) >> > + { >> > + curFrame->m_lowres.qpCuTreeOffset[cuxy] = >> curFrame->m_lowres.qpAqOffset[cuxy] = quantOffsets[cuxy]; >> > + curFrame->m_lowres.invQscaleFactor[cuxy] = >> x265_exp2fix8(curFrame->m_lowres.qpCuTreeOffset[cuxy]); >> > + } >> > + } >> > + else >> > + { >> > + memset(curFrame->m_lowres.qpCuTreeOffset, 0, cuCount * >> sizeof(double)); >> > + memset(curFrame->m_lowres.qpAqOffset, 0, cuCount * >> sizeof(double)); >> > + for (int cuxy = 0; cuxy < cuCount; cuxy++) >> > + curFrame->m_lowres.invQscaleFactor[cuxy] = 256; >> > + } >> > } >> > >> > /* Need variance data for weighted prediction */ >> > @@ -177,6 +189,8 @@ >> > uint32_t energy = acEnergyCu(curFrame, blockX, >> blockY, param->internalCsp); >> > qp_adj = strength * (X265_LOG2(X265_MAX(energy, >> 1)) - (14.427f + 2 * (X265_DEPTH - 8))); >> > } >> > + if (quantOffsets) >> > + qp_adj += quantOffsets[blockXY]; >> > curFrame->m_lowres.qpAqOffset[blockXY] = qp_adj; >> > curFrame->m_lowres.qpCuTreeOffset[blockXY] = qp_adj; >> > curFrame->m_lowres.invQscaleFactor[blockXY] = >> x265_exp2fix8(qp_adj); >> > diff -r 9982ac741d18 -r 450055cd2ef7 source/x265.h >> > --- a/source/x265.h Thu Aug 06 10:29:06 2015 +0530 >> > +++ b/source/x265.h Thu Aug 06 11:11:44 2015 +0530 >> > @@ -205,6 +205,17 @@ >> > * this data structure */ >> > x265_analysis_data analysisData; >> > >> > + /* An array of quantizer offsets to be applied to this image >> during encoding. >> > + * These are added on top of the decisions made by rateControl. >> > + * Adaptive quantization must be enabled to use this feature. >> These quantizer >> > + * offsets should be given for each 16x16 block. Behavior if quant >> > + * offsets differ between encoding passes is undefined. */ >> > + float *quantOffsets; >> > + >> > + /* optional callback to free quant_offsets when used. >> > + * Useful if one wants to use a different quant_offset array for >> each frame. */ >> > + void (*quantOffsets_free)(void*); >> > + >> > /* Frame level statistics */ >> > x265_frame_stats frameData; >> > >> > _______________________________________________ >> > x265-devel mailing list >> > x265-devel@videolan.org >> > https://mailman.videolan.org/listinfo/x265-devel >> >> -- >> Steve Borho >> _______________________________________________ >> x265-devel mailing list >> x265-devel@videolan.org >> https://mailman.videolan.org/listinfo/x265-devel >> > > > _______________________________________________ > x265-devel mailing list > x265-devel@videolan.org > https://mailman.videolan.org/listinfo/x265-devel > >
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel