...
 
Commits (1219)
......@@ -10,3 +10,8 @@ deploy
*.suo
.vs/
.vscode/
*.blg
*.bbl
*.pyc
/out/
/doc/_minted-software-manual/
stages:
- build
.build_template:
stage: build
script:
- make realclean
- make all
only:
refs:
- master
- merge_requests
variables:
- $CI_PROJECT_URL == 'https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM'
- $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == 'master'
.build_template_linux:
extends: .build_template
script:
- make realclean
- make all
- make realclean
- make linuxbuild enable-tracing=true
build_macos:
extends: .build_template
tags:
- macos
build_ubuntu1604:
extends: .build_template_linux
tags:
- ubuntu1604
build_ubuntu1804:
extends: .build_template_linux
tags:
- ubuntu1804
build_ubuntu1804-gcc8:
extends: .build_template_linux
script:
- make realclean
- make all toolset=gcc-8
- make realclean
- make linuxbuild enable-tracing=true toolset=gcc-8
tags:
- ubuntu1804-gcc8
build_vc1900:
extends: .build_template
tags:
- vc1900
build_vc191x:
extends: .build_template
tags:
- vc191x
build_vc192x:
extends: .build_template
tags:
- vc192x
......@@ -28,6 +28,7 @@ if( CMAKE_SYSTEM_NAME STREQUAL "Linux" )
endif()
set( EXTENSION_360_VIDEO OFF CACHE BOOL "If EXTENSION_360_VIDEO is on, 360Lib will be added" )
set( EXTENSION_HDRTOOLS OFF CACHE BOOL "If EXTENSION_HDRTOOLS is on, HDRLib will be added" )
set( SET_ENABLE_TRACING OFF CACHE BOOL "Set ENABLE_TRACING as a compiler flag" )
set( ENABLE_TRACING OFF CACHE BOOL "If SET_ENABLE_TRACING is on, it will be set to this value" )
......@@ -112,6 +113,7 @@ if( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
if( USE_ADDRESS_SANITIZER )
# add compile options
add_compile_options( "-fsanitize=address" )
add_link_options( "-fsanitize=address" )
endif()
endif()
......@@ -136,6 +138,9 @@ if( EXTENSION_360_VIDEO )
add_subdirectory( "source/Lib/Lib360" )
add_subdirectory( "source/Lib/AppEncHelper360" )
endif()
if ( EXTENSION_HDRTOOLS )
add_subdirectory( "source/Lib/HDRLib")
endif()
add_subdirectory( "source/Lib/DecoderAnalyserLib" )
add_subdirectory( "source/Lib/DecoderLib" )
add_subdirectory( "source/Lib/EncoderLib" )
......
......@@ -21,20 +21,38 @@ mkdir build
Use one of the following CMake commands, based on your platform. Feel free to change the commands to satisfy
your needs.
**Windows Visual Studio 2015 64 Bit:**
**Windows Visual Studio 2015/17/19 64 Bit:**
Use the proper generator string for generating Visual Studio files, e.g. for VS 2015:
```bash
cd build
cmake .. -G "Visual Studio 14 2015 Win64"
```
Then open the generated solution file in MS Visual Studio.
For VS 2017 use "Visual Studio 15 2017 Win64", for VS 2019 use "Visual Studio 16 2019".
Visual Studio 2019 also allows you to open the CMake directory directly. Choose "File->Open->CMake" for this option.
**macOS Xcode:**
For generating an Xcode workspace type:
```bash
cd build
cmake .. -G "Xcode"
```
Then open the generated work space in Xcode.
For generating Makefiles with optional non-default compilers, use the following commands:
```bash
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9
```
In this example the brew installed GCC 9 is used for a release build.
**Linux**
For generating Linux Release Makefile:
......
......@@ -61,13 +61,6 @@ SliceArgument : 1500 # Argument for 'SliceMode'.
LFCrossSliceBoundaryFlag : 1 # In-loop filtering, including ALF and DB, is across or not across slice boundary.
# 0:not across, 1: across
#============ PCM ================
PCMEnabledFlag : 0 # 0: No PCM mode
PCMLog2MaxSize : 5 # Log2 of maximum PCM block size.
PCMLog2MinSize : 3 # Log2 of minimum PCM block size.
PCMInputBitDepthFlag : 1 # 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.
PCMFilterDisableFlag : 0 # 0: Enable loop filtering on I_PCM samples. 1: Disable loop filtering on I_PCM samples.
#============ Lossless ================
TransquantBypassEnable : 0 # Value of PPS flag.
CUTransquantBypassFlagForce: 0 # Force transquant bypass mode, when transquant_bypass_enable_flag is enabled
......@@ -75,8 +68,11 @@ CUTransquantBypassFlagForce: 0 # Force transquant bypass
#============ VTM settings ======================
LoopFilterTcOffset_div2 : 0
SEIDecodedPictureHash : 0
CbQpOffset : 1
CrQpOffset : 1
CbQpOffset : 0
CrQpOffset : 0
SameCQPTablesForAllChroma : 1
QpInValCb : 1 31 43
QpOutValCb : 1 32 41
TemporalSubsampleRatio : 8
ReWriteParamSets : 1
......@@ -90,15 +86,15 @@ DualITree : 1 # separate partitioning of luma and chroma
MinQTLumaISlice : 8
MinQTChromaISlice : 4
MinQTNonISlice : 8
MaxBTDepth : 3
MaxBTDepthISliceL : 3
MaxBTDepthISliceC : 3
MaxMTTHierarchyDepth : 3
MaxMTTHierarchyDepthISliceL : 3
MaxMTTHierarchyDepthISliceC : 3
MTS : 1
MTSIntraMaxCand : 3
MTSIntraMaxCand : 4
MTSInterMaxCand : 4
SBT : 1
LFNST : 1
LFNST : 1
ISP : 1
Affine : 1
SubPuMvp : 1
......@@ -107,11 +103,15 @@ LMChroma : 1 # use CCLM only
DepQuant : 1
IMV : 1
ALF : 1
IBC : 0 # turned off in CTC
IBC : 0 # turned off in CTC
AllowDisFracMMVD : 1
AffineAmvr : 0
LumaReshapeEnable : 1 # luma reshaping. 0: disable 1:enable
LMCSEnable : 1 # LMCS: 0: disable, 1:enable
LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSUpdateCtrl : 1 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
MIP : 1
JointCbCr : 1 # joint coding of chroma residuals (if available): 0: disable, 1: enable
ChromaTS : 1
# Fast tools
PBIntraFast : 1
......@@ -119,7 +119,7 @@ ISPFast : 1
FastMrg : 1
AMaxBT : 1
FastMIP : 1
FastLFNST : 1
FastLFNST : 1
# Encoder optimization tools
AffineAmvrEncOpt : 0
......
......@@ -13,15 +13,19 @@ MaxPartitionDepth : 4 # Maximum coding unit depth
#======== Coding Structure =============
IntraPeriod : -1 # Period of I-Frame ( -1 = only first)
DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
GOPSize : 4 # GOP Size (number of B slice = GOPSize-1)
GOPSize : 8 # GOP Size (number of B slice = GOPSize-1)
IntraQPOffset : -1
LambdaFromQpEnable : 1 # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1
Frame1: P 1 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 5 9 13 0 0
Frame2: P 2 4 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 2 6 10 0 0
Frame3: P 3 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 3 7 11 0 0
Frame4: P 4 1 0.0 0.0 0 0 1.0 0 0 0 4 4 1 4 8 12 0 0
Frame1: P 1 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 9 17 25 0 0
Frame2: P 2 4 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 2 10 18 0 0
Frame3: P 3 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 3 11 19 0 0
Frame4: P 4 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 4 12 20 0 0
Frame5: P 5 4 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 5 13 21 0 0
Frame6: P 6 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 6 14 22 0 0
Frame7: P 7 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 7 15 23 0 0
Frame8: P 8 1 0.0 0.0 0 0 1.0 0 0 0 4 4 1 8 16 24 0 0
#=========== Motion Search =============
FastSearch : 1 # 0:Full search 1:TZ search
......@@ -56,6 +60,11 @@ TransformSkipFast : 1 # Fast Transform skipping (0: OFF, 1
TransformSkipLog2MaxSize : 5
SAOLcuBoundary : 0 # SAOLcuBoundary using non-deblocked pixels (0: OFF, 1: ON)
#=========== TemporalFilter =================
TemporalFilter : 0 # Enable/disable GOP Based Temporal Filter
TemporalFilterFutureReference : 0 # Enable/disable reading future frames
TemporalFilterStrengthFrame4 : 0.4 # Enable filter at every 4th frame with strength
#============ Slices ================
SliceMode : 0 # 0: Disable all slice options.
# 1: Enforce maximum number of LCU in an slice,
......@@ -69,13 +78,6 @@ SliceArgument : 1500 # Argument for 'SliceMode'.
LFCrossSliceBoundaryFlag : 1 # In-loop filtering, including ALF and DB, is across or not across slice boundary.
# 0:not across, 1: across
#============ PCM ================
PCMEnabledFlag : 0 # 0: No PCM mode
PCMLog2MaxSize : 5 # Log2 of maximum PCM block size.
PCMLog2MinSize : 3 # Log2 of minimum PCM block size.
PCMInputBitDepthFlag : 1 # 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.
PCMFilterDisableFlag : 0 # 0: Enable loop filtering on I_PCM samples. 1: Disable loop filtering on I_PCM samples.
#============ Lossless ================
TransquantBypassEnable : 0 # Value of PPS flag.
CUTransquantBypassFlagForce: 0 # Force transquant bypass mode, when transquant_bypass_enable_flag is enabled
......@@ -92,9 +94,11 @@ RCForceIntraQP : 0 # Rate control: force int
#============ VTM settings ======================
LoopFilterTcOffset_div2 : 0
SEIDecodedPictureHash : 0
CbQpOffset : 1
CrQpOffset : 1
CbQpOffset : 0
CrQpOffset : 0
SameCQPTablesForAllChroma : 1
QpInValCb : 32 44
QpOutValCb : 32 41
ReWriteParamSets : 1
#============ NEXT ====================
......@@ -106,9 +110,9 @@ DualITree : 1 # separate partitioning of luma and chroma
MinQTLumaISlice : 8
MinQTChromaISlice : 4
MinQTNonISlice : 8
MaxBTDepth : 3
MaxBTDepthISliceL : 3
MaxBTDepthISliceC : 3
MaxMTTHierarchyDepth : 3
MaxMTTHierarchyDepthISliceL : 3
MaxMTTHierarchyDepthISliceC : 3
MTS : 1
MTSIntraMaxCand : 3
......@@ -126,19 +130,26 @@ MHIntra : 1
IBC : 0 # turned off in CTC
AllowDisFracMMVD : 1
AffineAmvr : 0
LumaReshapeEnable : 1 # luma reshaping. 0: disable 1:enable
MIP : 1
LMCSEnable : 1 # LMCS: 0: disable, 1:enable
LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSUpdateCtrl : 2 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
MIP : 0
JointCbCr : 1 # joint coding of chroma residuals (if available): 0: disable, 1: enable
PROF : 1
PPSorSliceMode : 3
ChromaTS : 1
# Fast tools
PBIntraFast : 1
ISPFast : 1
ISPFast : 0
FastMrg : 1
AMaxBT : 1
FastMIP : 0
FastLocalDualTreeMode : 2
# Encoder optimization tools
AffineAmvrEncOpt : 0
MmvdDisNum : 6
MmvdDisNum : 6
### DO NOT ADD ANYTHING BELOW THIS LINE ###
### DO NOT DELETE THE EMPTY LINE BELOW ###
......
......@@ -13,15 +13,19 @@ MaxPartitionDepth : 4 # Maximum coding unit depth
#======== Coding Structure =============
IntraPeriod : -1 # Period of I-Frame ( -1 = only first)
DecodingRefreshType : 0 # Random Accesss 0:none, 1:CRA, 2:IDR, 3:Recovery Point SEI
GOPSize : 4 # GOP Size (number of B slice = GOPSize-1)
GOPSize : 8 # GOP Size (number of B slice = GOPSize-1)
IntraQPOffset : -1
LambdaFromQpEnable : 1 # see JCTVC-X0038 for suitable parameters for IntraQPOffset, QPoffset, QPOffsetModelOff, QPOffsetModelScale when enabled
# Type POC QPoffset QPOffsetModelOff QPOffsetModelScale CbQPoffset CrQPoffset QPfactor tcOffsetDiv2 betaOffsetDiv2 temporal_id #ref_pics_active_L0 #ref_pics_L0 reference_pictures_L0 #ref_pics_active_L1 #ref_pics_L1 reference_pictures_L1
Frame1: B 1 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 5 9 13 4 4 1 5 9 13
Frame2: B 2 4 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 2 6 10 4 4 1 2 6 10
Frame3: B 3 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 3 7 11 4 4 1 3 7 11
Frame4: B 4 1 0.0 0.0 0 0 1.0 0 0 0 4 4 1 4 8 12 4 4 1 4 8 12
Frame1: B 1 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 9 17 25 4 4 1 9 17 25
Frame2: B 2 4 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 2 10 18 4 4 1 2 10 18
Frame3: B 3 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 3 11 19 4 4 1 3 11 19
Frame4: B 4 4 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 4 12 20 4 4 1 4 12 20
Frame5: B 5 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 5 13 21 4 4 1 5 13 21
Frame6: B 6 4 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 6 14 22 4 4 1 6 14 22
Frame7: B 7 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 1 7 15 23 4 4 1 7 15 23
Frame8: B 8 1 0.0 0.0 0 0 1.0 0 0 0 4 4 1 8 16 24 4 4 1 8 16 24
#=========== Motion Search =============
FastSearch : 1 # 0:Full search 1:TZ search
......@@ -56,6 +60,11 @@ TransformSkipFast : 1 # Fast Transform skipping (0: OFF, 1
TransformSkipLog2MaxSize : 5
SAOLcuBoundary : 0 # SAOLcuBoundary using non-deblocked pixels (0: OFF, 1: ON)
#=========== TemporalFilter =================
TemporalFilter : 0 # Enable/disable GOP Based Temporal Filter
TemporalFilterFutureReference : 0 # Enable/disable reading future frames
TemporalFilterStrengthFrame4 : 0.4 # Enable filter at every 4th frame with strength
#============ Slices ================
SliceMode : 0 # 0: Disable all slice options.
# 1: Enforce maximum number of LCU in an slice,
......@@ -69,13 +78,6 @@ SliceArgument : 1500 # Argument for 'SliceMode'.
LFCrossSliceBoundaryFlag : 1 # In-loop filtering, including ALF and DB, is across or not across slice boundary.
# 0:not across, 1: across
#============ PCM ================
PCMEnabledFlag : 0 # 0: No PCM mode
PCMLog2MaxSize : 5 # Log2 of maximum PCM block size.
PCMLog2MinSize : 3 # Log2 of minimum PCM block size.
PCMInputBitDepthFlag : 1 # 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.
PCMFilterDisableFlag : 0 # 0: Enable loop filtering on I_PCM samples. 1: Disable loop filtering on I_PCM samples.
#============ Lossless ================
TransquantBypassEnable : 0 # Value of PPS flag.
CUTransquantBypassFlagForce: 0 # Force transquant bypass mode, when transquant_bypass_enable_flag is enabled
......@@ -92,9 +94,11 @@ RCForceIntraQP : 0 # Rate control: force int
#============ VTM settings ======================
LoopFilterTcOffset_div2 : 0
SEIDecodedPictureHash : 0
CbQpOffset : 1
CrQpOffset : 1
CbQpOffset : 0
CrQpOffset : 0
SameCQPTablesForAllChroma : 1
QpInValCb : 32 44
QpOutValCb : 32 41
ReWriteParamSets : 1
#============ NEXT ====================
......@@ -106,9 +110,9 @@ DualITree : 1 # separate partitioning of luma and chroma
MinQTLumaISlice : 8
MinQTChromaISlice : 4
MinQTNonISlice : 8
MaxBTDepth : 3
MaxBTDepthISliceL : 3
MaxBTDepthISliceC : 3
MaxMTTHierarchyDepth : 3
MaxMTTHierarchyDepthISliceL : 3
MaxMTTHierarchyDepthISliceC : 3
MTS : 1
MTSIntraMaxCand : 3
......@@ -123,26 +127,33 @@ LMChroma : 1 # use CCLM only
DepQuant : 1
IMV : 1
ALF : 1
GBi : 1
GBiFast : 1
GBi : 1
GBiFast : 1
MHIntra : 1
Triangle : 1
IBC : 0 # turned off in CTC
AllowDisFracMMVD : 1
AffineAmvr : 0
LumaReshapeEnable : 1 # luma reshaping. 0: disable 1:enable
MIP : 1
LMCSEnable : 1 # LMCS: 0: disable, 1:enable
LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSUpdateCtrl : 2 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
MIP : 0
JointCbCr : 1 # joint coding of chroma residuals (if available): 0: disable, 1: enable
PROF : 1
PPSorSliceMode : 2
ChromaTS : 1
# Fast tools
PBIntraFast : 1
ISPFast : 1
ISPFast : 0
FastMrg : 1
AMaxBT : 1
FastMIP : 0
FastLocalDualTreeMode : 2
# Encoder optimization tools
AffineAmvrEncOpt : 0
MmvdDisNum : 6
MmvdDisNum : 6
### DO NOT ADD ANYTHING BELOW THIS LINE ###
### DO NOT DELETE THE EMPTY LINE BELOW ###
......
......@@ -70,6 +70,12 @@ TransformSkipFast : 1 # Fast Transform skipping (0: OFF, 1
TransformSkipLog2MaxSize : 5
SAOLcuBoundary : 0 # SAOLcuBoundary using non-deblocked pixels (0: OFF, 1: ON)
#=========== TemporalFilter =================
TemporalFilter : 0 # Enable/disable GOP Based Temporal Filter
TemporalFilterFutureReference : 1 # Enable/disable reading future frames
TemporalFilterStrengthFrame8 : 0.95 # Enable filter at every 8th frame with given strength
TemporalFilterStrengthFrame16 : 1.5 # Enable filter at every 16th frame with given strength, longer intervals has higher priority
#============ Slices ================
SliceMode : 0 # 0: Disable all slice options.
# 1: Enforce maximum number of LCU in an slice,
......@@ -83,13 +89,6 @@ SliceArgument : 1500 # Argument for 'SliceMode'.
LFCrossSliceBoundaryFlag : 1 # In-loop filtering, including ALF and DB, is across or not across slice boundary.
# 0:not across, 1: across
#============ PCM ================
PCMEnabledFlag : 0 # 0: No PCM mode
PCMLog2MaxSize : 5 # Log2 of maximum PCM block size.
PCMLog2MinSize : 3 # Log2 of minimum PCM block size.
PCMInputBitDepthFlag : 1 # 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.
PCMFilterDisableFlag : 0 # 0: Enable loop filtering on I_PCM samples. 1: Disable loop filtering on I_PCM samples.
#============ Lossless ================
TransquantBypassEnable : 0 # Value of PPS flag.
CUTransquantBypassFlagForce: 0 # Force transquant bypass mode, when transquant_bypass_enable_flag is enabled
......@@ -106,9 +105,11 @@ RCForceIntraQP : 0 # Rate control: force int
#============ VTM settings ======================
LoopFilterTcOffset_div2 : 0
SEIDecodedPictureHash : 0
CbQpOffset : 1
CrQpOffset : 1
CbQpOffset : 0
CrQpOffset : 0
SameCQPTablesForAllChroma : 1
QpInValCb : 32 44
QpOutValCb : 32 41
ReWriteParamSets : 1
#============ NEXT ====================
......@@ -120,15 +121,15 @@ DualITree : 1 # separate partitioning of luma and chroma
MinQTLumaISlice : 8
MinQTChromaISlice : 4
MinQTNonISlice : 8
MaxBTDepth : 3
MaxBTDepthISliceL : 3
MaxBTDepthISliceC : 3
MaxMTTHierarchyDepth : 3
MaxMTTHierarchyDepthISliceL : 3
MaxMTTHierarchyDepthISliceC : 3
MTS : 1
MTSIntraMaxCand : 3
MTSIntraMaxCand : 4
MTSInterMaxCand : 4
SBT : 1
LFNST : 1
LFNST : 1
ISP : 1
MMVD : 1
Affine : 1
......@@ -138,30 +139,38 @@ LMChroma : 1 # use CCLM only
DepQuant : 1
IMV : 1
ALF : 1
GBi : 1
GBi : 1
GBiFast : 1
BIO : 1
BIO : 1
MHIntra : 1
Triangle : 1
IBC : 0 # turned off in CTC
AllowDisFracMMVD : 1
AffineAmvr : 1
LumaReshapeEnable : 1 # luma reshaping. 0: disable 1:enable
LMCSEnable : 1 # LMCS: 0: disable, 1:enable
LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSUpdateCtrl : 0 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
LMCSOffset : 6 # chroma residual scaling offset
MIP : 1
DMVR : 1
SMVD : 1
JointCbCr : 1 # joint coding of chroma residuals (if available): 0: disable, 1: enable
PROF : 1
PPSorSliceMode : 1
# Fast tools
PBIntraFast : 1
ISPFast : 1
ISPFast : 0
FastMrg : 1
AMaxBT : 1
FastMIP : 0
FastLFNST : 0
FastLFNST : 0
FastLocalDualTreeMode : 1
ChromaTS : 1
# Encoder optimization tools
AffineAmvrEncOpt : 1
MmvdDisNum : 6
MmvdDisNum : 6
### DO NOT ADD ANYTHING BELOW THIS LINE ###
### DO NOT DELETE THE EMPTY LINE BELOW ###
......
CostMode : lossless
ChromaTS : 1
DepQuant : 0
RDOQ : 0
RDOQTS : 0
SBT : 0
LMCSEnable : 0
ISP : 0
MTS : 0
LFNST : 0
JointCbCr : 0
LoopFilterDisable : 1
SAO : 0
ALF : 0
DMVR : 0
BIO : 0
PROF : 0
Log2MaxTbSize : 5
InternalBitDepth : 0
\ No newline at end of file
......@@ -75,7 +75,7 @@ SliceMode : 3 # 0: Disable all slice options.
# 1: Enforce maximum number of LCU in an slice,
# 2: Enforce maximum number of bytes in an 'slice'
# 3: Enforce maximum number of tiles in a slice
SliceArgument : 4 # Argument for 'SliceMode'.
SliceArgument : 2 # Argument for 'SliceMode'.
# If SliceMode==1 it represents max. SliceGranularity-sized blocks per slice.
# If SliceMode==2 it represents max. bytes per slice.
# If SliceMode==3 it represents max. tiles per slice.
......@@ -86,6 +86,9 @@ LFCrossSliceBoundaryFlag : 1 # In-loop filtering, including ALF a
#============ Tiles ================
TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array
# 1: the column and row boundaries are distributed uniformly
UniformTileColsWidthMinus1 : 0 # Width to use if TileUniformSpacing is equal to 1
UniformTileRowHeightMinus1 : 0 # Height to use if TileUniformSpacing is equal to 1
NumTileColumnsMinus1 : 1 # Number of tile columns in a picture minus 1
TileColumnWidthArray : 2 # Array containing tile column width values in units of CTU (from left to right in picture)
NumTileRowsMinus1 : 1 # Number of tile rows in a picture minus 1
......@@ -96,13 +99,6 @@ LFCrossTileBoundaryFlag : 0 # In-loop filtering is ac
RectSliceFlag : 0
#============ PCM ================
PCMEnabledFlag : 0 # 0: No PCM mode
PCMLog2MaxSize : 5 # Log2 of maximum PCM block size.
PCMLog2MinSize : 3 # Log2 of minimum PCM block size.
PCMInputBitDepthFlag : 1 # 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.
PCMFilterDisableFlag : 0 # 0: Enable loop filtering on I_PCM samples. 1: Disable loop filtering on I_PCM samples.
#============ Lossless ================
TransquantBypassEnable : 0 # Value of PPS flag.
CUTransquantBypassFlagForce: 0 # Force transquant bypass mode, when transquant_bypass_enable_flag is enabled
......@@ -133,9 +129,9 @@ DualITree : 1 # separate partitioning of luma and chroma
MinQTLumaISlice : 8
MinQTChromaISlice : 4
MinQTNonISlice : 8
MaxBTDepth : 3
MaxBTDepthISliceL : 3
MaxBTDepthISliceC : 3
MaxMTTHierarchyDepth : 3
MaxMTTHierarchyDepthISliceL : 3
MaxMTTHierarchyDepthISliceC : 3
MTS : 1
MTSIntraMaxCand : 3
......@@ -159,7 +155,9 @@ Triangle : 1
IBC : 0 # turned off in CTC
AllowDisFracMMVD : 1
AffineAmvr : 1
LumaReshapeEnable : 1 # luma reshaping. 0: disable 1:enable
LMCSEnable : 1 # LMCS: 0: disable, 1:enable
LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSUpdateCtrl : 0 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
MIP : 1
DMVR : 1
SMVD : 1
......
......@@ -86,6 +86,8 @@ LFCrossSliceBoundaryFlag : 1 # In-loop filtering, including ALF a
#============ Tiles ================
TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array
# 1: the column and row boundaries are distributed uniformly
UniformTileColsWidthMinus1 : 0 # Width to use if TileUniformSpacing is equal to 1
UniformTileRowHeightMinus1 : 0 # Height to use if TileUniformSpacing is equal to 1
NumTileColumnsMinus1 : 3 # Number of tile columns in a picture minus 1
TileColumnWidthArray : 1 1 1 # Array containing tile column width values in units of CTU (from left to right in picture)
NumTileRowsMinus1 : 1 # Number of tile rows in a picture minus 1
......@@ -98,13 +100,6 @@ RectSliceFlag : 1
NumRectSlicesInPicMinus1 : 3
RectSlicesBoundaryArray : 0 4 1 5 2 6 3 7
#============ PCM ================
PCMEnabledFlag : 0 # 0: No PCM mode
PCMLog2MaxSize : 5 # Log2 of maximum PCM block size.
PCMLog2MinSize : 3 # Log2 of minimum PCM block size.
PCMInputBitDepthFlag : 1 # 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.
PCMFilterDisableFlag : 0 # 0: Enable loop filtering on I_PCM samples. 1: Disable loop filtering on I_PCM samples.
#============ Lossless ================
TransquantBypassEnable : 0 # Value of PPS flag.
CUTransquantBypassFlagForce: 0 # Force transquant bypass mode, when transquant_bypass_enable_flag is enabled
......@@ -135,9 +130,9 @@ DualITree : 1 # separate partitioning of luma and chroma
MinQTLumaISlice : 8
MinQTChromaISlice : 4
MinQTNonISlice : 8
MaxBTDepth : 3
MaxBTDepthISliceL : 3
MaxBTDepthISliceC : 3
MaxMTTHierarchyDepth : 3
MaxMTTHierarchyDepthISliceL : 3
MaxMTTHierarchyDepthISliceC : 3
MTS : 1
MTSIntraMaxCand : 3
......@@ -161,7 +156,9 @@ Triangle : 1
IBC : 0 # turned off in CTC
AllowDisFracMMVD : 1
AffineAmvr : 1
LumaReshapeEnable : 1 # luma reshaping. 0: disable 1:enable
LMCSEnable : 1 # LMCS: 0: disable, 1:enable
LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSUpdateCtrl : 0 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
MIP : 1
DMVR : 1
SMVD : 1
......
......@@ -84,8 +84,11 @@ LFCrossSliceBoundaryFlag : 1 # In-loop filtering, including ALF a
# 0:not across, 1: across
#============ Tiles ================
TileUniformSpacing : 0 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array
TileUniformSpacing : 1 # 0: the column boundaries are indicated by TileColumnWidth array, the row boundaries are indicated by TileRowHeight array
# 1: the column and row boundaries are distributed uniformly
UniformTileColsWidthMinus1 : 1 # Width to use if TileUniformSpacing is equal to 1
UniformTileRowHeightMinus1 : 0 # Height to use if TileUniformSpacing is equal to 1
NumTileColumnsMinus1 : 1 # Number of tile columns in a picture minus 1
TileColumnWidthArray : 2 # Array containing tile column width values in units of CTU (from left to right in picture)
NumTileRowsMinus1 : 1 # Number of tile rows in a picture minus 1
......@@ -98,13 +101,6 @@ RectSliceFlag : 1
NumRectSlicesInPicMinus1 : 3
RectSlicesBoundaryArray : 0 0 1 1 2 2 3 3
#============ PCM ================
PCMEnabledFlag : 0 # 0: No PCM mode
PCMLog2MaxSize : 5 # Log2 of maximum PCM block size.
PCMLog2MinSize : 3 # Log2 of minimum PCM block size.
PCMInputBitDepthFlag : 1 # 0: PCM bit-depth is internal bit-depth. 1: PCM bit-depth is input bit-depth.
PCMFilterDisableFlag : 0 # 0: Enable loop filtering on I_PCM samples. 1: Disable loop filtering on I_PCM samples.
#============ Lossless ================
TransquantBypassEnable : 0 # Value of PPS flag.
CUTransquantBypassFlagForce: 0 # Force transquant bypass mode, when transquant_bypass_enable_flag is enabled
......@@ -135,9 +131,9 @@ DualITree : 1 # separate partitioning of luma and chroma
MinQTLumaISlice : 8
MinQTChromaISlice : 4
MinQTNonISlice : 8
MaxBTDepth : 3
MaxBTDepthISliceL : 3
MaxBTDepthISliceC : 3
MaxMTTHierarchyDepth : 3
MaxMTTHierarchyDepthISliceL : 3
MaxMTTHierarchyDepthISliceC : 3
MTS : 1
MTSIntraMaxCand : 3
......@@ -161,7 +157,9 @@ Triangle : 1
IBC : 0 # turned off in CTC
AllowDisFracMMVD : 1
AffineAmvr : 1
LumaReshapeEnable : 1 # luma reshaping. 0: disable 1:enable
LMCSEnable : 1 # LMCS: 0: disable, 1:enable
LMCSSignalType : 0 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSUpdateCtrl : 0 # LMCS model update control: 0:RA, 1:AI, 2:LDB/LDP
MIP : 1
DMVR : 1
SMVD : 1
......
IBC : 1
HashME : 1
RDPCM: 1
BDPCM: 1
# ======== Luma adaptive QP ==========
LumaLevelToDeltaQPMode : 1 # Change luma delta QP based on average luma
LumaLevelToDeltaQPMode : 0 # Change luma delta QP based on average luma
isSDR : 0 # 1: SDR in PQ container, 0: HDR
# ======= LMCS =======================
LumaReshapeEnable : 0 # turned off in HDR CTC
LMCSEnable : 1 # turned on in HDR CTC
LMCSSignalType : 1 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSOffset : 1 # chroma residual scaling offset
#======== Chroma QP scale ============
WCGPPSEnable : 1 # enable WCG Chroma scale
WCGPPSChromaQpScale : -0.46 # Linear chroma QP offset mapping (scale) based on QP
WCGPPSChromaQpOffset : 9.26 # Linear chroma QP offset mapping (offset) based on QP
WCGPPSCbQpScale : 1.14 # Scale factor depending on capture and representation color space
WCGPPSCrQpScale : 1.79 # Scale factor depending on capture and representation color space
WCGPPSEnable : 0 # enable WCG Chroma scale
CbQpOffset : 0
CrQpOffset : 0
SameCQPTablesForAllChroma : 0
QpInValCb : 13 20 36 38 43 54
QpOutValCb : 13 21 29 29 32 37
QpInValCr : 13 20 37 41 44 54
QpOutValCr : 13 21 27 29 32 37
QpInValCbCr : 12 21 41 43 54
QpOutValCbCr : 12 22 30 32 37
CclmCollocatedChroma : 1
#======== HDR Metrics ============
CalculateHdrMetrics : 1 # Calculate HDR metrics for Class H1 (PQ) content
......@@ -2,8 +2,15 @@
LumaLevelToDeltaQPMode : 0 # Change luma delta QP based on average luma
# ======= LMCS =======================
LumaReshapeEnable : 0 # turned off in HDR CTC
ReshapeSignalType : 2 # set signal type to HLG if enabled
LMCSEnable : 1 # turned on in HLG CTC
LMCSSignalType : 2 # Input signal type: 0:SDR, 1:HDR-PQ, 2:HDR-HLG
LMCSOffset : 0 # chroma residual scaling offset
#======== Chroma QP scale ============
WCGPPSEnable : 0 # enable WCG Chroma scale
CbQpOffset : 0
CrQpOffset : 0
SameCQPTablesForAllChroma : 1
QpInValCb : 9 23 33 42
QpOutValCb : 9 24 33 37
......@@ -12,4 +12,10 @@ Level : 4.1
#======== Chroma QP scale =============
WCGPPSCbQpScale : 1.04 # Scale factor depending on capture and representation color space
WCGPPSCrQpScale : 1.39 # Scale factor depending on capture and representation color space
WCGPPSCrQpScale : 1.39 # Scale factor depending on capture and representation color space
#======== HDR Metrics ============
CropOffsetLeft : 10
CropOffsetTop : 10
CropOffsetRight : -10
CropOffsetBottom : -10
# Reference picture resampling CE settings for scaling ratio and number of encoded frames
ScalingRatioHor : 1.5
ScalingRatioVer : 1.5
FractionNumFrames : 0.5
UpscaledOutput : 1
\ No newline at end of file
# Reference picture resampling CE settings for scaling ratio and number of encoded frames
ScalingRatioHor : 2.0
ScalingRatioVer : 2.0
FractionNumFrames : 0.5
UpscaledOutput : 1
# Reference picture resampling CE settings for scaling ratio and number of encoded frames
ScalingRatioHor : 4.0
ScalingRatioVer : 4.0
FractionNumFrames : 0.5
UpscaledOutput : 1
SEIBufferingPeriod: 1
SEIPictureTiming: 1
VuiParametersPresent: 1
RCCpbSize: 2000
......@@ -11,6 +11,7 @@ import sys
import pyhhi.build.common.system as system
import pyhhi.build.common.util as util
import pyhhi.build.common.ver as ver
import pyhhi.build.common.bldtools as bldtools
import pyhhi.build.cmksupp as cmksupp
from pyhhi.build.common.bldtools import BuildScriptInstaller
from pyhhi.build.common.error import InvalidCommandLineArgumentError
......@@ -24,7 +25,7 @@ class CMakeLauncherApp(object):
self._cmake_launcher = None
self._dict_generator_choice = {'linux': ['umake', 'ninja'],
'macosx': ['xcode', 'umake', 'ninja'],
'windows': ['vs15', 'vs14', 'vs12', 'vs11', 'vs10', 'umake', 'mgwmake', 'ninja']}
'windows': ['vs16', 'vs15', 'vs14', 'vs12', 'vs11', 'vs10', 'umake', 'mgwmake', 'ninja']}
self._top_dir = None
self._cmake_mod_list = ['pyhhi.build.app.cmk',
'pyhhi.build.cmkfnd',
......@@ -93,14 +94,14 @@ class CMakeLauncherApp(object):
%(prog)s [options] [variant=debug,release,relwithdebinfo,minsizerel] [link=static,shared] [toolset=<toolset_spec>] [address-model=32]
%(prog)s is a script front end to cmake to simplify its usage on Linux,
Windows, MacOSX using cmake's generators "Unix Makefiles", "Xcode" and
"Visual Studio 15 - Visual Studio 10" and its compilers.
Windows, MacOSX using cmake's generators "Unix Makefiles", "Ninja", "Xcode" and
"Visual Studio 16 - Visual Studio 10" and its compilers.
arguments:
variant: debug if not specified
link: static if not specified
toolset: default c++ compiler if not specified
examples/windows: msvc-19.13, msvc-19.0, msvc-18.0, msvc-17.0, msvc-16.0, intel, gcc
examples/windows: msvc-19.1x, msvc-19.0, msvc-18.0, msvc-17.0, msvc-16.0, intel, gcc
examples/linux: gcc-4.9, gcc-5, gcc-6, clang, intel
address-model=32: windows: builds 32 bit binaries instead of 64 bit binaries
......@@ -131,7 +132,7 @@ usage examples:
parser.add_argument("-g", "-G", action="store", dest="generator", choices=self._dict_generator_choice[self._sys_info.get_platform()],
help="""specify a cmake generator the script has special support for.
Supported generators: ninja, umake, mgwmake, vs15, vs14, vs12, vs11, vs10, xcode.
Supported generators: ninja, umake, mgwmake, vs16, vs15, vs14, vs12, vs11, vs10, xcode.
The choices accepted are platform and installation dependent. The environment variable
DEFAULT_CMAKE_GENERATOR may be used to override the default value.""")
......@@ -155,13 +156,14 @@ usage examples:
parser.add_argument("--clean-first", action="store_true", dest="clean_first", default=False,
help="build target clean first, then build the active target.")
parser.add_argument("--verbosity", action="store", dest="build_verbosity", choices=['quiet', 'minimal', 'normal', 'detailed', 'diagnostic'], default='minimal',
help="specify msbuild verbosity level [default: %(default)s].")
parser.add_argument("--verbosity", action="store", dest="build_verbosity", choices=['cmake', 'quiet', 'minimal', 'normal', 'detailed', 'diagnostic'], default='minimal',
help="""specify (ms)build verbosity level [default: %(default)s].
The choice 'cmake' requires cmake 3.14.x or higher to increase build verbosity for Visual Studio and other generators.""")
util.app_args_add_log_level(parser)
g = parser.add_argument_group("advanced options")
g.add_argument("-i", action="store", dest="install_dir", nargs='?', const=os.path.join(self._sys_info.get_home_dir(), 'bin'),
g.add_argument("-i", action="store", dest="install_dir", nargs='?', const=os.path.join(self._sys_info.get_home_dir(native=True), 'bin'),
help="install this script and exit. The default destination directory is %(const)s.")
g.add_argument("--py-cache-clean", action="store", dest="py_cache_dirs", nargs='+',
......@@ -282,11 +284,26 @@ usage examples:
# looks like a cross compiler specification which requires a toolchain file matching the toolset spec and the linux system.
toolset_spec_norm = self._find_toolchain_file(toolset_spec_norm)
elif self._sys_info.is_windows():
# msvc-19.00 -> normalized to 19.0
re_match = re.match(r'msvc-(\d+)\.(\d+)', toolset_spec)
if re_match:
minor_version = int(re_match.group(2))
toolset_spec_norm = "msvc-{0}.{1:d}".format(re_match.group(1), minor_version)
if toolset_spec.startswith('msvc-'):
msvc_registry = bldtools.MsvcRegistry()
if toolset_spec == 'msvc-19.2x':
if msvc_registry.is_version_installed((14, 2)):
cl_version = msvc_registry.get_compiler_version((14, 2))
toolset_spec_norm = "msvc-{0:d}.{1:d}".format(cl_version[0], cl_version[1])
else:
raise InvalidCommandLineArgumentError("toolset={} not available.".format(toolset_spec))
elif toolset_spec == 'msvc-19.1x':
if msvc_registry.is_version_installed((14, 1)):
cl_version = msvc_registry.get_compiler_version((14, 1))
toolset_spec_norm = "msvc-{0:d}.{1:d}".format(cl_version[0], cl_version[1])
else:
raise InvalidCommandLineArgumentError("toolset={} not available.".format(toolset_spec))
else:
# msvc-19.00 -> normalized to 19.0
re_match = re.match(r'msvc-(\d+)\.(\d+)', toolset_spec)
if re_match:
minor_version = int(re_match.group(2))
toolset_spec_norm = "msvc-{0}.{1:d}".format(re_match.group(1), minor_version)
elif self._sys_info.is_macosx():
pass
else:
......
......@@ -155,6 +155,7 @@ class CMakeLauncher(object):
'mgwmake': 'MinGW Makefiles',
'ninja': 'Ninja',
'xcode': 'Xcode',
'vs16': 'Visual Studio 16 2019',
'vs15': 'Visual Studio 15 2017',
'vs14': 'Visual Studio 14 2015',
'vs12': 'Visual Studio 12 2013',
......@@ -178,13 +179,30 @@ class CMakeLauncher(object):
'vs12': ['msvc-18.0', 'msvc-17.0', 'msvc-16.0'],
'vs11': ['msvc-17.0', 'msvc-16.0'],
'vs10': ['msvc-16.0']}
# vs15 has not a fixed compiler version and therefore the mapping is generated dynamically.
if self._msvc_registry.is_version_installed((14, 1)):
cl_version = self._msvc_registry.get_compiler_version((14, 1))
msvc_str = 'msvc-' + ver.version_tuple_to_str(cl_version[:2])
if cl_version[1] < 20:
self._dict_to_vs_platform_toolset[msvc_str] = 'v141'
self._dict_generator_alias_to_msvc_toolsets['vs15'] = [msvc_str, 'msvc-19.0', 'msvc-18.0', 'msvc-17.0', 'msvc-16.0']
if not self._msvc_registry.is_vs2019_toolset((14, 1)):
self._dict_generator_alias_to_msvc_toolsets['vs15'] = [msvc_str, 'msvc-19.0', 'msvc-18.0', 'msvc-17.0', 'msvc-16.0']
else:
assert False
# vs16 has not a fixed compiler version and therefore the mapping is generated dynamically.
if self._msvc_registry.is_version_installed((14, 2)):
cl_version = self._msvc_registry.get_compiler_version((14, 2))
msvc_str = 'msvc-' + ver.version_tuple_to_str(cl_version[:2])
if cl_version[1] < 30:
self._dict_to_vs_platform_toolset[msvc_str] = 'v142'
msvc_version_list = [msvc_str]
if self._msvc_registry.is_version_installed((14, 1)):
cl_version = self._msvc_registry.get_compiler_version((14, 1))
msvc_version_list.append("msvc-{0:d}.{1:d}".format(cl_version[0], cl_version[1]))
msvc_version_list.extend(['msvc-19.0', 'msvc-18.0', 'msvc-17.0', 'msvc-16.0'])
self._dict_generator_alias_to_msvc_toolsets['vs16'] = msvc_version_list
else:
assert False
......@@ -259,38 +277,43 @@ class CMakeLauncher(object):
vs_toolset = "Intel C++ Compiler %d.%d" % (compiler_info.version_major_minor[0], compiler_info.version_major_minor[1])
else:
assert False
cmake_argv = ['-G', self._dict_to_cmake_generator[generator_alias],
'-T', vs_toolset,
'-A', self._dict_to_vs_platform_name[compiler_info.target_arch]]
cmake_argv = ['-G', self._dict_to_cmake_generator[generator_alias]]
if generator_alias == 'vs16':
if ver.version_compare(compiler_info.version_major_minor, (19, 20)) < 0:
cmake_argv.extend(['-T', self._dict_to_vs_platform_toolset['msvc-' + ver.version_tuple_to_str(compiler_info.version_major_minor)]])
if compiler_info.target_arch != 'x86_64':
cmake_argv.extend(['-A', self._dict_to_vs_platform_name[compiler_info.target_arch]])
else:
cmake_argv.extend(['-T', vs_toolset, '-A', self._dict_to_vs_platform_name[compiler_info.target_arch]])
elif generator_alias == 'xcode':
cmake_argv = ['-G', self._dict_to_cmake_generator[generator_alias]]
elif generator_alias in ['umake', 'mgwmake', 'ninja']:
cmake_argv = ['-G', self._dict_to_cmake_generator[generator_alias],
'-DCMAKE_BUILD_TYPE=' + self._dict_to_cmake_config[cfg]]
'-DCMAKE_BUILD_TYPE:STRING=' + self._dict_to_cmake_config[cfg]]
if compiler_info.is_cross_compiler():
cmake_argv.append('-DCMAKE_TOOLCHAIN_FILE=' + compiler_info.cmake_toolchain_file)
cmake_argv.append('-DCMAKE_TOOLCHAIN_FILE:FILEPATH=' + compiler_info.cmake_toolchain_file)
else:
if compiler_info.cmake_cxx_compiler:
cmake_argv.append('-DCMAKE_CXX_COMPILER=' + compiler_info.cmake_cxx_compiler)
cmake_argv.append('-DCMAKE_CXX_COMPILER:FILEPATH=' + compiler_info.cmake_cxx_compiler)
if compiler_info.cmake_c_compiler:
cmake_argv.append('-DCMAKE_C_COMPILER=' + compiler_info.cmake_c_compiler)
cmake_argv.append('-DCMAKE_C_COMPILER:FILEPATH=' + compiler_info.cmake_c_compiler)
if cmake_argv_optional:
# Add any additional arguments to the cmake command line.
cmake_argv.extend(cmake_argv_optional)
if lnk_variant == 'shared':
cmake_argv.append('-DBUILD_SHARED_LIBS=1')
cmake_argv.append('-DBUILD_SHARED_LIBS:BOOL=ON')
if self._is_multi_configuration_generator():
cmake_config_types = [self._dict_to_cmake_config[x] for x in self._default_config_types]
for b_cfg in build_configs:
if b_cfg not in self._default_config_types:
cmake_config_types.append(self._dict_to_cmake_config[b_cfg])
cmake_argv.append('-DCMAKE_CONFIGURATION_TYPES=' + ';'.join(cmake_config_types))
cmake_argv.append('-DCMAKE_CONFIGURATION_TYPES:STRING=' + ';'.join(cmake_config_types))
# cmake_argv.append(self._top_dir)
# print("launch_config(): cmake_args", cmake_argv)
# print("build dir:", b_dir)
# print("top dir:", self._top_dir)
if (not self._sys_info.is_windows()) and (ver.version_compare(self._cmake_finder.get_cmake_version(), (3, 13, 0)) >= 0):
# Not done for windows yet avoiding potential issues with command line length limits.
if ver.version_compare(self._cmake_finder.get_cmake_version(), (3, 13, 0)) >= 0:
cmake_argv.extend(['-S', self._top_dir, '-B', b_dir])
retv = self.launch_cmake(cmake_argv)
else:
......@@ -410,9 +433,11 @@ class CMakeLauncher(object):
elif self._sys_info.get_platform() == 'macosx':
generator_alias = 'xcode'
elif self._sys_info.get_platform() == 'windows':
# e.g. 14.1, 14.0, 12.0 etc.
# e.g. 14.2, 14.1, 14.0, 12.0 etc.
bb_vs_latest_version = self._msvc_registry.get_latest_version()
if ver.version_compare(bb_vs_latest_version, (14,1)) == 0:
if ver.version_compare(bb_vs_latest_version, (14, 2)) == 0:
generator_alias = 'vs16'
elif ver.version_compare(bb_vs_latest_version, (14, 1)) == 0:
generator_alias = 'vs15'
else:
generator_alias = 'vs' + str(bb_vs_latest_version[0])
......@@ -565,8 +590,20 @@ class CMakeLauncher(object):
self._add_cmake_build_tool_options(cmake_argv, ['-parallelizeTargets', '-jobs', str(build_jobs)])
def _add_cmake_build_verbosity_option(self, cmake_argv, generator_alias, verbosity_level):
if generator_alias.startswith('vs'):
self._add_cmake_build_tool_options(cmake_argv, ['/verbosity:' + verbosity_level])
if verbosity_level == 'cmake':
cmake_version = self._cmake_finder.get_cmake_version()
if ver.version_compare(cmake_version, (3, 14)) >= 0:
# self._add_cmake_build_tool_options(cmake_argv, ['-v'])
# -v is a cmake option and not a build tool option and therefore
# it has to be inserted left of '--'
if '--' in cmake_argv:
index = cmake_argv.index('--')
cmake_argv.insert(index, '-v')
else:
cmake_argv.append('-v')
else:
if generator_alias.startswith('vs'):
self._add_cmake_build_tool_options(cmake_argv, ['/verbosity:' + verbosity_level])
def _add_cmake_build_tool_options(self, cmake_argv, build_tool_options):
if not build_tool_options:
......
......@@ -4,4 +4,4 @@
# Any manual changes here will be overridden by the next build.
#-------------
CMAKE_BUILD_VERSION_STR = "3.13.0.2"
CMAKE_BUILD_VERSION_STR = "3.14.4.4"
......@@ -98,18 +98,18 @@ class SystemInfo(object):
if self._os_arch == 'x86_64':
if self._python_arch == 'x86':
self._program_dir = os.getenv('PROGRAMW6432')
self._programx86_dir = os.getenv('PROGRAMFILES')
self._program_dir = os.path.normpath(os.getenv('PROGRAMW6432'))
self._programx86_dir = os.path.normpath(os.getenv('PROGRAMFILES'))
else:
self._program_dir = os.getenv('PROGRAMFILES')
self._programx86_dir = os.getenv('PROGRAMFILES(X86)')
self._program_dir = os.path.normpath(os.getenv('PROGRAMFILES'))
self._programx86_dir = os.path.normpath(os.getenv('PROGRAMFILES(X86)'))
assert self._programx86_dir is not None
elif self._os_arch == 'x86':
self._program_dir = os.getenv('PROGRAMFILES')
self._program_dir = os.path.normpath(os.getenv('PROGRAMFILES'))
else:
assert False
assert self._program_dir is not None
self._program_data_dir = os.getenv('PROGRAMDATA')
self._program_data_dir = os.path.normpath(os.getenv('PROGRAMDATA'))
if self._windows_msys:
pass
......@@ -315,8 +315,12 @@ class SystemInfo(object):
def get_path(self):
return self._search_path
def get_home_dir(self):
return self._home_dir
def get_home_dir(self, native=False):
if self.is_windows_msys() and native:
home_dir = os.path.normpath(os.path.expandvars('$USERPROFILE'))
else:
home_dir = self._home_dir
return home_dir
def get_default_proj_home_dir(self):
return self._default_proj_home_dir
......@@ -339,7 +343,7 @@ class SystemInfo(object):
def get_short_path(self, fpath):
if self.is_windows():
fpath = self.get_short_path_win(fpath)
fpath = os.path.normpath(self.get_short_path_win(fpath))
return fpath
def get_short_path_win(self, fpath):
......@@ -440,13 +444,13 @@ class SystemInfo(object):
# make sure the user's home directory exists
if not os.path.exists(home_dir):
raise Exception('home directory "' + home_dir + '" does not exist.')
self._home_dir = home_dir
self._home_dir = os.path.normpath(home_dir)
def _query_default_proj_home_dir(self):
if 'PROJ_HOME' in os.environ:
proj_home_dir = os.path.expandvars('$PROJ_HOME')
proj_home_dir = os.path.normpath(os.path.expandvars('$PROJ_HOME'))
else:
proj_home_dir = os.path.join(self.get_home_dir(), 'projects')
proj_home_dir = os.path.join(self.get_home_dir(native=True), 'projects')
if os.path.exists(proj_home_dir):
self._default_proj_home_dir = proj_home_dir
else:
......@@ -459,7 +463,8 @@ class SystemInfo(object):
self._search_path.append(util.normalize_path(dir))
def _query_desktop_dir(self):
home_dir = self.get_home_dir()
# MSYS has its own environment but Desktop comes from the native windows home.
home_dir = self.get_home_dir(native=True)
desktop_dir = os.path.join(home_dir, 'Desktop')
if os.path.exists(desktop_dir):
self._desktop_dir = desktop_dir
......
......@@ -60,6 +60,8 @@ function( bb_dump_cmake_system_info )
message( STATUS "CMAKE_PROGRAM_PATH: ${CMAKE_PROGRAM_PATH}" )
message( STATUS "CMAKE_SYSTEM_PROGRAM_PATH: ${CMAKE_SYSTEM_PROGRAM_PATH}" )
message( STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}" )
message( STATUS "CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM}" )
if( CMAKE_CXX_COMPILER_LOADED )
message( STATUS "CMAKE_CXX_COMPILER_LOADED: on" )
endif()
......@@ -73,6 +75,7 @@ function( bb_dump_cmake_system_info )
message( STATUS "CMAKE_CXX_COMPILER_ARCHITECTURE_ID: ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" )
endif()
if( MSVC )
message( STATUS "CMAKE_VS_PLATFORM_NAME: ${CMAKE_VS_PLATFORM_NAME}" )
message( STATUS "CMAKE_VS_PLATFORM_NAME: ${CMAKE_VS_PLATFORM_NAME}" )
message( STATUS "CMAKE_VS_PLATFORM_TOOLSET: ${CMAKE_VS_PLATFORM_TOOLSET}" )
message( STATUS "MSVC_VERSION: ${MSVC_VERSION}" )
......@@ -119,6 +122,10 @@ endfunction( bb_dump_cmake_system_info )
function( bb_dump_target_properties target_ prop1_ )
if( NOT TARGET ${target_} )
message( WARNING "target ${target_} does not exist." )
return()
endif()
set( _prop_list ${prop1_} )
list( APPEND _prop_list ${ARGN} )
list( LENGTH _prop_list _prop_list_len )
......@@ -126,9 +133,12 @@ function( bb_dump_target_properties target_ prop1_ )
foreach( _prop ${_prop_list} )
get_target_property( _prop_value ${target_} ${_prop} )
if( _prop_value )
message( STATUS "bb_dump_target_properties: ${target_}: ${_prop}=${_prop_value}" )
message( STATUS "${target_}: ${_prop}=${_prop_value}" )
endif()
endforeach()
message( STATUS "bb_dump_target_properties: leaving" )
endfunction()
macro( bb_dump_imported_target_properties target_ )
bb_dump_target_properties( ${target_} IMPORTED_LOCATION IMPORTED_IMPLIB INTERFACE_INCLUDE_DIRECTORIES INTERFACE_COMPILE_DEFINITIONS INTERFACE_LINK_LIBRARIES )
endmacro()
......@@ -5,9 +5,9 @@
#
set( BBuildEnv_VERSION_MAJOR 3 )
set( BBuildEnv_VERSION_MINOR 13 )
set( BBuildEnv_VERSION_PATCH 0 )
set( BBuildEnv_VERSION_TWEAK 2 )
set( BBuildEnv_VERSION_MINOR 14 )
set( BBuildEnv_VERSION_PATCH 4 )
set( BBuildEnv_VERSION_TWEAK 4 )
# BBuildEnv version in decimal dotted format as supported by CMake's version compare operations.
set( BBuildEnv_VERSION "${BBuildEnv_VERSION_MAJOR}.${BBuildEnv_VERSION_MINOR}.${BBuildEnv_VERSION_PATCH}.${BBuildEnv_VERSION_TWEAK}" )
......@@ -19,7 +19,12 @@ list( APPEND CMAKE_FIND_ROOT_PATH ${ARM_LINUX_SYSROOT} )
# search headers and libraries in the target environment, search
# programs in the host environment
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
# Ubuntu/amd64 + foreign architecture arm64
set( CMAKE_LIBRARY_PATH /usr/lib/${GNU_MACHINE}-linux-gnu )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH )
#set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
set( USE_OPENCV_TOOLCHAIN_FLAGS ON )
......
No preview for this file type
This diff is collapsed.
......@@ -153,6 +153,13 @@ uint32_t DecApp::decode()
{
read(nalu);
if(m_cDecLib.getFirstSliceInPicture() &&
(nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR_W_RADL ||
nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR_N_LP))
{
xFlushOutput(pcListPic);
}
if ((m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) || !isNaluWithinTargetDecLayerIdSet(&nalu) || !isNaluTheTargetLayer(&nalu))
{
bNewPicture = false;
......@@ -162,6 +169,11 @@ uint32_t DecApp::decode()
bNewPicture = m_cDecLib.decode(nalu, m_iSkipFrame, m_iPOCLastDisplay);
if (bNewPicture)
{
// check if new picture was detected at an access unit delimiter NALU
if(nalu.m_nalUnitType != NAL_UNIT_ACCESS_UNIT_DELIMITER)
{
msg( ERROR, "Error: New picture detected without access unit delimiter. VVC requires the presence of access unit delimiters.\n");
}
bitstreamFile.clear();
/* location points to the current nalunit payload[1] due to the
* need for the annexB parser to read three extra bytes.
......@@ -230,17 +242,6 @@ uint32_t DecApp::decode()
{
xWriteOutput( pcListPic, nalu.m_temporalId );
}
if ( (bNewPicture || nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_CRA) && m_cDecLib.getNoOutputPriorPicsFlag() )
{
m_cDecLib.checkNoOutputPriorPics( pcListPic );
m_cDecLib.setNoOutputPriorPicsFlag (false);
}
if ( bNewPicture &&
( nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR_W_RADL
|| nalu.m_nalUnitType == NAL_UNIT_CODED_SLICE_IDR_N_LP) )
{
xFlushOutput( pcListPic );
}
if (nalu.m_nalUnitType == NAL_UNIT_EOS)
{
xWriteOutput( pcListPic, nalu.m_temporalId );
......@@ -248,7 +249,7 @@ uint32_t DecApp::decode()
}
// write reconstruction to file -- for additional bumping as defined in C.5.2.3
if (!bNewPicture && ((nalu.m_nalUnitType >= NAL_UNIT_CODED_SLICE_TRAIL && nalu.m_nalUnitType <= NAL_UNIT_RESERVED_VCL_15)
|| (nalu.m_nalUnitType >= NAL_UNIT_CODED_SLICE_IDR_W_RADL && nalu.m_nalUnitType <= NAL_UNIT_CODED_SLICE_GRA)))
|| (nalu.m_nalUnitType >= NAL_UNIT_CODED_SLICE_IDR_W_RADL && nalu.m_nalUnitType <= NAL_UNIT_CODED_SLICE_GDR)))
{
xWriteOutput( pcListPic, nalu.m_temporalId );
}
......@@ -389,10 +390,11 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId )
numPicsNotYetDisplayed = numPicsNotYetDisplayed-2;
if ( !m_reconFileName.empty() )
{
const Window &conf = pcPicTop->cs->sps->getConformanceWindow();
const Window &conf = pcPicTop->cs->pps->getConformanceWindow();
const bool isTff = pcPicTop->topField;
bool display = true;
#if HEVC_SEI
if( m_decodedNoDisplaySEIEnabled )
{
SEIMessages noDisplay = getSeisByType( pcPic->SEIs, SEI::NO_DISPLAY );
......@@ -402,16 +404,17 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId )
display = false;
}
}
#endif
if (display)
{
m_cVideoIOYuvReconFile.write( pcPicTop->getRecoBuf(), pcPicBottom->getRecoBuf(),
m_outputColourSpaceConvert,
false, // TODO: m_packedYUVMode,
conf.getWindowLeftOffset(),
conf.getWindowRightOffset(),
conf.getWindowTopOffset(),
conf.getWindowBottomOffset(),
conf.getWindowLeftOffset() * SPS::getWinUnitX( pcPicTop->cs->sps->getChromaFormatIdc() ),
conf.getWindowRightOffset() * SPS::getWinUnitX( pcPicTop->cs->sps->getChromaFormatIdc() ),
conf.getWindowTopOffset() * SPS::getWinUnitY( pcPicTop->cs->sps->getChromaFormatIdc() ),
conf.getWindowBottomOffset() * SPS::getWinUnitY( pcPicTop->cs->sps->getChromaFormatIdc() ),
NUM_CHROMA_FORMAT, isTff );
}
}
......@@ -454,23 +457,30 @@ void DecApp::xWriteOutput( PicList* pcListPic, uint32_t tId )
if (!m_reconFileName.empty())
{
const Window &conf = pcPic->cs->sps->getConformanceWindow();
m_cVideoIOYuvReconFile.write( pcPic->getRecoBuf(),
const Window &conf = pcPic->getConformanceWindow();
const SPS* sps = pcPic->cs->sps;
ChromaFormat chromaFormatIDC = sps->getChromaFormatIdc();
if( m_upscaledOutput )
{
m_cVideoIOYuvReconFile.writeUpscaledPicture( *sps, *pcPic->cs->pps, pcPic->getRecoBuf(), m_outputColourSpaceConvert, m_packedYUVMode, m_upscaledOutput, NUM_CHROMA_FORMAT, m_bClipOutputVideoToRec709Range );