[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