[x265] [PATCH] api: Introduce param options to toggle PPS bitstream optimizations
Pradeep Ramachandran
pradeep at multicorewareinc.com
Mon Oct 17 13:27:57 CEST 2016
On Mon, Oct 17, 2016 at 4:44 PM, Deepthi Nandakumar <
deepthipnandakumar at gmail.com> wrote:
>
>
> On Mon, Oct 17, 2016 at 2:00 PM, Pradeep Ramachandran <
> pradeep at multicorewareinc.com> wrote:
>
>> # HG changeset patch
>> # User Pradeep Ramachandran <pradeep at multicorewareinc.com>
>> # Date 1476693005 -19800
>> # Mon Oct 17 14:00:05 2016 +0530
>> # Node ID 304116f4cd41bc4fd610d5b16c6f447a50b8df02
>> # Parent c97805dad9148ad3cddba10a67ed5596508e8f86
>> api: Introduce param options to toggle PPS bitstream optimizations
>>
>> diff -r c97805dad914 -r 304116f4cd41 source/CMakeLists.txt
>> --- a/source/CMakeLists.txt Thu Oct 13 17:53:48 2016 +0800
>> +++ b/source/CMakeLists.txt Mon Oct 17 14:00:05 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 97)
>> +set(X265_BUILD 98)
>> configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
>> "${PROJECT_BINARY_DIR}/x265.def")
>> configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
>> diff -r c97805dad914 -r 304116f4cd41 source/common/param.cpp
>> --- a/source/common/param.cpp Thu Oct 13 17:53:48 2016 +0800
>> +++ b/source/common/param.cpp Mon Oct 17 14:00:05 2016 +0530
>> @@ -230,9 +230,6 @@
>> param->rc.qpMin = 0;
>> param->rc.qpMax = QP_MAX_MAX;
>>
>> - param->bEmitVUITimingInfo = 1;
>> - param->bEmitVUIHRDInfo = 1;
>> -
>> /* Video Usability Information (VUI) */
>> param->vui.aspectRatioIdc = 0;
>> param->vui.sarWidth = 0;
>> @@ -259,6 +256,12 @@
>> param->maxLuma = PIXEL_MAX;
>> param->log2MaxPocLsb = 8;
>> param->maxSlices = 1;
>> +
>> + param->bEmitVUITimingInfo = 1;
>> + param->bEmitVUIHRDInfo = 1;
>> + param->bOptQpPPS = 1;
>> + param->bOptRefListLengthPPS = 1;
>> +
>> }
>>
>> int x265_param_default_preset(x265_param* param, const char* preset,
>> const char* tune)
>> @@ -910,6 +913,8 @@
>> OPT("vui-hrd-info") p->bEmitVUIHRDInfo = atobool(value);
>> OPT("slices") p->maxSlices = atoi(value);
>> OPT("limit-tu") p->limitTU = atoi(value);
>> + OPT("opt-qp-pps") p->bOptQpPPS = atobool(value);
>> + OPT("opt-ref-list-length-pps") p->bOptRefListLengthPPS =
>> atobool(value);
>> else
>> return X265_PARAM_BAD_NAME;
>> }
>> diff -r c97805dad914 -r 304116f4cd41 source/encoder/encoder.cpp
>> --- a/source/encoder/encoder.cpp Thu Oct 13 17:53:48 2016 +0800
>> +++ b/source/encoder/encoder.cpp Mon Oct 17 14:00:05 2016 +0530
>> @@ -874,7 +874,7 @@
>> slice->m_endCUAddr = slice->realEndAddress(m_sps.numCUsInFrame
>> * NUM_4x4_PARTITIONS);
>> }
>>
>> - if( frameEnc->m_lowres.bKeyframe && m_param->bRepeatHeaders )
>> + if( m_param->bOptQpPPS && frameEnc->m_lowres.bKeyframe &&
>> m_param->bRepeatHeaders )
>>
>
> Lots of whitespace errors in this block, introduced by 43d4754ea627
>
Looks like our emails crossed. I have cleaned those up in another patch
that I just sent to the mailing list.
>
>
>> {
>> ScopedLock qpLock( m_sliceQpLock );
>> if( m_iFrameNum > 0 )
>> diff -r c97805dad914 -r 304116f4cd41 source/encoder/frameencoder.cpp
>> --- a/source/encoder/frameencoder.cpp Thu Oct 13 17:53:48 2016 +0800
>> +++ b/source/encoder/frameencoder.cpp Mon Oct 17 14:00:05 2016 +0530
>> @@ -354,6 +354,7 @@
>> }
>> if (m_frame->m_lowres.bKeyframe && m_param->bRepeatHeaders)
>> {
>> + if (m_param->bOptRefListLengthPPS)
>> {
>> ScopedLock refIdxLock(m_top->m_sliceRefIdxLock);
>> m_top->updateRefIdx();
>> @@ -467,7 +468,7 @@
>> /* Clip slice QP to 0-51 spec range before encoding */
>> slice->m_sliceQp = x265_clip3(-QP_BD_OFFSET, QP_MAX_SPEC, qp);
>>
>> - if( m_param->bRepeatHeaders )
>> + if( m_param->bOptQpPPS && m_param->bRepeatHeaders )
>>
>
> And here
>
>
>> {
>> ScopedLock qpLock( m_top->m_sliceQpLock );
>> for( int i = 0; i < (QP_MAX_MAX + 1); i++ )
>> @@ -861,6 +862,7 @@
>> const uint32_t sliceAddr = nextSliceRow * m_numCols;
>> //CUData* ctu = m_frame->m_encData->getPicCTU(sliceAddr);
>> //const int sliceQp = ctu->m_qp[0];
>> + if (m_param->bOptRefListLengthPPS)
>> {
>> ScopedLock refIdxLock(m_top->m_sliceRefIdxLock);
>> m_top->analyseRefIdx(slice->m_numRefIdx);
>> @@ -888,6 +890,7 @@
>> }
>> else
>> {
>> + if (m_param->bOptRefListLengthPPS)
>> {
>> ScopedLock refIdxLock(m_top->m_sliceRefIdxLock);
>> m_top->analyseRefIdx(slice->m_numRefIdx);
>> diff -r c97805dad914 -r 304116f4cd41 source/x265.h
>> --- a/source/x265.h Thu Oct 13 17:53:48 2016 +0800
>> +++ b/source/x265.h Mon Oct 17 14:00:05 2016 +0530
>> @@ -1317,6 +1317,12 @@
>> /* Maximum count of Slices of picture, the value range is [1,
>> maximum rows] */
>> unsigned int maxSlices;
>>
>> + /* Optimize QP in PPS based on statistics from prevvious GOP*/
>> + int bOptQpPPS;
>> +
>> + /* Opitmize ref list length in PPS based on stats from previous GOP*/
>> + int bOptRefListLengthPPS;
>> +
>> } x265_param;
>>
>> /* x265_param_alloc:
>> diff -r c97805dad914 -r 304116f4cd41 source/x265cli.h
>> --- a/source/x265cli.h Thu Oct 13 17:53:48 2016 +0800
>> +++ b/source/x265cli.h Mon Oct 17 14:00:05 2016 +0530
>> @@ -213,6 +213,10 @@
>> { "no-vui-timing-info", no_argument, NULL, 0 },
>> { "vui-hrd-info", no_argument, NULL, 0 },
>> { "no-vui-hrd-info", no_argument, NULL, 0 },
>> + { "opt-qp-pps", no_argument, NULL, 0 },
>> + { "no-opt-qp-pps", no_argument, NULL, 0 },
>> + { "opt-ref-list-length-pps", no_argument, NULL, 0 },
>> + { "no-opt-ref-list-length-pps", no_argument, NULL, 0 },
>> { "no-dither", no_argument, NULL, 0 },
>> { "dither", no_argument, NULL, 0 },
>> { "no-repeat-headers", no_argument, NULL, 0 },
>> @@ -452,8 +456,10 @@
>> H0(" --[no-]aud Emit access unit delimiters at
>> the start of each access unit. Default %s\n", OPT(param->bEnableAccessUnitDe
>> limiters));
>> 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(" --[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));
>> + 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));
>> + H0(" --[no-]opt-qp-pps Discard optional HRD timing
>> information from the bistream. Default %s\n", OPT(param->bOptQpPPS));
>> + H0(" --[no-]opt-ref-list-length-pps Discard optional HRD timing
>> information from the bistream. Default %s\n", OPT(param->bOptRefListLengthPP
>> S));
>> 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 at videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>>
>>
>
>
> --
> Deepthi
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20161017/c99ce68b/attachment.html>
More information about the x265-devel
mailing list