[x265] [PATCH] modify api x265_get_ref_frame_list to provide POC lists for L0 and L1 references
Ashok Kumar Mishra
ashok at multicorewareinc.com
Wed Dec 13 12:42:43 CET 2017
On Wed, Dec 13, 2017 at 8:42 AM, <santhoshini at multicorewareinc.com> wrote:
> # HG changeset patch
> # User Santhoshini Sekar <santhoshini at 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 at videolan.org
> https://mailman.videolan.org/listinfo/x265-deve
> <https://mailman.videolan.org/listinfo/x265-devel>
> Pushed.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20171213/caab7d3f/attachment.html>
More information about the x265-devel
mailing list