[x265] [PATCH] Added command line options to generate a VUI and add it to the coded bitstream
dtyx265 at gmail.com
dtyx265 at gmail.com
Wed Feb 19 19:01:04 CET 2014
# HG changeset patch
# User David T Yuen <dtyx265 at gmail.com>
# Date 1392832822 28800
# Node ID 8ef0c14054879a7a0ba7720ecb3a640e6b3767d1
# Parent 1c78bd13a14f3d5227c4b961664af97f86a8810d
Added command line options to generate a VUI and add it to the coded bitstream
diff -r 1c78bd13a14f -r 8ef0c1405487 source/Lib/TLibCommon/TComSlice.h
--- a/source/Lib/TLibCommon/TComSlice.h Wed Feb 19 09:46:46 2014 -0800
+++ b/source/Lib/TLibCommon/TComSlice.h Wed Feb 19 10:00:22 2014 -0800
@@ -604,6 +604,7 @@
bool m_frameFieldInfoPresentFlag;
bool m_hrdParametersPresentFlag;
bool m_bitstreamRestrictionFlag;
+ bool m_tilesFixedStructureFlag;
bool m_motionVectorsOverPicBoundariesFlag;
bool m_restrictedRefPicListsFlag;
int m_minSpatialSegmentationIdc;
@@ -638,6 +639,7 @@
, m_frameFieldInfoPresentFlag(false)
, m_hrdParametersPresentFlag(false)
, m_bitstreamRestrictionFlag(false)
+ , m_tilesFixedStructureFlag(false)
, m_motionVectorsOverPicBoundariesFlag(true)
, m_restrictedRefPicListsFlag(1)
, m_minSpatialSegmentationIdc(0)
@@ -737,6 +739,10 @@
void setBitstreamRestrictionFlag(bool i) { m_bitstreamRestrictionFlag = i; }
+ bool getTilesFixedStructureFlag() { return m_tilesFixedStructureFlag; }
+
+ void setTilesFixedStructureFlag(bool i) { m_tilesFixedStructureFlag = i; }
+
bool getMotionVectorsOverPicBoundariesFlag() { return m_motionVectorsOverPicBoundariesFlag; }
void setMotionVectorsOverPicBoundariesFlag(bool i) { m_motionVectorsOverPicBoundariesFlag = i; }
diff -r 1c78bd13a14f -r 8ef0c1405487 source/Lib/TLibEncoder/TEncCfg.h
--- a/source/Lib/TLibEncoder/TEncCfg.h Wed Feb 19 09:46:46 2014 -0800
+++ b/source/Lib/TLibEncoder/TEncCfg.h Wed Feb 19 10:00:22 2014 -0800
@@ -151,6 +151,14 @@
int m_maxBitsPerMinCuDenom; ///< Indicates an upper bound for the number of bits of coding_unit() data
int m_log2MaxMvLengthHorizontal; ///< Indicate the maximum absolute value of a decoded horizontal MV component in quarter-pel luma units
int m_log2MaxMvLengthVertical; ///< Indicate the maximum absolute value of a decoded vertical MV component in quarter-pel luma units
+ bool m_fieldSeqFlag; ///< Indicates that each picture is a field and has its own SEI timing message
+ bool m_vuiTimingInfoPresentFlag; ///< Indicates that timing info is added to the VUI
+ int m_vuiNumUnitsInTick; ///< The number of system ticks in an h265 tick where an h265 tick is in units of system ticks per frame
+ int m_vuiTimeScale; ///< The number of system ticks per second
+ bool m_vuiHrdParametersPresentFlag; ///< Indicates HRD parameters are to be added to the VUI
+ bool m_subPicHrdParamsPresentFlag; ///< Indicates that sub pic parameters should be added to the HRD
+ 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
+ bool m_tilesFixedStructureFlag; ///< Indicates each PPS in the CVS have the same tile structure fields
public:
@@ -305,6 +313,22 @@
bool getNonPackedConstraintFlag() const { return m_nonPackedConstraintFlag; }
bool getFrameOnlyConstraintFlag() const { return m_frameOnlyConstraintFlag; }
+
+ bool getFieldSeqFlag() const { return m_fieldSeqFlag; }
+
+ bool getVuiTimingInfoPresentFlag() const { return m_vuiTimingInfoPresentFlag; }
+
+ int getVuiNumUnitsInTick() const { return m_vuiNumUnitsInTick; }
+
+ int getVuiTimeScale() const { return m_vuiTimeScale; }
+
+ bool getVuiHrdParametersPresentFlag() const { return m_vuiHrdParametersPresentFlag; }
+
+ bool getSubPicHrdParamsPresentFlag() const { return m_subPicHrdParamsPresentFlag; }
+
+ bool getRestrictedRefPicListsFlag() const { return m_restrictedRefPicListsFlag; }
+
+ bool getTilesFixedStructureFlag() const { return m_tilesFixedStructureFlag; }
};
}
//! \}
diff -r 1c78bd13a14f -r 8ef0c1405487 source/Lib/TLibEncoder/TEncSbac.cpp
--- a/source/Lib/TLibEncoder/TEncSbac.cpp Wed Feb 19 09:46:46 2014 -0800
+++ b/source/Lib/TLibEncoder/TEncSbac.cpp Wed Feb 19 10:00:22 2014 -0800
@@ -665,7 +665,7 @@
WRITE_FLAG(vui->getBitstreamRestrictionFlag(), "bitstream_restriction_flag");
if (vui->getBitstreamRestrictionFlag())
{
- WRITE_FLAG(0, "tiles_fixed_structure_flag");
+ WRITE_FLAG(vui->getTilesFixedStructureFlag(), "tiles_fixed_structure_flag");
WRITE_FLAG(vui->getMotionVectorsOverPicBoundariesFlag(), "motion_vectors_over_pic_boundaries_flag");
WRITE_FLAG(vui->getRestrictedRefPicListsFlag(), "restricted_ref_pic_lists_flag");
WRITE_UVLC(vui->getMinSpatialSegmentationIdc(), "min_spatial_segmentation_idc");
diff -r 1c78bd13a14f -r 8ef0c1405487 source/common/common.cpp
--- a/source/common/common.cpp Wed Feb 19 09:46:46 2014 -0800
+++ b/source/common/common.cpp Wed Feb 19 10:00:22 2014 -0800
@@ -221,6 +221,35 @@
/* Quality Measurement Metrics */
param->bEnablePsnr = 0;
param->bEnableSsim = 0;
+
+ /* Video Usability Information (VUI) */
+ param->bEnableVuiParametersPresentFlag = 0;
+ param->bEnableAspectRatioIdc = 0;
+ param->aspectRatioIdc = 0;
+ param->sarWidth = 0;
+ param->sarHeight = 0;
+ param->bEnableOverscanAppropriateFlag = 0;
+ param->bEnableVideoSignalTypePresentFlag = 0;
+ param->videoFormat = 5;
+ param->bEnableVideoFullRangeFlag = 0;
+ param->bEnableColorDescriptionPresentFlag = 0;
+ param->colorPrimaries = 2;
+ param->transferCharacteristics = 2;
+ param->matrixCoeffs = 2;
+ param->bEnableChromaLocInfoPresentFlag = 0;
+ param->chromaSampleLocTypeTopField = 0;
+ param->chromaSampleLocTypeBottomField = 0;
+ param->bEnableFieldSeqFlag = 0;
+ param->bEnableFrameFieldInfoPresentFlag = 0;
+ param->bEnableDefaultDisplayWindowFlag = 0;
+ param->defDispWinLeftOffset = 0;
+ param->defDispWinRightOffset = 0;
+ param->defDispWinTopOffset = 0;
+ param->defDispWinBottomOffset = 0;
+ param->bEnableVuiTimingInfoPresentFlag = 0;
+ param->bEnableVuiHrdParametersPresentFlag = 0;
+ param->bEnableBitstreamRestrictionFlag = 0;
+ param->bEnableSubPicHrdParamsPresentFlag = 0;
}
extern "C"
@@ -764,6 +793,200 @@
OPT("me") p->searchMethod = parseName(value, x265_motion_est_names, berror);
OPT("cutree") p->rc.cuTree = bvalue;
OPT("no-cutree") p->rc.cuTree = bvalue;
+ OPT("vui")
+ {
+ p->bEnableVuiParametersPresentFlag = bvalue;
+ p->bEnableAspectRatioIdc = bvalue;
+ p->bEnableOverscanInfoPresentFlag = bvalue;
+ p->bEnableVideoSignalTypePresentFlag = bvalue;
+ p->bEnableColorDescriptionPresentFlag = bvalue;
+ p->bEnableChromaLocInfoPresentFlag = bvalue;
+ p->bEnableFieldSeqFlag = bvalue;
+ p->bEnableFrameFieldInfoPresentFlag = bvalue;
+ p->bEnableDefaultDisplayWindowFlag = bvalue;
+ p->bEnableVuiTimingInfoPresentFlag = bvalue;
+ p->bEnableVuiHrdParametersPresentFlag = bvalue;
+ p->bEnableBitstreamRestrictionFlag = bvalue;
+ p->bEnableSubPicHrdParamsPresentFlag = bvalue;
+ }
+ OPT("sar")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableAspectRatioIdc = bvalue;
+ p->aspectRatioIdc = atoi(value);
+ }
+ OPT("extended-sar")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableAspectRatioIdc = bvalue;
+ p->aspectRatioIdc = 255;
+ sscanf(value, "%dx%d", &p->sarWidth, &p->sarHeight);
+ }
+ OPT("overscan")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ if (!strcmp(value, "show"))
+ p->bEnableOverscanInfoPresentFlag = bvalue;
+ else if (!strcmp(value, "crop"))
+ {
+ p->bEnableOverscanInfoPresentFlag = bvalue;
+ p->bEnableOverscanAppropriateFlag = bvalue;
+ }
+ }
+ OPT("videoformat")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableVideoSignalTypePresentFlag = bvalue;
+ if (!strcmp(value, "component"))
+ p->videoFormat = 0;
+ else if (!strcmp(value, "pal"))
+ p->videoFormat = 1;
+ else if (!strcmp(value, "ntsc"))
+ p->videoFormat = 2;
+ else if (!strcmp(value, "secam"))
+ p->videoFormat = 3;
+ else if (!strcmp(value, "mac"))
+ p->videoFormat = 4;
+ else if (!strcmp(value, "undef"))
+ p->videoFormat = 5;
+ }
+ OPT("range")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableVideoSignalTypePresentFlag = bvalue;
+ p->bEnableVideoFullRangeFlag = bvalue;
+ }
+ OPT("colorprim")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableVideoSignalTypePresentFlag = bvalue;
+ p->bEnableColorDescriptionPresentFlag = bvalue;
+ if (!strcmp(value, "bt709"))
+ p->colorPrimaries = 1;
+ else if (!strcmp(value, "undef"))
+ p->colorPrimaries = 2;
+ else if (!strcmp(value, "bt470m"))
+ p->colorPrimaries = 4;
+ else if (!strcmp(value, "bt470bg"))
+ p->colorPrimaries = 5;
+ else if (!strcmp(value, "smpte170m"))
+ p->colorPrimaries = 6;
+ else if (!strcmp(value, "smpte240m"))
+ p->colorPrimaries = 7;
+ else if (!strcmp(value, "film"))
+ p->colorPrimaries = 8;
+ else if (!strcmp(value, "bt2020"))
+ p->colorPrimaries = 9;
+ }
+ OPT("transfer")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableVideoSignalTypePresentFlag = bvalue;
+ p->bEnableColorDescriptionPresentFlag = bvalue;
+ if (!strcmp(value, "bt709"))
+ p->transferCharacteristics = 1;
+ else if (!strcmp(value, "undef"))
+ p->transferCharacteristics = 2;
+ else if (!strcmp(value, "bt470m"))
+ p->transferCharacteristics = 4;
+ else if (!strcmp(value, "bt470bg"))
+ p->transferCharacteristics = 5;
+ else if (!strcmp(value, "smpte170m"))
+ p->transferCharacteristics = 6;
+ else if (!strcmp(value, "smpte240m"))
+ p->transferCharacteristics = 7;
+ else if (!strcmp(value, "linear"))
+ p->transferCharacteristics = 8;
+ else if (!strcmp(value, "log100"))
+ p->transferCharacteristics = 9;
+ else if (!strcmp(value, "log316"))
+ p->transferCharacteristics = 10;
+ else if (!strcmp(value, "iec61966-2-4"))
+ p->transferCharacteristics = 11;
+ else if (!strcmp(value, "bt1361e"))
+ p->transferCharacteristics = 12;
+ else if (!strcmp(value, "iec61966-2-1"))
+ p->transferCharacteristics = 13;
+ else if (!strcmp(value, "bt2020-10"))
+ p->transferCharacteristics = 14;
+ else if (!strcmp(value, "bt2020-12"))
+ p->transferCharacteristics = 15;
+ }
+ OPT("colormatrix")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableVideoSignalTypePresentFlag = bvalue;
+ p->bEnableColorDescriptionPresentFlag = bvalue;
+ if (!strcmp(value, "GBR"))
+ p->matrixCoeffs = 0;
+ else if (!strcmp(value, "bt709"))
+ p->matrixCoeffs = 1;
+ else if (!strcmp(value, "undef"))
+ p->matrixCoeffs = 2;
+ else if (!strcmp(value, "fcc"))
+ p->matrixCoeffs = 4;
+ else if (!strcmp(value, "bt470bg"))
+ p->matrixCoeffs = 5;
+ else if (!strcmp(value, "smpte170m"))
+ p->matrixCoeffs = 6;
+ else if (!strcmp(value, "smpte240m"))
+ p->matrixCoeffs = 7;
+ else if (!strcmp(value, "YCgCo"))
+ p->matrixCoeffs = 8;
+ else if (!strcmp(value, "bt2020nc"))
+ p->matrixCoeffs = 9;
+ else if (!strcmp(value, "bt2020c"))
+ p->matrixCoeffs = 10;
+ }
+ OPT("chromaloc")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableChromaLocInfoPresentFlag = bvalue;
+ p->chromaSampleLocTypeTopField = atoi(value);
+ p->chromaSampleLocTypeBottomField = p->chromaSampleLocTypeTopField;
+ }
+ OPT("fieldseq")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableFieldSeqFlag = bvalue;
+ }
+ OPT("framefieldinfo")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableFrameFieldInfoPresentFlag = bvalue;
+ }
+ OPT("crop-rect")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableDefaultDisplayWindowFlag = bvalue;
+ sscanf(value,"%d,%d,%d,%d",
+ &p->defDispWinLeftOffset,
+ &p->defDispWinTopOffset,
+ &p->defDispWinRightOffset,
+ &p->defDispWinBottomOffset);
+ }
+ OPT("timinginfo")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableVuiTimingInfoPresentFlag = bvalue;
+ }
+ OPT("nal-hrd")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableVuiTimingInfoPresentFlag = bvalue;
+ p->bEnableVuiHrdParametersPresentFlag = bvalue;
+ }
+ OPT("bitstreamrestriction")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableBitstreamRestrictionFlag = bvalue;
+ }
+ OPT("subpichrd")
+ {
+ p->bEnableVuiParametersPresentFlag = 1;
+ p->bEnableVuiHrdParametersPresentFlag = bvalue;
+ p->bEnableSubPicHrdParamsPresentFlag = bvalue;
+ }
else
return X265_PARAM_BAD_NAME;
diff -r 1c78bd13a14f -r 8ef0c1405487 source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp Wed Feb 19 09:46:46 2014 -0800
+++ b/source/encoder/encoder.cpp Wed Feb 19 10:00:22 2014 -0800
@@ -1043,7 +1043,7 @@
if (sps->getVuiParametersPresentFlag())
{
TComVUI* vui = sps->getVuiParameters();
- vui->setAspectRatioInfoPresentFlag(getAspectRatioIdc() != -1);
+ vui->setAspectRatioInfoPresentFlag(getAspectRatioInfoPresentFlag());
vui->setAspectRatioIdc(getAspectRatioIdc());
vui->setSarWidth(getSarWidth());
vui->setSarHeight(getSarHeight());
@@ -1062,12 +1062,17 @@
vui->setNeutralChromaIndicationFlag(getNeutralChromaIndicationFlag());
vui->setDefaultDisplayWindow(getDefaultDisplayWindow());
vui->setFrameFieldInfoPresentFlag(getFrameFieldInfoPresentFlag());
- vui->setFieldSeqFlag(false);
- vui->setHrdParametersPresentFlag(false);
+ vui->setFieldSeqFlag(getFieldSeqFlag());
+ vui->setHrdParametersPresentFlag(getVuiHrdParametersPresentFlag());
+ vui->getTimingInfo()->setTimingInfoPresentFlag(getVuiTimingInfoPresentFlag());
+ vui->getTimingInfo()->setNumUnitsInTick(getVuiNumUnitsInTick());
+ vui->getTimingInfo()->setTimeScale(getVuiTimeScale());
vui->getTimingInfo()->setPocProportionalToTimingFlag(getPocProportionalToTimingFlag());
vui->getTimingInfo()->setNumTicksPocDiffOneMinus1(getNumTicksPocDiffOneMinus1());
vui->setBitstreamRestrictionFlag(getBitstreamRestrictionFlag());
+ vui->setTilesFixedStructureFlag(getTilesFixedStructureFlag());
vui->setMotionVectorsOverPicBoundariesFlag(getMotionVectorsOverPicBoundariesFlag());
+ vui->setRestrictedRefPicListsFlag(getRestrictedRefPicListsFlag());
vui->setMinSpatialSegmentationIdc(getMinSpatialSegmentationIdc());
vui->setMaxBytesPerPicDenom(getMaxBytesPerPicDenom());
vui->setMaxBitsPerMinCuDenom(getMaxBitsPerMinCuDenom());
@@ -1390,11 +1395,11 @@
m_quadtreeTULog2MinSize = tuQTMinLog2Size;
//========= set default display window ==================================
- m_defaultDisplayWindow.m_enabledFlag = true;
- m_defaultDisplayWindow.m_winRightOffset = 0;
- m_defaultDisplayWindow.m_winTopOffset = 0;
- m_defaultDisplayWindow.m_winBottomOffset = 0;
- m_defaultDisplayWindow.m_winLeftOffset = 0;
+ m_defaultDisplayWindow.m_enabledFlag = _param->bEnableDefaultDisplayWindowFlag;
+ m_defaultDisplayWindow.m_winRightOffset = _param->defDispWinRightOffset;
+ m_defaultDisplayWindow.m_winTopOffset = _param->defDispWinTopOffset;
+ m_defaultDisplayWindow.m_winBottomOffset = _param->defDispWinBottomOffset;
+ m_defaultDisplayWindow.m_winLeftOffset = _param->defDispWinLeftOffset;
m_pad[0] = m_pad[1] = 0;
//======== set pad size if width is not multiple of the minimum CU size =========
@@ -1465,25 +1470,26 @@
m_decodingUnitInfoSEIEnabled = 0;
m_useScalingListId = 0;
m_activeParameterSetsSEIEnabled = 0;
- m_vuiParametersPresentFlag = false;
+ m_vuiParametersPresentFlag = _param->bEnableVuiParametersPresentFlag;
m_minSpatialSegmentationIdc = 0;
- m_aspectRatioIdc = 0;
- m_sarWidth = 0;
- m_sarHeight = 0;
- m_overscanInfoPresentFlag = false;
- m_overscanAppropriateFlag = false;
- m_videoSignalTypePresentFlag = false;
- m_videoFormat = 5;
- m_videoFullRangeFlag = false;
- m_colourDescriptionPresentFlag = false;
- m_colourPrimaries = 2;
- m_transferCharacteristics = 2;
- m_matrixCoefficients = 2;
- m_chromaLocInfoPresentFlag = false;
- m_chromaSampleLocTypeTopField = 0;
- m_chromaSampleLocTypeBottomField = 0;
+ m_aspectRatioInfoPresentFlag = _param->bEnableAspectRatioIdc;
+ m_aspectRatioIdc = _param->aspectRatioIdc;
+ m_sarWidth = _param->sarWidth;
+ m_sarHeight = _param->sarHeight;
+ m_overscanInfoPresentFlag = _param->bEnableOverscanInfoPresentFlag;
+ m_overscanAppropriateFlag = _param->bEnableOverscanAppropriateFlag;
+ m_videoSignalTypePresentFlag = _param->bEnableVideoSignalTypePresentFlag;
+ m_videoFormat = _param->videoFormat;
+ m_videoFullRangeFlag = _param->bEnableVideoFullRangeFlag;
+ m_colourDescriptionPresentFlag = _param->bEnableColorDescriptionPresentFlag;
+ m_colourPrimaries = _param->colorPrimaries;
+ m_transferCharacteristics = _param->transferCharacteristics;
+ m_matrixCoefficients = _param->matrixCoeffs;
+ m_chromaLocInfoPresentFlag = _param->bEnableChromaLocInfoPresentFlag;
+ m_chromaSampleLocTypeTopField = _param->chromaSampleLocTypeTopField;
+ m_chromaSampleLocTypeBottomField = _param->chromaSampleLocTypeBottomField;
m_neutralChromaIndicationFlag = false;
- m_frameFieldInfoPresentFlag = false;
+ m_frameFieldInfoPresentFlag = _param->bEnableFrameFieldInfoPresentFlag;
m_pocProportionalToTimingFlag = false;
m_numTicksPocDiffOneMinus1 = 0;
m_bitstreamRestrictionFlag = false;
@@ -1501,6 +1507,11 @@
m_useLossless = false; // x264 configures this via --qp=0
m_TransquantBypassEnableFlag = false;
m_CUTransquantBypassFlagValue = false;
+ m_fieldSeqFlag = _param->bEnableFieldSeqFlag;
+ m_vuiTimingInfoPresentFlag = _param->bEnableVuiTimingInfoPresentFlag;
+ m_vuiHrdParametersPresentFlag = _param->bEnableVuiHrdParametersPresentFlag;
+ m_bitstreamRestrictionFlag = _param->bEnableBitstreamRestrictionFlag;
+ m_subPicHrdParamsPresentFlag = _param->bEnableSubPicHrdParamsPresentFlag;
}
int Encoder::extractNalData(NALUnitEBSP **nalunits)
diff -r 1c78bd13a14f -r 8ef0c1405487 source/x265.cpp
--- a/source/x265.cpp Wed Feb 19 09:46:46 2014 -0800
+++ b/source/x265.cpp Wed Feb 19 10:00:22 2014 -0800
@@ -154,6 +154,26 @@
{ "strong-intra-smoothing", no_argument, NULL, 0 },
{ "no-cutree", no_argument, NULL, 0 },
{ "cutree", no_argument, NULL, 0 },
+ { "vui", no_argument, NULL, 0 },
+ { "sar", required_argument, NULL, 0 },
+ { "extended-sar", required_argument, NULL, 0 },
+ { "overscan", required_argument, NULL, 0 },
+ { "videoformat", required_argument, NULL, 0 },
+ { "range", no_argument, NULL, 0 },
+ { "no-range", no_argument, NULL, 0 },
+ { "colorprim", required_argument, NULL, 0 },
+ { "transfer", required_argument, NULL, 0 },
+ { "colormatrix", required_argument, NULL, 0 },
+ { "chromaloc", required_argument, NULL, 0 },
+ { "fieldseq", no_argument, NULL, 0 },
+ { "no-fieldseq", no_argument, NULL, 0 },
+ { "framefieldinfo", no_argument, NULL, 0 },
+ { "no-framefieldinfo", no_argument, NULL, 0 },
+ { "crop-rect", required_argument, NULL, 0 },
+ { "timinginfo", no_argument, NULL, 0 },
+ { "nal-hrd", no_argument, NULL, 0 },
+ { "bitstreamrestriction", no_argument, NULL, 0 },
+ { "subpichrd", no_argument, NULL, 0 },
{ 0, 0, 0, 0 }
};
@@ -351,6 +371,32 @@
H0(" --recon-depth Bit-depth of reconstructed raw image file. Defaults to input bit depth\n");
H0("\nSEI options:\n");
H0(" --hash Decoded Picture Hash SEI 0: disabled, 1: MD5, 2: CRC, 3: Checksum. Default %d\n", param->decodedPictureHashSEI);
+ H0("\nVUI options:\n");
+ H0(" --vui Add Video Useability Information with all fields to the SPS. Default %s\n", OPT(param->bEnableVuiParametersPresentFlag));
+ H0(" --sar Sample Aspect Ratio, the ratio of width to height of an individual pixel.\n");
+ H0(" Choose from 0=Unspecified, 1=1:1(\"square\"), 2=12:11, 3=10:11, 4=16:11,\n");
+ H0(" 5=40:33, 6=24:11, 7=20:11, 8=32:11, 9=80:33, 10=18:11, 11=15:11,\n");
+ H0(" 12=64:33, 13=160:99, 14=4:3, 15=3:2, 16=2:1. Default %d\n",param->aspectRatioIdc);
+ H0(" --extended-sar Use a custom Sample Aspect Ratio,[WxH]\n");
+ H0(" --overscan <string> Specify crop overscan setting from undef, show or crop. Default of undef\n");
+ H0(" --videoformat <string> Specify video format from undef, component, pal, ntsc, secam, mac. Default of undef\n");
+ H0(" --[no-]range Specify black level and range of luma and chroma signals. Default of %s\n", OPT(param->bEnableVideoFullRangeFlag));
+ H0(" --colorprim <string> Specify color primaries from undef, bt709, bt470m, bt470bg, smpte170m,\n");
+ H0(" smpte240m, film, bt2020. Default of undef\n");
+ H0(" --transfer <string> Specify transfer characteristics from undef, bt709, bt470m, bt470bg, smpte170m,\n");
+ H0(" smpte240m, linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1,\n");
+ H0(" bt2020-10, bt2020-12. Default of undef\n");
+ H0(" --colormatrix <string> Specify color matrix setting from undef, bt709, fcc, bt470bg, smpte170m,\n");
+ H0(" smpte240m, GBR, YCgCo, bt2020nc, bt2020c\n");
+ H0(" --chromaloc <integer> Specify chroma sample location (0 to 5). Default of %d\n",param->chromaSampleLocTypeTopField);
+ H0(" --[no-]fieldseq Specify that pictures are fields and an SEI timing message\n");
+ H0(" will be added to every access unit. Default %s\n", OPT(param->bEnableFieldSeqFlag));
+ H0(" --[no-]framefieldinfo Specify that a pic-struct will be added to the SEI timing message. Default %s\n", OPT(param->bEnableFrameFieldInfoPresentFlag));
+ H0(" --crop-rect <string> Add 'left,top,right,bottom' to the bitstream-level cropping rectangle\n");
+ H0(" --timinginfo Add timing information to the VUI. Defaut %s\n", OPT(param->bEnableVuiTimingInfoPresentFlag));
+ H0(" --nal-hrd Signal HRD information. Default %s\n", OPT(param->bEnableVuiHrdParametersPresentFlag));
+ H0(" --bitstreamrestriction Add bit stream restriction fields to the VUI. Default %s\n", OPT(param->bEnableBitstreamRestrictionFlag));
+ H0(" --subpichrd Add sub picture HRD parameters to the HRD. Default %s\n", OPT(param->bEnableSubPicHrdParamsPresentFlag));
#undef OPT
#undef H0
exit(0);
diff -r 1c78bd13a14f -r 8ef0c1405487 source/x265.h
--- a/source/x265.h Wed Feb 19 09:46:46 2014 -0800
+++ b/source/x265.h Wed Feb 19 10:00:22 2014 -0800
@@ -332,6 +332,147 @@
* types are MD5(1), CRC(2), Checksum(3). Default is 0, none */
int decodedPictureHashSEI;
+ /*== Video Usability Information ==*/
+
+ /* Enable the generation of a VUI with all fields in the SPS. VUI fields
+ * that are not specified on the command line will have default values. */
+ int bEnableVuiParametersPresentFlag;
+
+ /* Enable aspect ratio in VUI. Causes the aspect_ratio_idc to be added
+ * to the VUI. The default is false. */
+ int bEnableAspectRatioIdc;
+
+ /* Aspect ratio idc to be added to the VUI. The default is 0 indicating
+ * the apsect ratio is unspecified. If set to EXTENDED_SAR(255) then
+ * sarWidth and sarHeight must also be set. */
+ int aspectRatioIdc;
+
+ /* Sample Aspect Ratio width in arbitrary units to be added to the VUI
+ * only if aspectRatioIdc is set to EXTENDED_SAR(255). This is the width
+ * of an individual pixel. If this is set then sarHeight must also be set.
+ */
+ int sarWidth;
+
+ /* Sample Aspect Ratio height in arbitrary units to be added to the VUI.
+ * only if aspectRatioIdc is set to EXTENDED_SAR(255). This is the width
+ * of an individual pixel. If this is set then sarWidth must also be set.
+ */
+ int sarHeight;
+
+ /* Enable overscan info present flag in the VUI. If this is set then
+ * bEnabledOverscanAppropriateFlag will be added to the VUI. The default
+ * is false. */
+ int bEnableOverscanInfoPresentFlag;
+
+ /* Enable overscan appropriate flag. The status of this flag is added to
+ * the VUI only if bEnableOverscanInfoPresentFlag is set. If this flag is
+ * set then cropped decoded pictures may be output for display. The default
+ * is false. */
+ int bEnableOverscanAppropriateFlag;
+
+ /* Video signal type present flag of the VUI. If this is set then
+ * videoFormat, bEnableVideoFullRangeFlag and
+ * bEnableColorDescriptionPresentFlag will be added to the VUI. The default
+ * is false. */
+ int bEnableVideoSignalTypePresentFlag;
+
+ /* Video format of the source video. 0 = component, 1 = PAL, 2 = NTSC,
+ * 3 = SECAM, 4 = MAC, 5 = unspecified video format is the default. */
+ int videoFormat;
+
+ /* Video full range flag indicates the black level and range of the luma
+ * and chroma signals as derived from E′Y, E′PB, and E′PR or E′R, E′G, and
+ * E′B real-valued component signals. False is the default. */
+ int bEnableVideoFullRangeFlag;
+
+ /* Color description present flag in the VUI. If this is set then
+ * color_primaries, transfer_characteristics and matrix_coeffs are to be added
+ * to the VUI. The default is false. */
+ int bEnableColorDescriptionPresentFlag;
+
+ /* Color primaries holds the chromacity coordinates of the source primaries.
+ * The default is 2. */
+ int colorPrimaries;
+
+ /* Transfer characteristics indicates the opto-electronic transfer characteristic
+ * of the source picture. The default is 2. */
+ int transferCharacteristics;
+
+ /* Matrix coefficients used to derive the luma and chroma signals from the red,
+ * blue and green primaries. The default is 2. */
+ int matrixCoeffs;
+
+ /* Chroma location info present flag adds chroma_sample_loc_type_top_field and
+ * chroma_sample_loc_type_bottom_field to the VUI. The default is false. */
+ int bEnableChromaLocInfoPresentFlag;
+
+ /* Chroma sample location type top field holds the chroma location in the top
+ * field. The default is 0. */
+ int chromaSampleLocTypeTopField;
+
+ /* Chroma sample location type bottom field holds the chroma location in the bottom
+ * field. The default is 0. */
+ int chromaSampleLocTypeBottomField;
+
+ /* Field seq flag specifies that the pictures are fields and each one has a
+ * timing SEI message. The default is false */
+ int bEnableFieldSeqFlag;
+
+ /* Frame field info present flag indicates that each picture has a timing SEI
+ * message wich includes a pic_struct, source_scan_type and duplicate_flag
+ * elements. If not set then the pic_struct element is not included. The
+ * default is false. */
+ int bEnableFrameFieldInfoPresentFlag;
+
+ /* Default display window flag adds def_disp_win_left_offset ,
+ * def_disp_win_right_offset, def_disp_win_top_offset and
+ * def_disp_win_bottom_offset to the VUI. The default is false. */
+ int bEnableDefaultDisplayWindowFlag;
+
+ /* Default display window left offset holds the left offset with the
+ * conformance cropping window to further crop the displayed window. */
+ int defDispWinLeftOffset;
+
+ /* Default display window right offset holds the right offset with the
+ * conformance cropping window to further crop the displayed window. */
+ int defDispWinRightOffset;
+
+ /* Default display window top offset holds the top offset with the
+ * conformance cropping window to further crop the displayed window. */
+ int defDispWinTopOffset;
+
+ /* Default display window bottom offset holds the bottom offset with the
+ * conformance cropping window to further crop the displayed window. */
+ int defDispWinBottomOffset;
+
+ /* VUI timing info present flag adds vui_num_units_in_tick, vui_time_scale,
+ * vui_poc_proportional_to_timing_flag and vui_hrd_parameters_present_flag
+ * to the VUI. vui_num_units_in_tick, vui_time_scale and
+ * vui_poc_proportional_to_timing_flag are derived from processing the input
+ * video. The default is false. */
+ int bEnableVuiTimingInfoPresentFlag;
+
+ /* VUI hrd parameters present flag adds the HRD to the VUI */
+ int bEnableVuiHrdParametersPresentFlag;
+
+ /* Bitstream restriction flag adds tiles_fixed_structure_flag,
+ * motion_vectors_over_pic_boundaries_flag, restricted_ref_pic_lists_flag,
+ * min_spatial_segmentation_idc, max_bytes_per_pic_denom,
+ * max_bit_per_min_cu_denom, log2_max_mv_length_horizontal and
+ * log2_max_mv_length_vertical to the VUI. All values are derived from
+ * processing the input video. The default is false. */
+ int bEnableBitstreamRestrictionFlag;
+
+ /*== Hypothetical Reference Decoder Parameters ==*/
+
+ /* Sub pic HRD params present flag determines if tic_divisor_minus2,
+ * du_cpb_removal_delay_increment_length_minus1,
+ * sub_pic_cpb_params_in_pic_timing_sei_flag,
+ * dpb_output_delay_du_length_minus1 and cpb_size_du_scale
+ * are added to the HRD. All are derived from processing the input video.
+ * The default is false. */
+ int bEnableSubPicHrdParamsPresentFlag;
+
/*== Internal Picture Specification ==*/
/* Internal encoder bit depth. If x265 was compiled to use 8bit pixels
More information about the x265-devel
mailing list