On Fri, Nov 3, 2017 at 4:19 PM, <[email protected]> wrote:
> # HG changeset patch > # User Praveen Tiwari <[email protected]> > # Date 1509438457 -19800 > # Tue Oct 31 13:57:37 2017 +0530 > # Node ID de91aae2db5353e4e548d002e2dce530a6c8078d > # Parent 6a310b24c6a2d831ef08bbda1bdcf9d929daa308 > api: 'x265_get_slicetype_poc_and_scenecut' to fetch slicetype, poc and > scenecut information > Pushed to default branch. Thanks! > > diff -r 6a310b24c6a2 -r de91aae2db53 doc/reST/api.rst > --- a/doc/reST/api.rst Thu Nov 02 12:17:29 2017 +0530 > +++ b/doc/reST/api.rst Tue Oct 31 13:57:37 2017 +0530 > @@ -192,6 +192,15 @@ > * presets is not recommended without a more fine-grained > breakdown of > * parameters to take this into account. */ > int x265_encoder_reconfig(x265_encoder *, x265_param *); > + > +**x265_get_slicetype_poc_and_scenecut()** may be used to fetch slice > type, poc and scene cut information mid-encode:: > + > + /* x265_get_slicetype_poc_and_scenecut: > + * get the slice type, poc and scene cut information for the > current frame, > + * returns negative on error, 0 on success. > + * This API must be called after(poc >= lookaheadDepth + bframes > + 2) condition check. */ > + int x265_get_slicetype_poc_and_scenecut(x265_encoder *encoder, int > *slicetype, int *poc, int* sceneCut); > + > **x265_encoder_ctu_info** > /* x265_encoder_ctu_info: > * Copy CTU information such as ctu address and ctu partition > structure of all > diff -r 6a310b24c6a2 -r de91aae2db53 source/CMakeLists.txt > --- a/source/CMakeLists.txt Thu Nov 02 12:17:29 2017 +0530 > +++ b/source/CMakeLists.txt Tue Oct 31 13:57:37 2017 +0530 > @@ -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 136) > +set(X265_BUILD 137) > configure_file("${PROJECT_SOURCE_DIR}/x265.def.in" > "${PROJECT_BINARY_DIR}/x265.def") > configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in" > diff -r 6a310b24c6a2 -r de91aae2db53 source/common/piclist.cpp > --- a/source/common/piclist.cpp Thu Nov 02 12:17:29 2017 +0530 > +++ b/source/common/piclist.cpp Tue Oct 31 13:57:37 2017 +0530 > @@ -117,6 +117,15 @@ > return NULL; > } > > +Frame* PicList::getCurFrame(void) > +{ > + Frame *curFrame = m_start; > + if (curFrame != NULL) > + return curFrame; > + else > + return NULL; > +} > + > void PicList::remove(Frame& curFrame) > { > #if _DEBUG > diff -r 6a310b24c6a2 -r de91aae2db53 source/common/piclist.h > --- a/source/common/piclist.h Thu Nov 02 12:17:29 2017 +0530 > +++ b/source/common/piclist.h Tue Oct 31 13:57:37 2017 +0530 > @@ -62,6 +62,9 @@ > /** Find frame with specified POC */ > Frame* getPOC(int poc); > > + /** Get the current Frame from the list **/ > + Frame* getCurFrame(void); > + > /** Remove picture from list */ > void remove(Frame& pic); > > diff -r 6a310b24c6a2 -r de91aae2db53 source/encoder/api.cpp > --- a/source/encoder/api.cpp Thu Nov 02 12:17:29 2017 +0530 > +++ b/source/encoder/api.cpp Tue Oct 31 13:57:37 2017 +0530 > @@ -340,6 +340,16 @@ > return 0; > } > > +int x265_get_slicetype_poc_and_scenecut(x265_encoder *enc, int > *slicetype, int *poc, int *sceneCut) > +{ > + if (!enc) > + return -1; > + Encoder *encoder = static_cast<Encoder*>(enc); > + if (!encoder->copySlicetypePocAndSceneCut(slicetype, poc, sceneCut)) > + return 0; > + return -1; > +} > + > void x265_cleanup(void) > { > BitCost::destroy(); > @@ -413,6 +423,7 @@ > sizeof(x265_frame_stats), > &x265_encoder_intra_refresh, > &x265_encoder_ctu_info, > + &x265_get_slicetype_poc_and_scenecut, > }; > > typedef const x265_api* (*api_get_func)(int bitDepth); > diff -r 6a310b24c6a2 -r de91aae2db53 source/encoder/encoder.cpp > --- a/source/encoder/encoder.cpp Thu Nov 02 12:17:29 2017 +0530 > +++ b/source/encoder/encoder.cpp Tue Oct 31 13:57:37 2017 +0530 > @@ -429,6 +429,23 @@ > } > } > > +int Encoder::copySlicetypePocAndSceneCut(int *slicetype, int *poc, int > *sceneCut) > +{ > + Frame *FramePtr = m_dpb->m_picList.getCurFrame(); > + if (FramePtr != NULL) > + { > + *slicetype = FramePtr->m_lowres.sliceType; > + *poc = FramePtr->m_encData->m_slice->m_poc; > + *sceneCut = FramePtr->m_lowres.bScenecut; > + } > + else > + { > + x265_log(NULL, X265_LOG_WARNING, "Frame is still in lookahead > pipeline, this API must be called after (poc >= lookaheadDepth + bframes + > 2) condition check\n"); > + return -1; > + } > + return 0; > +} > + > void Encoder::destroy() > { > #if ENABLE_HDR10_PLUS > diff -r 6a310b24c6a2 -r de91aae2db53 source/encoder/encoder.h > --- a/source/encoder/encoder.h Thu Nov 02 12:17:29 2017 +0530 > +++ b/source/encoder/encoder.h Tue Oct 31 13:57:37 2017 +0530 > @@ -205,6 +205,8 @@ > > void copyCtuInfo(x265_ctu_info_t** frameCtuInfo, int poc); > > + int copySlicetypePocAndSceneCut(int *slicetype, int *poc, int > *sceneCut); > + > void getStreamHeaders(NALList& list, Entropy& sbacCoder, Bitstream& > bs); > > void fetchStats(x265_stats* stats, size_t statsSizeBytes); > diff -r 6a310b24c6a2 -r de91aae2db53 source/x265.h > --- a/source/x265.h Thu Nov 02 12:17:29 2017 +0530 > +++ b/source/x265.h Tue Oct 31 13:57:37 2017 +0530 > @@ -1705,6 +1705,13 @@ > int x265_encoder_ctu_info(x265_encoder *, int poc, x265_ctu_info_t** > ctu); > /* x265_cleanup: > * release library static allocations, reset configured CTU size */ > + > +/* x265_get_slicetype_poc_and_scenecut: > + * get the slice type, poc and scene cut information for the current > frame, > + * 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_slicetype_poc_and_scenecut(x265_encoder *encoder, int > *slicetype, int *poc, int* sceneCut); > + > void x265_cleanup(void); > > #define X265_MAJOR_VERSION 1 > @@ -1752,6 +1759,7 @@ > int sizeof_frame_stats; /* sizeof(x265_frame_stats) */ > int (*encoder_intra_refresh)(x265_encoder*); > int (*encoder_ctu_info)(x265_encoder*, int, > x265_ctu_info_t**); > + int (*x265_get_slicetype_poc_and_scenecut)(x265_encoder*, > int*, int*, int*); > /* add new pointers to the end, or increment X265_MAJOR_VERSION */ > } x265_api; > > _______________________________________________ > x265-devel mailing list > [email protected] > https://mailman.videolan.org/listinfo/x265-devel >
_______________________________________________ x265-devel mailing list [email protected] https://mailman.videolan.org/listinfo/x265-devel
