On Wed, Dec 13, 2017 at 8:42 AM, <santhosh...@multicorewareinc.com> wrote:
> # HG changeset patch > # User Santhoshini Sekar <santhosh...@multicorewareinc.com> > # Date 1513082044 -19800 > # Tue Dec 12 18:04:04 2017 +0530 > # Node ID e71e59aba01927aecd35115aba4a7180817c6da3 > # Parent 6b079854e56e5ff3eaa11eab658989e95e2d9152 > modify api x265_get_ref_frame_list to provide POC lists for L0 and L1 > references > > diff --git a/doc/reST/api.rst b/doc/reST/api.rst > --- a/doc/reST/api.rst > +++ b/doc/reST/api.rst > @@ -206,7 +206,7 @@ > /* x265_get_ref_frame_list: > * returns negative on error, 0 when access unit were output. > * This API must be called after(poc >= lookaheadDepth + bframes > + 2) condition check */ > - int x265_get_ref_frame_list(x265_encoder *encoder, x265_picyuv**, > x265_picyuv**, int, int); > + int x265_get_ref_frame_list(x265_encoder *encoder, x265_picyuv**, > x265_picyuv**, int, int, int*, int*); > > **x265_encoder_ctu_info** may be used to provide additional CTU-specific > information to the encoder:: > > diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt > --- a/source/CMakeLists.txt > +++ b/source/CMakeLists.txt > @@ -29,7 +29,7 @@ > option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF) > mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD) > # X265_BUILD must be incremented each time the public API is changed > -set(X265_BUILD 147) > +set(X265_BUILD 148) > configure_file("${PROJECT_SOURCE_DIR}/x265.def.in" > "${PROJECT_BINARY_DIR}/x265.def") > configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in" > diff --git a/source/encoder/api.cpp b/source/encoder/api.cpp > --- a/source/encoder/api.cpp > +++ b/source/encoder/api.cpp > @@ -356,13 +356,13 @@ > return -1; > } > > -int x265_get_ref_frame_list(x265_encoder *enc, x265_picyuv** l0, > x265_picyuv** l1, int sliceType, int poc) > +int x265_get_ref_frame_list(x265_encoder *enc, x265_picyuv** l0, > x265_picyuv** l1, int sliceType, int poc, int* pocL0, int* pocL1) > { > if (!enc) > return -1; > > Encoder *encoder = static_cast<Encoder*>(enc); > - return encoder->getRefFrameList((PicYuv**)l0, (PicYuv**)l1, > sliceType, poc); > + return encoder->getRefFrameList((PicYuv**)l0, (PicYuv**)l1, > sliceType, poc, pocL0, pocL1); > } > > int x265_set_analysis_data(x265_encoder *enc, x265_analysis_data > *analysis_data, int poc, uint32_t cuBytes) > diff --git a/source/encoder/encoder.cpp b/source/encoder/encoder.cpp > --- a/source/encoder/encoder.cpp > +++ b/source/encoder/encoder.cpp > @@ -448,7 +448,7 @@ > return 0; > } > > -int Encoder::getRefFrameList(PicYuv** l0, PicYuv** l1, int sliceType, > int poc) > +int Encoder::getRefFrameList(PicYuv** l0, PicYuv** l1, int sliceType, > int poc, int* pocL0, int* pocL1) > { > if (!(IS_X265_TYPE_I(sliceType))) > { > @@ -460,6 +460,7 @@ > if (framePtr->m_encData->m_slice->m_refFrameList[0][j] > && framePtr->m_encData->m_slice->m_refFrameList[0][j]->m_reconPic != NULL) > { > int l0POC = framePtr->m_encData->m_slice-> > m_refFrameList[0][j]->m_poc; > + pocL0[j] = l0POC; > Frame* l0Fp = m_dpb->m_picList.getPOC(l0POC); > while (l0Fp->m_reconRowFlag[l0Fp->m_numRows - > 1].get() == 0) > l0Fp->m_reconRowFlag[l0Fp->m_numRows - > 1].waitForChange(0); /* If recon is not ready, current frame encoder has to > wait. */ > @@ -471,6 +472,7 @@ > if (framePtr->m_encData->m_slice->m_refFrameList[1][j] > && framePtr->m_encData->m_slice->m_refFrameList[1][j]->m_reconPic != NULL) > { > int l1POC = framePtr->m_encData->m_slice-> > m_refFrameList[1][j]->m_poc; > + pocL1[j] = l1POC; > Frame* l1Fp = m_dpb->m_picList.getPOC(l1POC); > while (l1Fp->m_reconRowFlag[l1Fp->m_numRows - > 1].get() == 0) > l1Fp->m_reconRowFlag[l1Fp->m_numRows - > 1].waitForChange(0); /* If recon is not ready, current frame encoder has to > wait. */ > diff --git a/source/encoder/encoder.h b/source/encoder/encoder.h > --- a/source/encoder/encoder.h > +++ b/source/encoder/encoder.h > @@ -208,7 +208,7 @@ > > int copySlicetypePocAndSceneCut(int *slicetype, int *poc, int > *sceneCut); > > - int getRefFrameList(PicYuv** l0, PicYuv** l1, int sliceType, int poc); > + int getRefFrameList(PicYuv** l0, PicYuv** l1, int sliceType, int poc, > int* pocL0, int* pocL1); > > int setAnalysisDataAfterZScan(x265_analysis_data *analysis_data, > Frame* curFrame); > > diff --git a/source/x265.h b/source/x265.h > --- a/source/x265.h > +++ b/source/x265.h > @@ -1746,7 +1746,7 @@ > /* x265_get_ref_frame_list: > * returns negative on error, 0 when access unit were output. > * This API must be called after(poc >= lookaheadDepth + bframes + 2) > condition check */ > -int x265_get_ref_frame_list(x265_encoder *encoder, x265_picyuv**, > x265_picyuv**, int, int); > +int x265_get_ref_frame_list(x265_encoder *encoder, x265_picyuv**, > x265_picyuv**, int, int, int*, int*); > > /* x265_set_analysis_data: > * set the analysis data. The incoming analysis_data structure is > assumed to be AVC-sized blocks. > @@ -1823,7 +1823,7 @@ > int (*encoder_intra_refresh)(x265_encoder*); > int (*encoder_ctu_info)(x265_encoder*, int, > x265_ctu_info_t**); > int (*get_slicetype_poc_and_scenecut)(x265_encoder*, int*, > int*, int*); > - int (*get_ref_frame_list)(x265_encoder*, x265_picyuv**, > x265_picyuv**, int, int); > + int (*get_ref_frame_list)(x265_encoder*, x265_picyuv**, > x265_picyuv**, int, int, int*, int*); > FILE* (*csvlog_open)(const x265_param*); > void (*csvlog_frame)(const x265_param*, const x265_picture*); > void (*csvlog_encode)(x265_encoder*, const x265_stats*, > int, char**); > > _______________________________________________ > x265-devel mailing list > x265-devel@videolan.org > https://mailman.videolan.org/listinfo/x265-deve > <https://mailman.videolan.org/listinfo/x265-devel> > Pushed. >
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel