<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 02/20/2014 12:44 PM, Steve Borho
      wrote:<br>
    </div>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra"><br>
          <br>
          <div class="gmail_quote">On Wed, Feb 19, 2014 at 12:01 PM, <span
              dir="ltr"><<a moz-do-not-send="true"
                href="mailto:dtyx265@gmail.com" target="_blank">dtyx265@gmail.com</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex"># HG
              changeset patch<br>
              # User David T Yuen <<a moz-do-not-send="true"
                href="mailto:dtyx265@gmail.com">dtyx265@gmail.com</a>><br>
              # Date 1392832822 28800<br>
              # Node ID 8ef0c14054879a7a0ba7720ecb3a640e6b3767d1<br>
              # Parent  1c78bd13a14f3d5227c4b961664af97f86a8810d<br>
              Added command line options to generate a VUI and add it to
              the coded bitstream<br>
            </blockquote>
            <div><br>
            </div>
            <div>Hello,  Thanks for working through these details.</div>
            <div><br>
            </div>
            <div>I had some review comments for this patch but
              unfortunately didn't get around to responding to this
              patch yesterday.</div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              diff -r 1c78bd13a14f -r 8ef0c1405487
              source/Lib/TLibCommon/TComSlice.h<br>
              --- a/source/Lib/TLibCommon/TComSlice.h Wed Feb 19
              09:46:46 2014 -0800<br>
              +++ b/source/Lib/TLibCommon/TComSlice.h Wed Feb 19
              10:00:22 2014 -0800<br>
              @@ -604,6 +604,7 @@<br>
                   bool m_frameFieldInfoPresentFlag;<br>
                   bool m_hrdParametersPresentFlag;<br>
                   bool m_bitstreamRestrictionFlag;<br>
              +    bool m_tilesFixedStructureFlag;<br>
                   bool m_motionVectorsOverPicBoundariesFlag;<br>
                   bool m_restrictedRefPicListsFlag;<br>
                   int  m_minSpatialSegmentationIdc;<br>
              @@ -638,6 +639,7 @@<br>
                       , m_frameFieldInfoPresentFlag(false)<br>
                       , m_hrdParametersPresentFlag(false)<br>
                       , m_bitstreamRestrictionFlag(false)<br>
              +        , m_tilesFixedStructureFlag(false)<br>
            </blockquote>
            <div><br>
            </div>
            <div>We don't support tiles, so it is ok to leave this
              hard-coded to zero</div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
                       , m_motionVectorsOverPicBoundariesFlag(true)<br>
                       , m_restrictedRefPicListsFlag(1)<br>
                       , m_minSpatialSegmentationIdc(0)<br>
              @@ -737,6 +739,10 @@<br>
              <br>
                   void setBitstreamRestrictionFlag(bool i) {
              m_bitstreamRestrictionFlag = i; }<br>
              <br>
              +    bool getTilesFixedStructureFlag() { return
              m_tilesFixedStructureFlag; }<br>
              +<br>
              +    void setTilesFixedStructureFlag(bool i) {
              m_tilesFixedStructureFlag = i; }<br>
            </blockquote>
            <div><br>
            </div>
            <div><br>
            </div>
            <div>We're trying to remove these C++ style get/set methods.
               Just set/get these variables directly.</div>
          </div>
        </div>
      </div>
    </blockquote>
    I agree, they are more work than they are worth.  I was just
    sticking to with "coding style already in place".  I know the long
    term goal is to convert everything to C and I would rather work on
    that than simply convert the new VUI code to not use get/set style.<br>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div><br>
            </div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
                   bool getMotionVectorsOverPicBoundariesFlag() { return
              m_motionVectorsOverPicBoundariesFlag; }<br>
              <br>
                   void setMotionVectorsOverPicBoundariesFlag(bool i) {
              m_motionVectorsOverPicBoundariesFlag = i; }<br>
              diff -r 1c78bd13a14f -r 8ef0c1405487
              source/Lib/TLibEncoder/TEncCfg.h<br>
              --- a/source/Lib/TLibEncoder/TEncCfg.h  Wed Feb 19
              09:46:46 2014 -0800<br>
              +++ b/source/Lib/TLibEncoder/TEncCfg.h  Wed Feb 19
              10:00:22 2014 -0800<br>
              @@ -151,6 +151,14 @@<br>
                   int       m_maxBitsPerMinCuDenom;                    
                  ///< Indicates an upper bound for the number of
              bits of coding_unit() data<br>
                   int       m_log2MaxMvLengthHorizontal;              
                   ///< Indicate the maximum absolute value of a
              decoded horizontal MV component in quarter-pel luma units<br>
                   int       m_log2MaxMvLengthVertical;                
                   ///< Indicate the maximum absolute value of a
              decoded vertical MV component in quarter-pel luma units<br>
            </blockquote>
            <div><br>
            </div>
            <div><br>
            </div>
            <div>there's no need to add these flags to TEncCfg since
              TEncCfg itself has an x265_param structure built into it.
               These are redundant.</div>
          </div>
        </div>
      </div>
    </blockquote>
    Again, I agree, it's over engineering to copy a value from arguments
    to x265_param, to TEncCfg, to TComVUI to coded output when nothing
    happens to it other than copying it.  I wanted to work within the
    existing code structure because I thought it would make it easier to
    convert everything to C and potentially, actually preferably,
    re-structure or redesign it from it's current state than some mixed
    style.<br>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              +    bool      m_fieldSeqFlag;                            
                  ///< Indicates that each picture is a field and has
              its own SEI timing message<br>
              +    bool      m_vuiTimingInfoPresentFlag;                
                  ///< Indicates that timing info is added to the VUI<br>
              +    int       m_vuiNumUnitsInTick;                      
                   ///< The number of system ticks in an h265 tick
              where an h265 tick is in units of system ticks per frame<br>
              +    int       m_vuiTimeScale;                            
                  ///< The number of system ticks per second<br>
              +    bool      m_vuiHrdParametersPresentFlag;            
                   ///< Indicates HRD parameters are to be added to
              the VUI<br>
              +    bool      m_subPicHrdParamsPresentFlag;              
                  ///< Indicates that sub pic parameters should be
              added to the HRD<br>
              +    bool      m_restrictedRefPicListsFlag;              
                   ///< Indicates all P and B slices have the same
              reference pic list 0 and all B slices have the same
              reference pic list 1<br>
              +    bool      m_tilesFixedStructureFlag;                
                   ///< Indicates each PPS in the CVS have the same
              tile structure fields<br>
              <br>
               public:<br>
              <br>
              @@ -305,6 +313,22 @@<br>
                   bool getNonPackedConstraintFlag() const { return
              m_nonPackedConstraintFlag; }<br>
              <br>
                   bool getFrameOnlyConstraintFlag() const { return
              m_frameOnlyConstraintFlag; }<br>
            </blockquote>
            <div><br>
            </div>
            <div>ditto here, these should go away</div>
          </div>
        </div>
      </div>
    </blockquote>
    Agreed<br>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              +<br>
              +    bool getFieldSeqFlag() const { return m_fieldSeqFlag;
              }<br>
              +<br>
              +    bool getVuiTimingInfoPresentFlag() const { return
              m_vuiTimingInfoPresentFlag; }<br>
              +<br>
              +    int getVuiNumUnitsInTick() const { return
              m_vuiNumUnitsInTick; }<br>
              +<br>
              +    int getVuiTimeScale() const { return m_vuiTimeScale;
              }<br>
              +<br>
              +    bool getVuiHrdParametersPresentFlag() const { return
              m_vuiHrdParametersPresentFlag; }<br>
              +<br>
              +    bool getSubPicHrdParamsPresentFlag() const { return
              m_subPicHrdParamsPresentFlag; }<br>
              +<br>
              +    bool getRestrictedRefPicListsFlag() const { return
              m_restrictedRefPicListsFlag; }<br>
              +<br>
              +    bool getTilesFixedStructureFlag() const { return
              m_tilesFixedStructureFlag; }<br>
               };<br>
               }<br>
               //! \}<br>
              diff -r 1c78bd13a14f -r 8ef0c1405487
              source/Lib/TLibEncoder/TEncSbac.cpp<br>
              --- a/source/Lib/TLibEncoder/TEncSbac.cpp       Wed Feb 19
              09:46:46 2014 -0800<br>
              +++ b/source/Lib/TLibEncoder/TEncSbac.cpp       Wed Feb 19
              10:00:22 2014 -0800<br>
              @@ -665,7 +665,7 @@<br>
                   WRITE_FLAG(vui->getBitstreamRestrictionFlag(),    
                       "bitstream_restriction_flag");<br>
                   if (vui->getBitstreamRestrictionFlag())<br>
                   {<br>
              -        WRITE_FLAG(0,                                    
                         "tiles_fixed_structure_flag");<br>
              +        WRITE_FLAG(vui->getTilesFixedStructureFlag(),
                          "tiles_fixed_structure_flag");<br>
            </blockquote>
            <div> </div>
            <div>this one can be backed out</div>
          </div>
        </div>
      </div>
    </blockquote>
    No problem.  Are there any plans for Tiles in the future?<br>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
                     
               WRITE_FLAG(vui->getMotionVectorsOverPicBoundariesFlag(),
               "motion_vectors_over_pic_boundaries_flag");<br>
                     
               WRITE_FLAG(vui->getRestrictedRefPicListsFlag(),      
                  "restricted_ref_pic_lists_flag");<br>
                     
               WRITE_UVLC(vui->getMinSpatialSegmentationIdc(),      
                  "min_spatial_segmentation_idc");<br>
              diff -r 1c78bd13a14f -r 8ef0c1405487
              source/common/common.cpp<br>
              --- a/source/common/common.cpp  Wed Feb 19 09:46:46 2014
              -0800<br>
              +++ b/source/common/common.cpp  Wed Feb 19 10:00:22 2014
              -0800<br>
              @@ -221,6 +221,35 @@<br>
                   /* Quality Measurement Metrics */<br>
                   param->bEnablePsnr = 0;<br>
                   param->bEnableSsim = 0;<br>
              +<br>
              +    /* Video Usability Information (VUI) */<br>
              +    param->bEnableVuiParametersPresentFlag = 0;<br>
              +    param->bEnableAspectRatioIdc = 0;<br>
              +    param->aspectRatioIdc = 0;<br>
              +    param->sarWidth = 0;<br>
              +    param->sarHeight = 0;<br>
              +    param->bEnableOverscanAppropriateFlag = 0;<br>
              +    param->bEnableVideoSignalTypePresentFlag = 0;<br>
              +    param->videoFormat = 5;<br>
              +    param->bEnableVideoFullRangeFlag = 0;<br>
              +    param->bEnableColorDescriptionPresentFlag = 0;<br>
              +    param->colorPrimaries = 2;<br>
              +    param->transferCharacteristics = 2;<br>
              +    param->matrixCoeffs = 2;<br>
              +    param->bEnableChromaLocInfoPresentFlag = 0;<br>
              +    param->chromaSampleLocTypeTopField = 0;<br>
              +    param->chromaSampleLocTypeBottomField = 0;<br>
              +    param->bEnableFieldSeqFlag = 0;<br>
              +    param->bEnableFrameFieldInfoPresentFlag = 0;<br>
              +    param->bEnableDefaultDisplayWindowFlag = 0;<br>
              +    param->defDispWinLeftOffset = 0;<br>
              +    param->defDispWinRightOffset = 0;<br>
              +    param->defDispWinTopOffset = 0;<br>
              +    param->defDispWinBottomOffset = 0;<br>
              +    param->bEnableVuiTimingInfoPresentFlag = 0;<br>
              +    param->bEnableVuiHrdParametersPresentFlag = 0;<br>
              +    param->bEnableBitstreamRestrictionFlag = 0;<br>
              +    param->bEnableSubPicHrdParamsPresentFlag = 0;<br>
               }<br>
              <br>
               extern "C"<br>
              @@ -764,6 +793,200 @@<br>
                   OPT("me")        p->searchMethod =
              parseName(value, x265_motion_est_names, berror);<br>
                   OPT("cutree")    p->rc.cuTree = bvalue;<br>
                   OPT("no-cutree") p->rc.cuTree = bvalue;<br>
              +    OPT("vui")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = bvalue;<br>
              +        p->bEnableAspectRatioIdc = bvalue;<br>
              +        p->bEnableOverscanInfoPresentFlag = bvalue;<br>
              +        p->bEnableVideoSignalTypePresentFlag = bvalue;<br>
              +        p->bEnableColorDescriptionPresentFlag =
              bvalue;<br>
              +        p->bEnableChromaLocInfoPresentFlag = bvalue;<br>
              +        p->bEnableFieldSeqFlag = bvalue;<br>
              +        p->bEnableFrameFieldInfoPresentFlag = bvalue;<br>
              +        p->bEnableDefaultDisplayWindowFlag = bvalue;<br>
              +        p->bEnableVuiTimingInfoPresentFlag = bvalue;<br>
              +        p->bEnableVuiHrdParametersPresentFlag =
              bvalue;<br>
              +        p->bEnableBitstreamRestrictionFlag = bvalue;<br>
              +        p->bEnableSubPicHrdParamsPresentFlag = bvalue;<br>
              +    }<br>
              +    OPT("sar")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableAspectRatioIdc = bvalue;<br>
              +        p->aspectRatioIdc = atoi(value);<br>
              +    }<br>
              +    OPT("extended-sar")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableAspectRatioIdc = bvalue;<br>
              +        p->aspectRatioIdc = 255;<br>
              +        sscanf(value, "%dx%d", &p->sarWidth,
              &p->sarHeight);<br>
              +    }<br>
              +    OPT("overscan")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        if (!strcmp(value, "show"))<br>
              +            p->bEnableOverscanInfoPresentFlag =
              bvalue;<br>
              +        else if (!strcmp(value, "crop"))<br>
              +        {<br>
              +            p->bEnableOverscanInfoPresentFlag =
              bvalue;<br>
              +            p->bEnableOverscanAppropriateFlag =
              bvalue;<br>
              +        }<br>
              +    }<br>
              +    OPT("videoformat")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableVideoSignalTypePresentFlag = bvalue;<br>
              +        if (!strcmp(value, "component"))<br>
              +            p->videoFormat = 0;<br>
              +        else if (!strcmp(value, "pal"))<br>
              +            p->videoFormat = 1;<br>
              +        else if (!strcmp(value, "ntsc"))<br>
              +            p->videoFormat = 2;<br>
              +        else if (!strcmp(value, "secam"))<br>
              +            p->videoFormat = 3;<br>
              +        else if (!strcmp(value, "mac"))<br>
              +            p->videoFormat = 4;<br>
              +        else if (!strcmp(value, "undef"))<br>
              +            p->videoFormat = 5;<br>
              +    }<br>
              +    OPT("range")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableVideoSignalTypePresentFlag = bvalue;<br>
              +        p->bEnableVideoFullRangeFlag = bvalue;<br>
              +    }<br>
              +    OPT("colorprim")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableVideoSignalTypePresentFlag = bvalue;<br>
              +        p->bEnableColorDescriptionPresentFlag =
              bvalue;<br>
              +        if (!strcmp(value, "bt709"))<br>
              +            p->colorPrimaries = 1;<br>
              +        else if (!strcmp(value, "undef"))<br>
              +            p->colorPrimaries = 2;<br>
              +        else if (!strcmp(value, "bt470m"))<br>
              +            p->colorPrimaries = 4;<br>
              +        else if (!strcmp(value, "bt470bg"))<br>
              +            p->colorPrimaries = 5;<br>
              +        else if (!strcmp(value, "smpte170m"))<br>
              +            p->colorPrimaries = 6;<br>
              +        else if (!strcmp(value, "smpte240m"))<br>
              +            p->colorPrimaries = 7;<br>
              +        else if (!strcmp(value, "film"))<br>
              +            p->colorPrimaries = 8;<br>
              +        else if (!strcmp(value, "bt2020"))<br>
              +            p->colorPrimaries = 9;<br>
              +    }<br>
              +    OPT("transfer")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableVideoSignalTypePresentFlag = bvalue;<br>
              +        p->bEnableColorDescriptionPresentFlag =
              bvalue;<br>
              +        if (!strcmp(value, "bt709"))<br>
              +            p->transferCharacteristics = 1;<br>
              +        else if (!strcmp(value, "undef"))<br>
              +            p->transferCharacteristics = 2;<br>
              +        else if (!strcmp(value, "bt470m"))<br>
              +            p->transferCharacteristics = 4;<br>
              +        else if (!strcmp(value, "bt470bg"))<br>
              +            p->transferCharacteristics = 5;<br>
              +        else if (!strcmp(value, "smpte170m"))<br>
              +            p->transferCharacteristics = 6;<br>
              +        else if (!strcmp(value, "smpte240m"))<br>
              +            p->transferCharacteristics = 7;<br>
              +        else if (!strcmp(value, "linear"))<br>
              +            p->transferCharacteristics = 8;<br>
              +        else if (!strcmp(value, "log100"))<br>
              +            p->transferCharacteristics = 9;<br>
              +        else if (!strcmp(value, "log316"))<br>
              +            p->transferCharacteristics = 10;<br>
              +        else if (!strcmp(value, "iec61966-2-4"))<br>
              +            p->transferCharacteristics = 11;<br>
              +        else if (!strcmp(value, "bt1361e"))<br>
              +            p->transferCharacteristics = 12;<br>
              +        else if (!strcmp(value, "iec61966-2-1"))<br>
              +            p->transferCharacteristics = 13;<br>
              +        else if (!strcmp(value, "bt2020-10"))<br>
              +            p->transferCharacteristics = 14;<br>
              +        else if (!strcmp(value, "bt2020-12"))<br>
              +            p->transferCharacteristics = 15;<br>
              +    }<br>
              +    OPT("colormatrix")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableVideoSignalTypePresentFlag = bvalue;<br>
              +        p->bEnableColorDescriptionPresentFlag =
              bvalue;<br>
              +        if (!strcmp(value, "GBR"))<br>
              +            p->matrixCoeffs = 0;<br>
              +        else if (!strcmp(value, "bt709"))<br>
              +            p->matrixCoeffs = 1;<br>
              +        else if (!strcmp(value, "undef"))<br>
              +            p->matrixCoeffs = 2;<br>
              +        else if (!strcmp(value, "fcc"))<br>
              +            p->matrixCoeffs = 4;<br>
              +        else if (!strcmp(value, "bt470bg"))<br>
              +            p->matrixCoeffs = 5;<br>
              +        else if (!strcmp(value, "smpte170m"))<br>
              +            p->matrixCoeffs = 6;<br>
              +        else if (!strcmp(value, "smpte240m"))<br>
              +            p->matrixCoeffs = 7;<br>
              +        else if (!strcmp(value, "YCgCo"))<br>
              +            p->matrixCoeffs = 8;<br>
              +        else if (!strcmp(value, "bt2020nc"))<br>
              +            p->matrixCoeffs = 9;<br>
              +        else if (!strcmp(value, "bt2020c"))<br>
              +            p->matrixCoeffs = 10;<br>
              +    }<br>
              +    OPT("chromaloc")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableChromaLocInfoPresentFlag = bvalue;<br>
              +        p->chromaSampleLocTypeTopField = atoi(value);<br>
              +        p->chromaSampleLocTypeBottomField =
              p->chromaSampleLocTypeTopField;<br>
              +    }<br>
              +    OPT("fieldseq")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableFieldSeqFlag = bvalue;<br>
              +    }<br>
              +    OPT("framefieldinfo")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableFrameFieldInfoPresentFlag = bvalue;<br>
              +    }<br>
              +    OPT("crop-rect")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableDefaultDisplayWindowFlag = bvalue;<br>
              +        sscanf(value,"%d,%d,%d,%d",<br>
              +            &p->defDispWinLeftOffset,<br>
              +            &p->defDispWinTopOffset,<br>
              +            &p->defDispWinRightOffset,<br>
              +            &p->defDispWinBottomOffset);<br>
              +    }<br>
              +    OPT("timinginfo")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableVuiTimingInfoPresentFlag = bvalue;<br>
              +    }<br>
              +    OPT("nal-hrd")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableVuiTimingInfoPresentFlag = bvalue;<br>
              +        p->bEnableVuiHrdParametersPresentFlag =
              bvalue;<br>
              +    }<br>
              +    OPT("bitstreamrestriction")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableBitstreamRestrictionFlag = bvalue;<br>
              +    }<br>
              +    OPT("subpichrd")<br>
              +    {<br>
              +        p->bEnableVuiParametersPresentFlag = 1;<br>
              +        p->bEnableVuiHrdParametersPresentFlag =
              bvalue;<br>
              +        p->bEnableSubPicHrdParamsPresentFlag = bvalue;<br>
              +    }<br>
              <br>
                   else<br>
                       return X265_PARAM_BAD_NAME;<br>
              diff -r 1c78bd13a14f -r 8ef0c1405487
              source/encoder/encoder.cpp<br>
              --- a/source/encoder/encoder.cpp        Wed Feb 19
              09:46:46 2014 -0800<br>
              +++ b/source/encoder/encoder.cpp        Wed Feb 19
              10:00:22 2014 -0800<br>
              @@ -1043,7 +1043,7 @@<br>
                   if (sps->getVuiParametersPresentFlag())<br>
                   {<br>
                       TComVUI* vui = sps->getVuiParameters();<br>
              -      
               vui->setAspectRatioInfoPresentFlag(getAspectRatioIdc()
              != -1);<br>
            </blockquote>
            <div><br>
            </div>
            <div>you can use param.* here</div>
          </div>
        </div>
      </div>
    </blockquote>
    Again, I was just maintaining style.<br>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              +      
               vui->setAspectRatioInfoPresentFlag(getAspectRatioInfoPresentFlag());<br>
                       vui->setAspectRatioIdc(getAspectRatioIdc());<br>
                       vui->setSarWidth(getSarWidth());<br>
                       vui->setSarHeight(getSarHeight());<br>
              @@ -1062,12 +1062,17 @@<br>
                     
 vui->setNeutralChromaIndicationFlag(getNeutralChromaIndicationFlag());<br>
                     
               vui->setDefaultDisplayWindow(getDefaultDisplayWindow());<br>
                     
               vui->setFrameFieldInfoPresentFlag(getFrameFieldInfoPresentFlag());<br>
              -        vui->setFieldSeqFlag(false);<br>
              -        vui->setHrdParametersPresentFlag(false);<br>
              +        vui->setFieldSeqFlag(getFieldSeqFlag());<br>
              +      
               vui->setHrdParametersPresentFlag(getVuiHrdParametersPresentFlag());<br>
              +      
 vui->getTimingInfo()->setTimingInfoPresentFlag(getVuiTimingInfoPresentFlag());<br>
              +      
               vui->getTimingInfo()->setNumUnitsInTick(getVuiNumUnitsInTick());<br>
              +      
               vui->getTimingInfo()->setTimeScale(getVuiTimeScale());<br>
                     
 vui->getTimingInfo()->setPocProportionalToTimingFlag(getPocProportionalToTimingFlag());<br>
                     
 vui->getTimingInfo()->setNumTicksPocDiffOneMinus1(getNumTicksPocDiffOneMinus1());<br>
                     
               vui->setBitstreamRestrictionFlag(getBitstreamRestrictionFlag());<br>
              +      
               vui->setTilesFixedStructureFlag(getTilesFixedStructureFlag());<br>
                     
 vui->setMotionVectorsOverPicBoundariesFlag(getMotionVectorsOverPicBoundariesFlag());<br>
              +      
               vui->setRestrictedRefPicListsFlag(getRestrictedRefPicListsFlag());<br>
                     
               vui->setMinSpatialSegmentationIdc(getMinSpatialSegmentationIdc());<br>
                     
               vui->setMaxBytesPerPicDenom(getMaxBytesPerPicDenom());<br>
                     
               vui->setMaxBitsPerMinCuDenom(getMaxBitsPerMinCuDenom());<br>
              @@ -1390,11 +1395,11 @@<br>
                   m_quadtreeTULog2MinSize = tuQTMinLog2Size;<br>
              <br>
                   //========= set default display window
              ==================================<br>
              -    m_defaultDisplayWindow.m_enabledFlag = true;<br>
              -    m_defaultDisplayWindow.m_winRightOffset = 0;<br>
              -    m_defaultDisplayWindow.m_winTopOffset = 0;<br>
              -    m_defaultDisplayWindow.m_winBottomOffset = 0;<br>
              -    m_defaultDisplayWindow.m_winLeftOffset = 0;<br>
              +    m_defaultDisplayWindow.m_enabledFlag =
              _param->bEnableDefaultDisplayWindowFlag;<br>
              +    m_defaultDisplayWindow.m_winRightOffset =
              _param->defDispWinRightOffset;<br>
              +    m_defaultDisplayWindow.m_winTopOffset =
              _param->defDispWinTopOffset;<br>
              +    m_defaultDisplayWindow.m_winBottomOffset =
              _param->defDispWinBottomOffset;<br>
              +    m_defaultDisplayWindow.m_winLeftOffset =
              _param->defDispWinLeftOffset;<br>
                   m_pad[0] = m_pad[1] = 0;<br>
              <br>
                   //======== set pad size if width is not multiple of
              the minimum CU size =========<br>
              @@ -1465,25 +1470,26 @@<br>
                   m_decodingUnitInfoSEIEnabled = 0;<br>
                   m_useScalingListId = 0;<br>
                   m_activeParameterSetsSEIEnabled = 0;<br>
            </blockquote>
            <div><br>
            </div>
            <div>All the sets to fields redundant with x265_param should
              go away</div>
          </div>
        </div>
      </div>
    </blockquote>
    Agreed.<br>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              -    m_vuiParametersPresentFlag = false;<br>
              +    m_vuiParametersPresentFlag =
              _param->bEnableVuiParametersPresentFlag;<br>
                   m_minSpatialSegmentationIdc = 0;<br>
              -    m_aspectRatioIdc = 0;<br>
              -    m_sarWidth = 0;<br>
              -    m_sarHeight = 0;<br>
              -    m_overscanInfoPresentFlag = false;<br>
              -    m_overscanAppropriateFlag = false;<br>
              -    m_videoSignalTypePresentFlag = false;<br>
              -    m_videoFormat = 5;<br>
              -    m_videoFullRangeFlag = false;<br>
              -    m_colourDescriptionPresentFlag = false;<br>
              -    m_colourPrimaries = 2;<br>
              -    m_transferCharacteristics = 2;<br>
              -    m_matrixCoefficients = 2;<br>
              -    m_chromaLocInfoPresentFlag = false;<br>
              -    m_chromaSampleLocTypeTopField = 0;<br>
              -    m_chromaSampleLocTypeBottomField = 0;<br>
              +    m_aspectRatioInfoPresentFlag =
              _param->bEnableAspectRatioIdc;<br>
              +    m_aspectRatioIdc = _param->aspectRatioIdc;<br>
              +    m_sarWidth = _param->sarWidth;<br>
              +    m_sarHeight = _param->sarHeight;<br>
              +    m_overscanInfoPresentFlag =
              _param->bEnableOverscanInfoPresentFlag;<br>
              +    m_overscanAppropriateFlag =
              _param->bEnableOverscanAppropriateFlag;<br>
              +    m_videoSignalTypePresentFlag =
              _param->bEnableVideoSignalTypePresentFlag;<br>
              +    m_videoFormat = _param->videoFormat;<br>
              +    m_videoFullRangeFlag =
              _param->bEnableVideoFullRangeFlag;<br>
              +    m_colourDescriptionPresentFlag =
              _param->bEnableColorDescriptionPresentFlag;<br>
              +    m_colourPrimaries = _param->colorPrimaries;<br>
              +    m_transferCharacteristics =
              _param->transferCharacteristics;<br>
              +    m_matrixCoefficients = _param->matrixCoeffs;<br>
              +    m_chromaLocInfoPresentFlag =
              _param->bEnableChromaLocInfoPresentFlag;<br>
              +    m_chromaSampleLocTypeTopField =
              _param->chromaSampleLocTypeTopField;<br>
              +    m_chromaSampleLocTypeBottomField =
              _param->chromaSampleLocTypeBottomField;<br>
                   m_neutralChromaIndicationFlag = false;<br>
              -    m_frameFieldInfoPresentFlag = false;<br>
              +    m_frameFieldInfoPresentFlag =
              _param->bEnableFrameFieldInfoPresentFlag;<br>
                   m_pocProportionalToTimingFlag = false;<br>
                   m_numTicksPocDiffOneMinus1 = 0;<br>
                   m_bitstreamRestrictionFlag = false;<br>
              @@ -1501,6 +1507,11 @@<br>
                   m_useLossless = false;  // x264 configures this via
              --qp=0<br>
                   m_TransquantBypassEnableFlag = false;<br>
                   m_CUTransquantBypassFlagValue = false;<br>
              +    m_fieldSeqFlag = _param->bEnableFieldSeqFlag;<br>
              +    m_vuiTimingInfoPresentFlag =
              _param->bEnableVuiTimingInfoPresentFlag;<br>
              +    m_vuiHrdParametersPresentFlag =
              _param->bEnableVuiHrdParametersPresentFlag;<br>
              +    m_bitstreamRestrictionFlag =
              _param->bEnableBitstreamRestrictionFlag;<br>
              +    m_subPicHrdParamsPresentFlag =
              _param->bEnableSubPicHrdParamsPresentFlag;<br>
               }<br>
              <br>
               int Encoder::extractNalData(NALUnitEBSP **nalunits)<br>
              diff -r 1c78bd13a14f -r 8ef0c1405487 source/x265.cpp<br>
              --- a/source/x265.cpp   Wed Feb 19 09:46:46 2014 -0800<br>
              +++ b/source/x265.cpp   Wed Feb 19 10:00:22 2014 -0800<br>
              @@ -154,6 +154,26 @@<br>
                   { "strong-intra-smoothing",    no_argument, NULL, 0
              },<br>
                   { "no-cutree",                 no_argument, NULL, 0
              },<br>
                   { "cutree",                    no_argument, NULL, 0
              },<br>
              +    { "vui",                  no_argument, NULL, 0 },<br>
              +    { "sar",            required_argument, NULL, 0 },<br>
              +    { "extended-sar",   required_argument, NULL, 0 },<br>
              +    { "overscan",       required_argument, NULL, 0 },<br>
              +    { "videoformat",    required_argument, NULL, 0 },<br>
              +    { "range",                no_argument, NULL, 0 },<br>
              +    { "no-range",             no_argument, NULL, 0 },<br>
              +    { "colorprim",      required_argument, NULL, 0 },<br>
              +    { "transfer",       required_argument, NULL, 0 },<br>
              +    { "colormatrix",    required_argument, NULL, 0 },<br>
              +    { "chromaloc",      required_argument, NULL, 0 },<br>
              +    { "fieldseq",             no_argument, NULL, 0 },<br>
              +    { "no-fieldseq",          no_argument, NULL, 0 },<br>
              +    { "framefieldinfo",       no_argument, NULL, 0 },<br>
              +    { "no-framefieldinfo",    no_argument, NULL, 0 },<br>
              +    { "crop-rect",      required_argument, NULL, 0 },<br>
              +    { "timinginfo",           no_argument, NULL, 0 },<br>
              +    { "nal-hrd",              no_argument, NULL, 0 },<br>
              +    { "bitstreamrestriction", no_argument, NULL, 0 },<br>
              +    { "subpichrd",            no_argument, NULL, 0 },<br>
                   { 0, 0, 0, 0 }<br>
               };<br>
              <br>
              @@ -351,6 +371,32 @@<br>
                   H0("   --recon-depth                 Bit-depth of
              reconstructed raw image file. Defaults to input bit
              depth\n");<br>
                   H0("\nSEI options:\n");<br>
                   H0("   --hash                        Decoded Picture
              Hash SEI 0: disabled, 1: MD5, 2: CRC, 3: Checksum. Default
              %d\n", param->decodedPictureHashSEI);<br>
              +    H0("\nVUI options:\n");<br>
              +    H0("   --vui                         Add Video
              Useability Information with all fields to the SPS. Default
              %s\n", OPT(param->bEnableVuiParametersPresentFlag));<br>
              +    H0("   --sar                         Sample Aspect
              Ratio, the ratio of width to height of an individual
              pixel.\n");<br>
              +    H0("                                 Choose from
              0=Unspecified, 1=1:1(\"square\"), 2=12:11, 3=10:11,
              4=16:11,\n");<br>
              +    H0("                                 5=40:33,
              6=24:11, 7=20:11, 8=32:11, 9=80:33, 10=18:11,
              11=15:11,\n");<br>
              +    H0("                                 12=64:33,
              13=160:99, 14=4:3, 15=3:2, 16=2:1. Default
              %d\n",param->aspectRatioIdc);<br>
              +    H0("   --extended-sar                Use a custom
              Sample Aspect Ratio,[WxH]\n");<br>
              +    H0("   --overscan <string>           Specify
              crop overscan setting from undef, show or crop. Default of
              undef\n");<br>
              +    H0("   --videoformat <string>        Specify
              video format from undef, component, pal, ntsc, secam, mac.
              Default of undef\n");<br>
              +    H0("   --[no-]range                       Specify
              black level and range of luma and chroma signals. Default
              of %s\n", OPT(param->bEnableVideoFullRangeFlag));<br>
              +    H0("   --colorprim <string>          Specify
              color primaries from undef, bt709, bt470m, bt470bg,
              smpte170m,\n");<br>
              +    H0("                                 smpte240m, film,
              bt2020. Default of undef\n");<br>
              +    H0("   --transfer <string>           Specify
              transfer characteristics from undef, bt709, bt470m,
              bt470bg, smpte170m,\n");<br>
              +    H0("                                 smpte240m,
              linear, log100, log316, iec61966-2-4, bt1361e,
              iec61966-2-1,\n");<br>
              +    H0("                                 bt2020-10,
              bt2020-12. Default of undef\n");<br>
              +    H0("   --colormatrix <string>        Specify
              color matrix setting from undef, bt709, fcc, bt470bg,
              smpte170m,\n");<br>
              +    H0("                                 smpte240m, GBR,
              YCgCo, bt2020nc, bt2020c\n");<br>
              +    H0("   --chromaloc <integer>         Specify
              chroma sample location (0 to 5). Default of
              %d\n",param->chromaSampleLocTypeTopField);<br>
              +    H0("   --[no-]fieldseq               Specify that
              pictures are fields and an SEI timing message\n");<br>
              +    H0("                                 will be added to
              every access unit. Default %s\n",
              OPT(param->bEnableFieldSeqFlag));<br>
              +    H0("   --[no-]framefieldinfo         Specify that a
              pic-struct will be added to the SEI timing message.
              Default %s\n",
              OPT(param->bEnableFrameFieldInfoPresentFlag));<br>
              +    H0("   --crop-rect <string>          Add
              'left,top,right,bottom' to the bitstream-level cropping
              rectangle\n");<br>
              +    H0("   --timinginfo                  Add timing
              information to the VUI. Defaut %s\n",
              OPT(param->bEnableVuiTimingInfoPresentFlag));<br>
              +    H0("   --nal-hrd                     Signal HRD
              information. Default %s\n",
              OPT(param->bEnableVuiHrdParametersPresentFlag));<br>
              +    H0("   --bitstreamrestriction        Add bit stream
              restriction fields to the VUI. Default %s\n",
              OPT(param->bEnableBitstreamRestrictionFlag));<br>
              +    H0("   --subpichrd                   Add sub picture
              HRD parameters to the HRD. Default %s\n",
              OPT(param->bEnableSubPicHrdParamsPresentFlag));<br>
            </blockquote>
            <div><br>
            </div>
            <div>nicely done</div>
          </div>
        </div>
      </div>
    </blockquote>
    Thanks.  It's all modeled after x264 cli.<br>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
               #undef OPT<br>
               #undef H0<br>
                   exit(0);<br>
              diff -r 1c78bd13a14f -r 8ef0c1405487 source/x265.h<br>
              --- a/source/x265.h     Wed Feb 19 09:46:46 2014 -0800<br>
              +++ b/source/x265.h     Wed Feb 19 10:00:22 2014 -0800<br>
              @@ -332,6 +332,147 @@<br>
                    * types are MD5(1), CRC(2), Checksum(3).  Default is
              0, none */<br>
                   int       decodedPictureHashSEI;<br>
            </blockquote>
            <div><br>
            </div>
            <div>I think these parameters should go within a vui
              sub-struct, similar to the rc sub-struct.</div>
            <div><br>
            </div>
            <div>Excellent job documenting them all.</div>
          </div>
        </div>
      </div>
    </blockquote>
    I was planning on reviewing these.  A few may come close to
    plagiarizing the h265 spec.  In those cases, unless someone can come
    up with something better I suggest simply quoting the h265 spec and
    giving it credit.<br>
    <blockquote
cite="mid:CACD6pqPe2-Mro42H5=0rxooBOve_2ncmaC8SfkOorem-5OmHyQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <br>
              +    /*== Video Usability Information ==*/<br>
              +<br>
              +    /* Enable the generation of a VUI with all fields in
              the SPS.  VUI fields<br>
              +     * that are not specified on the command line will
              have default values. */<br>
              +    int       bEnableVuiParametersPresentFlag;<br>
              +<br>
              +    /* Enable aspect ratio in VUI.  Causes the
              aspect_ratio_idc to be added<br>
              +     * to the VUI.  The default is false. */<br>
              +    int bEnableAspectRatioIdc;<br>
              +<br>
              +    /* Aspect ratio idc to be added to the VUI.  The
              default is 0 indicating<br>
              +     * the apsect ratio is unspecified.  If set to
              EXTENDED_SAR(255) then<br>
              +     * sarWidth and sarHeight must also be set. */<br>
              +    int       aspectRatioIdc;<br>
              +<br>
              +    /* Sample Aspect Ratio width in arbitrary units to be
              added to the VUI<br>
              +     * only if aspectRatioIdc is set to
              EXTENDED_SAR(255).  This is the width<br>
              +     * of an individual pixel.  If this is set then
              sarHeight must also be set.<br>
              +     */<br>
              +    int       sarWidth;<br>
              +<br>
              +    /* Sample Aspect Ratio height in arbitrary units to
              be added to the VUI.<br>
              +     * only if aspectRatioIdc is set to
              EXTENDED_SAR(255).  This is the width<br>
              +     * of an individual pixel.  If this is set then
              sarWidth must also be set.<br>
              +     */<br>
              +    int       sarHeight;<br>
              +<br>
              +    /* Enable overscan info present flag in the VUI.  If
              this is set then<br>
              +     * bEnabledOverscanAppropriateFlag will be added to
              the VUI. The default<br>
              +     * is false. */<br>
              +    int       bEnableOverscanInfoPresentFlag;<br>
              +<br>
              +    /* Enable overscan appropriate flag.  The status of
              this flag is added to<br>
              +     * the VUI only if bEnableOverscanInfoPresentFlag is
              set.  If this flag is<br>
              +     * set then cropped decoded pictures may be output
              for display. The default<br>
              +     * is false. */<br>
              +    int       bEnableOverscanAppropriateFlag;<br>
              +<br>
              +    /* Video signal type present flag of the VUI.  If
              this is set then<br>
              +     * videoFormat, bEnableVideoFullRangeFlag and<br>
              +     * bEnableColorDescriptionPresentFlag will be added
              to the VUI.  The default<br>
              +     * is false. */<br>
              +    int       bEnableVideoSignalTypePresentFlag;<br>
              +<br>
              +    /* Video format of the source video.  0 = component,
              1 = PAL, 2 = NTSC,<br>
              +     * 3 = SECAM, 4 = MAC, 5 = unspecified video format
              is the default. */<br>
              +    int       videoFormat;<br>
              +<br>
              +    /* Video full range flag indicates the black level
              and range of the luma<br>
              +     * and chroma signals as derived from E′Y, E′PB, and
              E′PR or E′R, E′G, and<br>
              +     * E′B real-valued component signals.  False is the
              default. */<br>
              +    int       bEnableVideoFullRangeFlag;<br>
              +<br>
              +    /* Color description present flag in the VUI.  If
              this is set then<br>
              +     * color_primaries, transfer_characteristics and
              matrix_coeffs are to be added<br>
              +     * to the VUI.  The default is false. */<br>
              +    int       bEnableColorDescriptionPresentFlag;<br>
              +<br>
              +    /* Color primaries holds the chromacity coordinates
              of the source primaries.<br>
              +     * The default is 2. */<br>
              +    int       colorPrimaries;<br>
              +<br>
              +    /* Transfer characteristics indicates the
              opto-electronic transfer characteristic<br>
              +     * of the source picture.  The default is 2. */<br>
              +    int       transferCharacteristics;<br>
              +<br>
              +    /* Matrix coefficients used to derive the luma and
              chroma signals from the red,<br>
              +     * blue and green primaries.  The default is 2. */<br>
              +    int       matrixCoeffs;<br>
              +<br>
              +    /* Chroma location info present flag adds
              chroma_sample_loc_type_top_field and<br>
              +     * chroma_sample_loc_type_bottom_field to the VUI.
               The default is false. */<br>
              +    int       bEnableChromaLocInfoPresentFlag;<br>
              +<br>
              +    /* Chroma sample location type top field holds the
              chroma location in the top<br>
              +     * field.  The default is 0. */<br>
              +    int       chromaSampleLocTypeTopField;<br>
              +<br>
              +    /* Chroma sample location type bottom field holds the
              chroma location in the bottom<br>
              +     * field.  The default is 0. */<br>
              +    int       chromaSampleLocTypeBottomField;<br>
              +<br>
              +    /* Field seq flag specifies that the pictures are
              fields and each one has a<br>
              +     * timing SEI message.  The default is false */<br>
              +    int       bEnableFieldSeqFlag;<br>
              +<br>
              +    /* Frame field info present flag indicates that each
              picture has a timing SEI<br>
              +     * message wich includes a pic_struct,
              source_scan_type and duplicate_flag<br>
              +     * elements.  If not set then the pic_struct element
              is not included.  The<br>
              +     * default is false. */<br>
              +    int       bEnableFrameFieldInfoPresentFlag;<br>
              +<br>
              +    /* Default display window flag adds
              def_disp_win_left_offset ,<br>
              +     * def_disp_win_right_offset, def_disp_win_top_offset
              and<br>
              +     * def_disp_win_bottom_offset to the VUI.  The
              default is false. */<br>
              +    int       bEnableDefaultDisplayWindowFlag;<br>
              +<br>
              +    /* Default display window left offset holds the left
              offset with the<br>
              +     * conformance cropping window to further crop the
              displayed window. */<br>
              +    int       defDispWinLeftOffset;<br>
              +<br>
              +    /* Default display window right offset holds the
              right offset with the<br>
              +     * conformance cropping window to further crop the
              displayed window. */<br>
              +    int       defDispWinRightOffset;<br>
              +<br>
              +    /* Default display window top offset holds the top
              offset with the<br>
              +     * conformance cropping window to further crop the
              displayed window. */<br>
              +    int       defDispWinTopOffset;<br>
              +<br>
              +    /* Default display window bottom offset holds the
              bottom offset with the<br>
              +     * conformance cropping window to further crop the
              displayed window. */<br>
              +    int       defDispWinBottomOffset;<br>
              +<br>
              +    /* VUI timing info present flag adds
              vui_num_units_in_tick, vui_time_scale,<br>
              +     * vui_poc_proportional_to_timing_flag and
              vui_hrd_parameters_present_flag<br>
              +     * to the VUI.  vui_num_units_in_tick, vui_time_scale
              and<br>
              +     * vui_poc_proportional_to_timing_flag are derived
              from processing the input<br>
              +     * video.  The default is false. */<br>
              +    int       bEnableVuiTimingInfoPresentFlag;<br>
              +<br>
              +    /* VUI hrd parameters present flag adds the HRD to
              the VUI */<br>
              +    int       bEnableVuiHrdParametersPresentFlag;<br>
              +<br>
              +    /* Bitstream restriction flag adds
              tiles_fixed_structure_flag,<br>
              +     * motion_vectors_over_pic_boundaries_flag,
              restricted_ref_pic_lists_flag,<br>
              +     * min_spatial_segmentation_idc,
              max_bytes_per_pic_denom,<br>
              +     * max_bit_per_min_cu_denom,
              log2_max_mv_length_horizontal and<br>
              +     * log2_max_mv_length_vertical to the VUI. All values
              are derived from<br>
              +     * processing the input video.  The default is false.
               */<br>
              +    int       bEnableBitstreamRestrictionFlag;<br>
              +<br>
              +    /*== Hypothetical Reference Decoder Parameters ==*/<br>
              +<br>
              +    /* Sub pic HRD params present flag determines if
              tic_divisor_minus2,<br>
              +     * du_cpb_removal_delay_increment_length_minus1,<br>
              +     * sub_pic_cpb_params_in_pic_timing_sei_flag,<br>
              +     * dpb_output_delay_du_length_minus1 and
              cpb_size_du_scale<br>
              +     * are added to the HRD.  All are derived from
              processing the input video.<br>
              +     * The default is false. */<br>
              +    int       bEnableSubPicHrdParamsPresentFlag;<br>
              +<br>
                   /*== Internal Picture Specification ==*/<br>
              <br>
                   /* Internal encoder bit depth. If x265 was compiled
              to use 8bit pixels<br>
              _______________________________________________<br>
              x265-devel mailing list<br>
              <a moz-do-not-send="true"
                href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
              <a moz-do-not-send="true"
                href="https://mailman.videolan.org/listinfo/x265-devel"
                target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
            </blockquote>
          </div>
          <br>
          <br clear="all">
          <div><br>
          </div>
          -- <br>
          Steve Borho
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
x265-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a>
<a class="moz-txt-link-freetext" href="https://mailman.videolan.org/listinfo/x265-devel">https://mailman.videolan.org/listinfo/x265-devel</a>
</pre>
    </blockquote>
    I have already found a minor nit here and there so you will probably
    see me submit a relevant tweak here and there.<br>
    <br>
    There looks like a lot of cruft in the design of x265, mostly from
    the HM base, If you want get rid of it then there needs to be a plan
    of coming up with something to replace it with and I am not a fan of
    simply replacing x265's C++ classes with C structures that are
    copies of those classes.  If this is something that you need
    somebody to work on then I would like to volunteer.<br>
  </body>
</html>