# HG changeset patch # User Pradeep Ramachandran <prad...@multicorewareinc.com> # Date 1475478199 -19800 # Mon Oct 03 12:33:19 2016 +0530 # Node ID 91ed7cb38e66c43116e1d279e94d087d462e71ce # Parent 11bfa0ae971029fed69554e700185a8ef93a289c bitstream: Modify API to discard optional VUI params, remove discard SEI API
Cleaner API to remove optional timing & HRD info from VUI. Remove discard SEI API as it can be done through a combo of other API options diff -r 11bfa0ae9710 -r 91ed7cb38e66 doc/reST/cli.rst --- a/doc/reST/cli.rst Wed Sep 28 15:18:23 2016 +0530 +++ b/doc/reST/cli.rst Mon Oct 03 12:33:19 2016 +0530 @@ -1824,7 +1824,7 @@ enhancement layer. A decoder may chose to drop the enhancement layer and only decode and display the base layer slices. - If used with a fixed GOP (:option:`b-adapt` 0) and :option:`bframes` + If used with a fixed GOP (:option:`--b-adapt` 0) and :option:`--bframes` 3 then the two layers evenly split the frame rate, with a cadence of PbBbP. You probably also want :option:`--no-scenecut` and a keyframe interval that is a multiple of 4. @@ -1833,15 +1833,15 @@ Maximum of the picture order count. Default 8 -.. option:: --discard-sei +.. option:: --[no]-vui-timing-info - Discard SEI messages generated from the final bitstream. HDR-related SEI - messages are always dumped, immaterial of this option. Default disabled. - -.. option:: --discard-vui + Discard optional VUI timing info from bitstream. Default enabled. - Discard optional VUI information (timing, HRD info) from the - bitstream. Default disabled. +.. option:: --[no]-vui-hrd-info + + Discard optional VUI HRD info from bitstream. Default enabled when + :option:`--hrd` is enabled. + Debugging options ================= diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/CMakeLists.txt --- a/source/CMakeLists.txt Wed Sep 28 15:18:23 2016 +0530 +++ b/source/CMakeLists.txt Mon Oct 03 12:33:19 2016 +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 95) +set(X265_BUILD 96) configure_file("${PROJECT_SOURCE_DIR}/x265.def.in" "${PROJECT_BINARY_DIR}/x265.def") configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in" diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/common/param.cpp --- a/source/common/param.cpp Wed Sep 28 15:18:23 2016 +0530 +++ b/source/common/param.cpp Mon Oct 03 12:33:19 2016 +0530 @@ -229,7 +229,8 @@ param->rc.qpMin = 0; param->rc.qpMax = QP_MAX_MAX; - param->bDiscardOptionalVUI = 0; + param->bEmitVUITimingInfo = 1; + param->bEmitVUIHRDInfo = 1; /* Video Usability Information (VUI) */ param->vui.aspectRatioIdc = 0; @@ -256,7 +257,6 @@ param->minLuma = 0; param->maxLuma = PIXEL_MAX; param->log2MaxPocLsb = 8; - param->bDiscardSEI = false; param->maxSlices = 1; } @@ -914,8 +914,8 @@ OPT("qpmin") p->rc.qpMin = atoi(value); OPT("analyze-src-pics") p->bSourceReferenceEstimation = atobool(value); OPT("log2-max-poc-lsb") p->log2MaxPocLsb = atoi(value); - OPT("discard-sei") p->bDiscardSEI = atobool(value); - OPT("discard-vui") p->bDiscardOptionalVUI = atobool(value); + OPT("vui-timing-info") p->bEmitVUITimingInfo = atobool(value); + OPT("vui-hrd-info") p->bEmitVUIHRDInfo = atobool(value); else return X265_PARAM_BAD_NAME; } diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/common/slice.h --- a/source/common/slice.h Wed Sep 28 15:18:23 2016 +0530 +++ b/source/common/slice.h Mon Oct 03 12:33:19 2016 +0530 @@ -243,7 +243,8 @@ bool bUseAMP; // use param bool bUseStrongIntraSmoothing; // use param bool bTemporalMVPEnabled; - bool bDiscardOptionalVUI; + bool bEmitVUITimingInfo; + bool bEmitVUIHRDInfo; Window conformanceWindow; VUI vuiParameters; diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/encoder/encoder.cpp --- a/source/encoder/encoder.cpp Wed Sep 28 15:18:23 2016 +0530 +++ b/source/encoder/encoder.cpp Mon Oct 03 12:33:19 2016 +0530 @@ -1491,7 +1491,7 @@ list.serialize(NAL_UNIT_PREFIX_SEI, bs); } - if (!m_param->bDiscardSEI && m_param->bEmitInfoSEI) + if (m_param->bEmitInfoSEI) { char *opts = x265_param2string(m_param); if (opts) @@ -1521,7 +1521,7 @@ } } - if (!m_param->bDiscardSEI && (m_param->bEmitHRDSEI || !!m_param->interlaceMode)) + if ((m_param->bEmitHRDSEI || !!m_param->interlaceMode)) { /* Picture Timing and Buffering Period SEI require the SPS to be "activated" */ SEIActiveParameterSets sei; @@ -1576,7 +1576,8 @@ sps->bUseStrongIntraSmoothing = m_param->bEnableStrongIntraSmoothing; sps->bTemporalMVPEnabled = m_param->bEnableTemporalMvp; - sps->bDiscardOptionalVUI = m_param->bDiscardOptionalVUI; + sps->bEmitVUITimingInfo = m_param->bEmitVUITimingInfo; + sps->bEmitVUIHRDInfo = m_param->bEmitVUIHRDInfo; sps->log2MaxPocLsb = m_param->log2MaxPocLsb; int maxDeltaPOC = (m_param->bframes + 2) * (!!m_param->bBPyramid + 1) * 2; while ((1 << sps->log2MaxPocLsb) <= maxDeltaPOC * 2) diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/encoder/entropy.cpp --- a/source/encoder/entropy.cpp Wed Sep 28 15:18:23 2016 +0530 +++ b/source/encoder/entropy.cpp Mon Oct 03 12:33:19 2016 +0530 @@ -319,7 +319,7 @@ WRITE_FLAG(sps.bUseStrongIntraSmoothing, "sps_strong_intra_smoothing_enable_flag"); WRITE_FLAG(1, "vui_parameters_present_flag"); - codeVUI(sps.vuiParameters, sps.maxTempSubLayers, sps.bDiscardOptionalVUI); + codeVUI(sps.vuiParameters, sps.maxTempSubLayers, sps.bEmitVUITimingInfo, sps.bEmitVUIHRDInfo); WRITE_FLAG(0, "sps_extension_flag"); } @@ -422,7 +422,7 @@ } } -void Entropy::codeVUI(const VUI& vui, int maxSubTLayers, bool bDiscardOptionalVUI) +void Entropy::codeVUI(const VUI& vui, int maxSubTLayers, bool bEmitVUITimingInfo, bool bEmitVUIHRDInfo) { WRITE_FLAG(vui.aspectRatioInfoPresentFlag, "aspect_ratio_info_present_flag"); if (vui.aspectRatioInfoPresentFlag) @@ -473,7 +473,7 @@ WRITE_UVLC(vui.defaultDisplayWindow.bottomOffset, "def_disp_win_bottom_offset"); } - if (bDiscardOptionalVUI) + if (!bEmitVUITimingInfo) WRITE_FLAG(0, "vui_timing_info_present_flag"); else { @@ -483,7 +483,7 @@ WRITE_FLAG(0, "vui_poc_proportional_to_timing_flag"); } - if (bDiscardOptionalVUI) + if (!bEmitVUIHRDInfo) WRITE_FLAG(0, "vui_hrd_parameters_present_flag"); else { diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/encoder/entropy.h --- a/source/encoder/entropy.h Wed Sep 28 15:18:23 2016 +0530 +++ b/source/encoder/entropy.h Mon Oct 03 12:33:19 2016 +0530 @@ -143,7 +143,7 @@ void codeVPS(const VPS& vps); void codeSPS(const SPS& sps, const ScalingList& scalingList, const ProfileTierLevel& ptl); void codePPS( const PPS& pps, bool filerAcross, int iPPSInitQpMinus26 ); - void codeVUI(const VUI& vui, int maxSubTLayers, bool discardOptionalVUI); + void codeVUI(const VUI& vui, int maxSubTLayers, bool bEmitVUITimingInfo, bool bEmitVUIHRDInfo); void codeAUD(const Slice& slice); void codeHrdParameters(const HRDInfo& hrd, int maxSubTLayers); diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/encoder/frameencoder.cpp --- a/source/encoder/frameencoder.cpp Wed Sep 28 15:18:23 2016 +0530 +++ b/source/encoder/frameencoder.cpp Mon Oct 03 12:33:19 2016 +0530 @@ -525,7 +525,7 @@ if (m_frame->m_lowres.bKeyframe) { - if (!m_param->bDiscardSEI && m_param->bEmitHRDSEI) + if (m_param->bEmitHRDSEI) { SEIBufferingPeriod* bpSei = &m_top->m_rateControl->m_bufPeriodSEI; @@ -547,7 +547,7 @@ } } - if (!m_param->bDiscardSEI && (m_param->bEmitHRDSEI || !!m_param->interlaceMode)) + if ((m_param->bEmitHRDSEI || !!m_param->interlaceMode)) { SEIPictureTiming *sei = m_rce.picTimingSEI; const VUI *vui = &slice->m_sps->vuiParameters; @@ -583,22 +583,19 @@ } /* Write user SEI */ - if (!m_param->bDiscardSEI) + for (int i = 0; i < m_frame->m_userSEI.numPayloads; i++) { - for (int i = 0; i < m_frame->m_userSEI.numPayloads; i++) - { - x265_sei_payload *payload = &m_frame->m_userSEI.payloads[i]; - SEIuserDataUnregistered sei; + x265_sei_payload *payload = &m_frame->m_userSEI.payloads[i]; + SEIuserDataUnregistered sei; - sei.m_payloadType = payload->payloadType; - sei.m_userDataLength = payload->payloadSize; - sei.m_userData = payload->payload; + sei.m_payloadType = payload->payloadType; + sei.m_userDataLength = payload->payloadSize; + sei.m_userData = payload->payload; - m_bs.resetBits(); - sei.write(m_bs, *slice->m_sps); - m_bs.writeByteAlignment(); - m_nalList.serialize(NAL_UNIT_PREFIX_SEI, m_bs); - } + m_bs.resetBits(); + sei.write(m_bs, *slice->m_sps); + m_bs.writeByteAlignment(); + m_nalList.serialize(NAL_UNIT_PREFIX_SEI, m_bs); } /* CQP and CRF (without capped VBV) doesn't use mid-frame statistics to @@ -895,7 +892,7 @@ } - if (!m_param->bDiscardSEI && m_param->decodedPictureHashSEI) + if (m_param->decodedPictureHashSEI) { int planes = (m_frame->m_param->internalCsp != X265_CSP_I400) ? 3 : 1; if (m_param->decodedPictureHashSEI == 1) diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/x265.h --- a/source/x265.h Wed Sep 28 15:18:23 2016 +0530 +++ b/source/x265.h Mon Oct 03 12:33:19 2016 +0530 @@ -1301,11 +1301,11 @@ /* Maximum of the picture order count */ int log2MaxPocLsb; - /* Dicard SEI messages when printing */ - int bDiscardSEI; - - /* Control removing optional vui information (timing, HRD info) to get low bitrate */ - int bDiscardOptionalVUI; + /* Emit VUI Timing info, an optional VUI field */ + int bEmitVUITimingInfo; + + /* Emit HRD Timing info */ + int bEmitVUIHRDInfo; /* Maximum count of Slices of picture, the value range is [1, maximum rows] */ unsigned int maxSlices; diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/x265cli.h --- a/source/x265cli.h Wed Sep 28 15:18:23 2016 +0530 +++ b/source/x265cli.h Mon Oct 03 12:33:19 2016 +0530 @@ -208,8 +208,10 @@ { "min-luma", required_argument, NULL, 0 }, { "max-luma", required_argument, NULL, 0 }, { "log2-max-poc-lsb", required_argument, NULL, 8 }, - { "discard-sei", no_argument, NULL, 0 }, - { "discard-vui", no_argument, NULL, 0 }, + { "vui-timing-info", no_argument, NULL, 0 }, + { "no-vui-timing-info", no_argument, NULL, 0 }, + { "vui-hrd-info", no_argument, NULL, 0 }, + { "no-vui-hrd-info", no_argument, NULL, 0 }, { "no-dither", no_argument, NULL, 0 }, { "dither", no_argument, NULL, 0 }, { "no-repeat-headers", no_argument, NULL, 0 }, @@ -448,8 +450,8 @@ H0(" --[no-]aud Emit access unit delimiters at the start of each access unit. Default %s\n", OPT(param->bEnableAccessUnitDelimiters)); H1(" --hash <integer> Decoded Picture Hash SEI 0: disabled, 1: MD5, 2: CRC, 3: Checksum. Default %d\n", param->decodedPictureHashSEI); H0(" --log2-max-poc-lsb <integer> Maximum of the picture order count\n"); - H0(" --discard-sei Discard SEI packets in bitstream. Default %s\n", OPT(param->bDiscardSEI)); - H0(" --discard-vui Discard optional VUI information from the bistream. Default %s\n", OPT(param->bDiscardOptionalVUI)); + H0(" --[no]-vui-timing-info Discard optional VUI timing information from the bistream. Default %s\n", OPT(param->bEmitVUITimingInfo)); + H0(" --[no]-vui-hrd-info Discard optional HRD timing information from the bistream. Default %s\n", OPT(param->bEmitVUIHRDInfo)); H1("\nReconstructed video options (debugging):\n"); H1("-r/--recon <filename> Reconstructed raw image YUV or Y4M output file name\n"); H1(" --recon-depth <integer> Bit-depth of reconstructed raw image file. Defaults to input bit depth, or 8 if Y4M\n");
# HG changeset patch # User Pradeep Ramachandran <prad...@multicorewareinc.com> # Date 1475478199 -19800 # Mon Oct 03 12:33:19 2016 +0530 # Node ID 91ed7cb38e66c43116e1d279e94d087d462e71ce # Parent 11bfa0ae971029fed69554e700185a8ef93a289c bitstream: Modify API to discard optional VUI params, remove discard SEI API Cleaner API to remove optional timing & HRD info from VUI. Remove discard SEI API as it can be done through a combo of other API options diff -r 11bfa0ae9710 -r 91ed7cb38e66 doc/reST/cli.rst --- a/doc/reST/cli.rst Wed Sep 28 15:18:23 2016 +0530 +++ b/doc/reST/cli.rst Mon Oct 03 12:33:19 2016 +0530 @@ -1824,7 +1824,7 @@ enhancement layer. A decoder may chose to drop the enhancement layer and only decode and display the base layer slices. - If used with a fixed GOP (:option:`b-adapt` 0) and :option:`bframes` + If used with a fixed GOP (:option:`--b-adapt` 0) and :option:`--bframes` 3 then the two layers evenly split the frame rate, with a cadence of PbBbP. You probably also want :option:`--no-scenecut` and a keyframe interval that is a multiple of 4. @@ -1833,15 +1833,15 @@ Maximum of the picture order count. Default 8 -.. option:: --discard-sei +.. option:: --[no]-vui-timing-info - Discard SEI messages generated from the final bitstream. HDR-related SEI - messages are always dumped, immaterial of this option. Default disabled. - -.. option:: --discard-vui + Discard optional VUI timing info from bitstream. Default enabled. - Discard optional VUI information (timing, HRD info) from the - bitstream. Default disabled. +.. option:: --[no]-vui-hrd-info + + Discard optional VUI HRD info from bitstream. Default enabled when + :option:`--hrd` is enabled. + Debugging options ================= diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/CMakeLists.txt --- a/source/CMakeLists.txt Wed Sep 28 15:18:23 2016 +0530 +++ b/source/CMakeLists.txt Mon Oct 03 12:33:19 2016 +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 95) +set(X265_BUILD 96) configure_file("${PROJECT_SOURCE_DIR}/x265.def.in" "${PROJECT_BINARY_DIR}/x265.def") configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in" diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/common/param.cpp --- a/source/common/param.cpp Wed Sep 28 15:18:23 2016 +0530 +++ b/source/common/param.cpp Mon Oct 03 12:33:19 2016 +0530 @@ -229,7 +229,8 @@ param->rc.qpMin = 0; param->rc.qpMax = QP_MAX_MAX; - param->bDiscardOptionalVUI = 0; + param->bEmitVUITimingInfo = 1; + param->bEmitVUIHRDInfo = 1; /* Video Usability Information (VUI) */ param->vui.aspectRatioIdc = 0; @@ -256,7 +257,6 @@ param->minLuma = 0; param->maxLuma = PIXEL_MAX; param->log2MaxPocLsb = 8; - param->bDiscardSEI = false; param->maxSlices = 1; } @@ -914,8 +914,8 @@ OPT("qpmin") p->rc.qpMin = atoi(value); OPT("analyze-src-pics") p->bSourceReferenceEstimation = atobool(value); OPT("log2-max-poc-lsb") p->log2MaxPocLsb = atoi(value); - OPT("discard-sei") p->bDiscardSEI = atobool(value); - OPT("discard-vui") p->bDiscardOptionalVUI = atobool(value); + OPT("vui-timing-info") p->bEmitVUITimingInfo = atobool(value); + OPT("vui-hrd-info") p->bEmitVUIHRDInfo = atobool(value); else return X265_PARAM_BAD_NAME; } diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/common/slice.h --- a/source/common/slice.h Wed Sep 28 15:18:23 2016 +0530 +++ b/source/common/slice.h Mon Oct 03 12:33:19 2016 +0530 @@ -243,7 +243,8 @@ bool bUseAMP; // use param bool bUseStrongIntraSmoothing; // use param bool bTemporalMVPEnabled; - bool bDiscardOptionalVUI; + bool bEmitVUITimingInfo; + bool bEmitVUIHRDInfo; Window conformanceWindow; VUI vuiParameters; diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/encoder/encoder.cpp --- a/source/encoder/encoder.cpp Wed Sep 28 15:18:23 2016 +0530 +++ b/source/encoder/encoder.cpp Mon Oct 03 12:33:19 2016 +0530 @@ -1491,7 +1491,7 @@ list.serialize(NAL_UNIT_PREFIX_SEI, bs); } - if (!m_param->bDiscardSEI && m_param->bEmitInfoSEI) + if (m_param->bEmitInfoSEI) { char *opts = x265_param2string(m_param); if (opts) @@ -1521,7 +1521,7 @@ } } - if (!m_param->bDiscardSEI && (m_param->bEmitHRDSEI || !!m_param->interlaceMode)) + if ((m_param->bEmitHRDSEI || !!m_param->interlaceMode)) { /* Picture Timing and Buffering Period SEI require the SPS to be "activated" */ SEIActiveParameterSets sei; @@ -1576,7 +1576,8 @@ sps->bUseStrongIntraSmoothing = m_param->bEnableStrongIntraSmoothing; sps->bTemporalMVPEnabled = m_param->bEnableTemporalMvp; - sps->bDiscardOptionalVUI = m_param->bDiscardOptionalVUI; + sps->bEmitVUITimingInfo = m_param->bEmitVUITimingInfo; + sps->bEmitVUIHRDInfo = m_param->bEmitVUIHRDInfo; sps->log2MaxPocLsb = m_param->log2MaxPocLsb; int maxDeltaPOC = (m_param->bframes + 2) * (!!m_param->bBPyramid + 1) * 2; while ((1 << sps->log2MaxPocLsb) <= maxDeltaPOC * 2) diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/encoder/entropy.cpp --- a/source/encoder/entropy.cpp Wed Sep 28 15:18:23 2016 +0530 +++ b/source/encoder/entropy.cpp Mon Oct 03 12:33:19 2016 +0530 @@ -319,7 +319,7 @@ WRITE_FLAG(sps.bUseStrongIntraSmoothing, "sps_strong_intra_smoothing_enable_flag"); WRITE_FLAG(1, "vui_parameters_present_flag"); - codeVUI(sps.vuiParameters, sps.maxTempSubLayers, sps.bDiscardOptionalVUI); + codeVUI(sps.vuiParameters, sps.maxTempSubLayers, sps.bEmitVUITimingInfo, sps.bEmitVUIHRDInfo); WRITE_FLAG(0, "sps_extension_flag"); } @@ -422,7 +422,7 @@ } } -void Entropy::codeVUI(const VUI& vui, int maxSubTLayers, bool bDiscardOptionalVUI) +void Entropy::codeVUI(const VUI& vui, int maxSubTLayers, bool bEmitVUITimingInfo, bool bEmitVUIHRDInfo) { WRITE_FLAG(vui.aspectRatioInfoPresentFlag, "aspect_ratio_info_present_flag"); if (vui.aspectRatioInfoPresentFlag) @@ -473,7 +473,7 @@ WRITE_UVLC(vui.defaultDisplayWindow.bottomOffset, "def_disp_win_bottom_offset"); } - if (bDiscardOptionalVUI) + if (!bEmitVUITimingInfo) WRITE_FLAG(0, "vui_timing_info_present_flag"); else { @@ -483,7 +483,7 @@ WRITE_FLAG(0, "vui_poc_proportional_to_timing_flag"); } - if (bDiscardOptionalVUI) + if (!bEmitVUIHRDInfo) WRITE_FLAG(0, "vui_hrd_parameters_present_flag"); else { diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/encoder/entropy.h --- a/source/encoder/entropy.h Wed Sep 28 15:18:23 2016 +0530 +++ b/source/encoder/entropy.h Mon Oct 03 12:33:19 2016 +0530 @@ -143,7 +143,7 @@ void codeVPS(const VPS& vps); void codeSPS(const SPS& sps, const ScalingList& scalingList, const ProfileTierLevel& ptl); void codePPS( const PPS& pps, bool filerAcross, int iPPSInitQpMinus26 ); - void codeVUI(const VUI& vui, int maxSubTLayers, bool discardOptionalVUI); + void codeVUI(const VUI& vui, int maxSubTLayers, bool bEmitVUITimingInfo, bool bEmitVUIHRDInfo); void codeAUD(const Slice& slice); void codeHrdParameters(const HRDInfo& hrd, int maxSubTLayers); diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/encoder/frameencoder.cpp --- a/source/encoder/frameencoder.cpp Wed Sep 28 15:18:23 2016 +0530 +++ b/source/encoder/frameencoder.cpp Mon Oct 03 12:33:19 2016 +0530 @@ -525,7 +525,7 @@ if (m_frame->m_lowres.bKeyframe) { - if (!m_param->bDiscardSEI && m_param->bEmitHRDSEI) + if (m_param->bEmitHRDSEI) { SEIBufferingPeriod* bpSei = &m_top->m_rateControl->m_bufPeriodSEI; @@ -547,7 +547,7 @@ } } - if (!m_param->bDiscardSEI && (m_param->bEmitHRDSEI || !!m_param->interlaceMode)) + if ((m_param->bEmitHRDSEI || !!m_param->interlaceMode)) { SEIPictureTiming *sei = m_rce.picTimingSEI; const VUI *vui = &slice->m_sps->vuiParameters; @@ -583,22 +583,19 @@ } /* Write user SEI */ - if (!m_param->bDiscardSEI) + for (int i = 0; i < m_frame->m_userSEI.numPayloads; i++) { - for (int i = 0; i < m_frame->m_userSEI.numPayloads; i++) - { - x265_sei_payload *payload = &m_frame->m_userSEI.payloads[i]; - SEIuserDataUnregistered sei; + x265_sei_payload *payload = &m_frame->m_userSEI.payloads[i]; + SEIuserDataUnregistered sei; - sei.m_payloadType = payload->payloadType; - sei.m_userDataLength = payload->payloadSize; - sei.m_userData = payload->payload; + sei.m_payloadType = payload->payloadType; + sei.m_userDataLength = payload->payloadSize; + sei.m_userData = payload->payload; - m_bs.resetBits(); - sei.write(m_bs, *slice->m_sps); - m_bs.writeByteAlignment(); - m_nalList.serialize(NAL_UNIT_PREFIX_SEI, m_bs); - } + m_bs.resetBits(); + sei.write(m_bs, *slice->m_sps); + m_bs.writeByteAlignment(); + m_nalList.serialize(NAL_UNIT_PREFIX_SEI, m_bs); } /* CQP and CRF (without capped VBV) doesn't use mid-frame statistics to @@ -895,7 +892,7 @@ } - if (!m_param->bDiscardSEI && m_param->decodedPictureHashSEI) + if (m_param->decodedPictureHashSEI) { int planes = (m_frame->m_param->internalCsp != X265_CSP_I400) ? 3 : 1; if (m_param->decodedPictureHashSEI == 1) diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/x265.h --- a/source/x265.h Wed Sep 28 15:18:23 2016 +0530 +++ b/source/x265.h Mon Oct 03 12:33:19 2016 +0530 @@ -1301,11 +1301,11 @@ /* Maximum of the picture order count */ int log2MaxPocLsb; - /* Dicard SEI messages when printing */ - int bDiscardSEI; - - /* Control removing optional vui information (timing, HRD info) to get low bitrate */ - int bDiscardOptionalVUI; + /* Emit VUI Timing info, an optional VUI field */ + int bEmitVUITimingInfo; + + /* Emit HRD Timing info */ + int bEmitVUIHRDInfo; /* Maximum count of Slices of picture, the value range is [1, maximum rows] */ unsigned int maxSlices; diff -r 11bfa0ae9710 -r 91ed7cb38e66 source/x265cli.h --- a/source/x265cli.h Wed Sep 28 15:18:23 2016 +0530 +++ b/source/x265cli.h Mon Oct 03 12:33:19 2016 +0530 @@ -208,8 +208,10 @@ { "min-luma", required_argument, NULL, 0 }, { "max-luma", required_argument, NULL, 0 }, { "log2-max-poc-lsb", required_argument, NULL, 8 }, - { "discard-sei", no_argument, NULL, 0 }, - { "discard-vui", no_argument, NULL, 0 }, + { "vui-timing-info", no_argument, NULL, 0 }, + { "no-vui-timing-info", no_argument, NULL, 0 }, + { "vui-hrd-info", no_argument, NULL, 0 }, + { "no-vui-hrd-info", no_argument, NULL, 0 }, { "no-dither", no_argument, NULL, 0 }, { "dither", no_argument, NULL, 0 }, { "no-repeat-headers", no_argument, NULL, 0 }, @@ -448,8 +450,8 @@ H0(" --[no-]aud Emit access unit delimiters at the start of each access unit. Default %s\n", OPT(param->bEnableAccessUnitDelimiters)); H1(" --hash <integer> Decoded Picture Hash SEI 0: disabled, 1: MD5, 2: CRC, 3: Checksum. Default %d\n", param->decodedPictureHashSEI); H0(" --log2-max-poc-lsb <integer> Maximum of the picture order count\n"); - H0(" --discard-sei Discard SEI packets in bitstream. Default %s\n", OPT(param->bDiscardSEI)); - H0(" --discard-vui Discard optional VUI information from the bistream. Default %s\n", OPT(param->bDiscardOptionalVUI)); + H0(" --[no]-vui-timing-info Discard optional VUI timing information from the bistream. Default %s\n", OPT(param->bEmitVUITimingInfo)); + H0(" --[no]-vui-hrd-info Discard optional HRD timing information from the bistream. Default %s\n", OPT(param->bEmitVUIHRDInfo)); H1("\nReconstructed video options (debugging):\n"); H1("-r/--recon <filename> Reconstructed raw image YUV or Y4M output file name\n"); H1(" --recon-depth <integer> Bit-depth of reconstructed raw image file. Defaults to input bit depth, or 8 if Y4M\n");
_______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel