Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ecm/ECM
  • seregin/ECM
  • XiangLi/ECM
  • ksuehring/ECM
  • Morris/ecm-7-0
  • leizhao/ECM
  • Dongcheol/ecm
  • ghaznavi/ECM
  • junyanhuo/ECM
  • Morris/jvet-ad-0202
  • Yasugi/jvet-ad-0105-aspect-1
  • jonatan/ECM
  • kevin625/ECM
  • astola/ECM
  • Yasugi/jvet-ae-0055
  • ghaznavi/jvet-ae-0100-bvgcccm
  • yyu2021/ECM
  • moonmo.koo/ECM
  • ihtseng/ECM
  • ghaznavi/bugfix-for-jvet-ae-0100-bvgcccm
  • FANZHEMING/jvet-af-0101
  • ghaznavi/jvet-ah-0076-obic
  • NicolasHorst/ecm
  • ghaznavi/harmonizing-dimd-based-transform-selection-functions
  • bordesp/ECM
  • pohan-lin/ECM
  • qinhongdong/ECM-MasterBranch
  • jvet-ahg-gcc/ECM
  • renan.utida/ECM-AhG15
  • mosenabdoli/ecm-14-0-timd-merge
  • FANZHEMING/jvet-aj-0079
  • lxw/ECM
  • mosenabdoli/ecm-resolve-aj0096-aj0061
  • mosenabdoli/ecm-resolve-aj-0096-aj-0061
  • yanning/ECM
  • ghaznavi/jvet-aj-0146-and-obic-interaction
  • frankplow/ECM
  • moonmo.koo/ecm-15-ahg-7
  • moonmo.koo/ecm-15-ahg-7-fix
  • ivash/ecm-master-branch
  • moonmo.koo/ecm-test
  • pgarus/ecm-ak
  • Myungoh/jvet-ak-0059-test-1-2-c
  • Myungoh/ecm-test-1-2-c
  • Myungoh/mdip-encoder-fix
  • Myungoh/fix-mdip-2
  • Myungoh/mdip-control-for-ahg-7-tests
  • wangguiqi/ECM
48 results
Show changes
Commits on Source (261)
Showing
with 4195 additions and 134 deletions
......@@ -114,6 +114,7 @@ FastMrg : 1
AMaxBT : 1
FastMIP : 1
FastLFNST : 1
MTTSkipping : 1 # MTTSkipping: 0: disable, 1:enable
# Encoder optimization tools
AffineAmvrEncOpt : 0
......
......@@ -121,6 +121,7 @@ IMV : 1
ALF : 1
BCW : 1
BcwFast : 1
BIO : 1
CIIP : 1
Geo : 1
IBC : 1
......
......@@ -152,6 +152,8 @@ BcwFast : 1
BIO : 1
CIIP : 1
Geo : 1
GeoShapeAdapt : 1
GeoBlendIntra : 1
IBC : 1
AllowDisFracMMVD : 1
AffineAmvr : 1
......
......@@ -16,4 +16,14 @@ EnableTMnoninterTools : 0
# offgroup4
DIMD : 0
CCCM : 0
EIP : 0
\ No newline at end of file
EIP : 0
# offgroup5
IntraMTSMaxSize: 32
MTSExt: 0
LFNSTExt: 0
NSPT: 0
AlfFixedFilter: 0
PDP: 0
IntraNN: 0
IntraMTSMaxSize: 32
MTSExt: 0
LFNSTExt: 0
NSPT: 0
AlfFixedFilter: 0
PDP: 0
IntraNN: 0
IBC: 3
HashME: 1
BDPCM: 1
TemporalFilter: 0
IntraTMP: 1
FastIntraTMP: 0
SGPMnoBlend: 1
PLT: 1
RRIBC: 1
TMIBC: 1
IBCFastMethod: 6
IBCMerge: 1
IBCMBVDAdaptive: 1
IBCHashSearch: 1
IBCCIIP: 1
IBCGPM: 1
BvpCluster: 1
IBCBiPred: 0
IBCNonAdjCand: 1
IBCFilter: 1
ItmpLicExtension: 1
IBC: 3
HashME: 1
BDPCM: 1
TemporalFilter: 0
IntraTMP: 1
FastIntraTMP: 0
SGPMnoBlend: 1
PLT: 1
RRIBC: 1
TMIBC: 1
IBCFastMethod: 6
IBCMerge: 1
IBCMBVDAdaptive: 1
IBCHashSearch: 1
IBCCIIP: 1
IBCGPM: 1
BvpCluster: 1
IBCBiPred: 0
IBCNonAdjCand: 1
IBCFilter: 1
ItmpLicExtension: 1
InterSliceSeparateTree: 0
GeoInterIbc: 1
\ No newline at end of file
GeoInterIbc: 1
IntraToolControlMode: 2
MaxMTTHierarchyDepthByTidOverrideByQP: 22 322222
IBC: 3
HashME: 1
BDPCM: 1
TemporalFilter: 0
IntraTMP: 1
FastIntraTMP: 0
SGPMnoBlend: 1
PLT: 1
RRIBC: 1
TMIBC: 1
IBCFastMethod: 6
IBCMerge: 1
IBCMBVDAdaptive: 1
IBCHashSearch: 1
IBCCIIP: 1
IBCGPM: 1
BvpCluster: 1
IBCBiPred: 0
IBCNonAdjCand: 1
IBCFilter: 1
ItmpLicExtension: 1
InterSliceSeparateTree: 0
GeoInterIbc: 1
IntraToolControlMode: 2
MaxMTTHierarchyDepthByTidOverrideByQP: 22 322222
\ No newline at end of file
......@@ -449,6 +449,10 @@ void EncApp::xInitLibCfg()
m_cEncLib.setNoEipConstraintFlag(m_noEipConstraintFlag);
CHECK(m_noEipConstraintFlag && m_eip, "EIP shall be deactivated when m_noTmrlConstraintFlag is equal to 1");
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
m_cEncLib.setNoIntraPredBfConstraintFlag(m_noIntraPredBfConstraintFlag);
CHECK(m_noIntraPredBfConstraintFlag && m_intraPredBf, "Intra Pred Bf shall be deactivated when m_noIntraPredBfConstraintFlag is equal to 1");
#endif
#if ENABLE_OBMC
m_cEncLib.setNoObmcConstraintFlag(m_noObmcConstraintFlag);
CHECK(m_noObmcConstraintFlag && m_OBMC, "OBMC shall be deactivated when m_noObmcConstraintFlag is equal to 1");
......@@ -601,6 +605,9 @@ void EncApp::xInitLibCfg()
#if JVET_AG0058_EIP
m_cEncLib.setNoEipConstraintFlag(false);
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
m_cEncLib.setNoIntraPredBfConstraintFlag(false);
#endif
#if ENABLE_OBMC
m_cEncLib.setNoObmcConstraintFlag(false);
#endif
......@@ -810,6 +817,9 @@ void EncApp::xInitLibCfg()
m_cEncLib.setLog2SignPredArea (m_log2SignPredArea);
#endif
#endif
#if AHG7_MTS_TOOLOFF_CFG
m_cEncLib.setMTSExt (m_MTSExt);
#endif
#if JVET_AH0103_LOW_DELAY_LFNST_NSPT
m_cEncLib.setIntraLFNSTISlice ( m_intraLFNSTISlice );
m_cEncLib.setIntraLFNSTPBSlice ( m_intraLFNSTPBSlice );
......@@ -824,6 +834,10 @@ void EncApp::xInitLibCfg()
#if JVET_AI0050_SBT_LFNST
m_cEncLib.setUseSBTLFNST ( m_useSbtLFNST );
#endif
#if AHG7_LN_TOOLOFF_CFG
m_cEncLib.setNSPT ( m_NSPT );
m_cEncLib.setLFNSTExt ( m_LFNSTExt );
#endif
#if JVET_AH0103_LOW_DELAY_LFNST_NSPT
m_cEncLib.setUseFastInterLFNST ( m_useFastInterLFNST );
#endif
......@@ -833,6 +847,9 @@ void EncApp::xInitLibCfg()
#if JVET_AI0185_ADAPTIVE_COST_IN_MERGE_MODE
m_cEncLib.setUseAltCost ( m_useAltCost );
#endif
#if JVET_AJ0126_INTER_AMVP_ENHANCEMENT
m_cEncLib.setUseExtAmvp ( m_useExtAmvp );
#endif
#if JVET_AF0163_TM_SUBBLOCK_REFINEMENT
m_cEncLib.setUseAffineTM ( m_useAffineTM );
#if JVET_AG0276_NLIC
......@@ -938,11 +955,21 @@ void EncApp::xInitLibCfg()
#if JVET_AA0133_INTER_MTS_OPT
m_cEncLib.setInterMTSMaxSize(m_interMTSMaxSize);
#endif
#if AHG7_MTS_TOOLOFF_CFG
m_cEncLib.setIntraMTSMaxSize(m_intraMTSMaxSize);
#endif
#if ENABLE_DIMD
m_cEncLib.setUseDimd ( m_dimd );
#endif
#if JVET_W0123_TIMD_FUSION
m_cEncLib.setUseTimd ( m_timd );
#if JVET_AJ0061_TIMD_MERGE
m_cEncLib.setUseTimdMrg ( m_timdMrg );
if (!m_timd)
{
m_cEncLib.setUseTimdMrg ( false );
}
#endif
#endif
#if JVET_AB0155_SGPM
m_cEncLib.setUseSgpm ( m_sgpm );
......@@ -956,9 +983,15 @@ void EncApp::xInitLibCfg()
#if JVET_AG0058_EIP
m_cEncLib.setUseEip ( m_eip );
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
m_cEncLib.setUseIntraPredBf ( m_intraPredBf );
#endif
#if JVET_AD0085_MPM_SORTING
m_cEncLib.setUseMpmSorting ( m_mpmSorting );
#endif
#if JVET_AK0059_MDIP
m_cEncLib.setUseMdip ( m_mdip );
#endif
#if JVET_AH0136_CHROMA_REORDERING
m_cEncLib.setUseChromaReordering (m_chromaReordering);
#endif
......@@ -981,6 +1014,12 @@ void EncApp::xInitLibCfg()
m_cEncLib.setUseGeo ( m_Geo );
#if JVET_AI0082_GPM_WITH_INTER_IBC
m_cEncLib.setUseGeoInterIbc ( m_Geo ? m_geoInterIbc : false );
#endif
#if JVET_AJ0107_GPM_SHAPE_ADAPT
m_cEncLib.setUseGeoShapeAdapt ( m_Geo ? m_geoShapeAdapt : false);
#endif
#if JVET_AK0101_REGRESSION_GPM_INTRA
m_cEncLib.setUseGeoBlendIntra ( m_Geo ? m_geoBlendIntra : false);
#endif
m_cEncLib.setUseHashME ( m_HashME );
......@@ -1068,7 +1107,9 @@ void EncApp::xInitLibCfg()
m_cEncLib.setTMIbc(m_tmibc);
m_cEncLib.setIbcMerge ( m_ibcMerge );
#endif
#if JVET_AJ0057_HL_INTRA_METHOD_CONTROL
m_cEncLib.setIntraToolControlMode ( m_intraToolControlMode );
#endif
m_cEncLib.setUseWrapAround ( m_wrapAround );
m_cEncLib.setWrapAroundOffset ( m_wrapAroundOffset );
#if JVET_V0130_INTRA_TMP
......@@ -1114,6 +1155,9 @@ void EncApp::xInitLibCfg()
m_cEncLib.setConfigScaledMvExtTmvp ( m_scaledMvExtTmvp );
m_cEncLib.setConfigScaledMvExtBiTmvp ( m_scaledMvExtBiTmvp );
#endif
#if JVET_AJ0158_SUBBLOCK_INTER_EXTENSION
m_cEncLib.setConfigSbTmvpMvExt ( m_sbTmvpMvExt );
#endif
// ADD_NEW_TOOL : (encoder app) add setting of tool enabling flags and associated parameters here
m_cEncLib.setVirtualBoundariesEnabledFlag ( m_virtualBoundariesEnabledFlag );
......@@ -1182,7 +1226,7 @@ void EncApp::xInitLibCfg()
#if JVET_Z0135_TEMP_CABAC_WIN_WEIGHT
m_cEncLib.setTempCabacInitMode ( m_tempCabacInitMode );
#endif
#if JVET_AE0057_MTT_ET
#if JVET_AJ0226_MTT_SKIP
m_cEncLib.setUseMttSkip (m_useMttSkip);
#endif
// set internal bit-depth and constants
......@@ -1204,6 +1248,9 @@ void EncApp::xInitLibCfg()
m_cEncLib.setMaxNumGeoCand ( m_maxNumGeoCand );
#if JVET_AG0164_AFFINE_GPM
m_cEncLib.setMaxNumGpmAffCand ( m_maxNumGpmAffCand );
#if JVET_AJ0274_GPM_AFFINE_TM
m_cEncLib.setMaxNumGpmAffTmCand ( m_maxNumGpmAffTmCand );
#endif
#endif
m_cEncLib.setMaxNumIBCMergeCand ( m_maxNumIBCMergeCand );
#if JVET_Z0127_SPS_MHP_MAX_MRG_CAND
......@@ -1253,6 +1300,13 @@ void EncApp::xInitLibCfg()
#endif
#if JVET_AH0057_CCALF_COEFF_PRECISION
m_cEncLib.setUseCCALFPrecision ( m_ccalfPrecision );
#endif
#if JVET_AJ0188_CODING_INFO_CLASSIFICATION
m_cEncLib.setAlfLumaFixedFilterAdjust ( m_alfLumaFixedFilterAdjust );
#endif
#if JVET_AK0121_LOOPFILTER_OFFSET_REFINEMENT
m_cEncLib.setInloopOffsetRefineFlag ( m_inloopOffsetRefineFlag );
m_cEncLib.setInloopOffsetRefineFunc ( m_inloopOffsetRefineFunc );
#endif
m_cEncLib.setTestSAODisableAtPictureLevel ( m_bTestSAODisableAtPictureLevel );
m_cEncLib.setSaoEncodingRate ( m_saoEncodingRate );
......@@ -1263,6 +1317,10 @@ void EncApp::xInitLibCfg()
m_cEncLib.setSaoGreedyMergeEnc ( m_saoGreedyMergeEnc);
m_cEncLib.setIntraSmoothingDisabledFlag (!m_enableIntraReferenceSmoothing );
#if JVET_AK0085_TM_BOUNDARY_PADDING
m_cEncLib.setTMBP ( m_templateMatchingBoundaryPrediction );
#endif
m_cEncLib.setDecodedPictureHashSEIType ( m_decodedPictureHashSEIType );
#if JVET_R0294_SUBPIC_HASH
m_cEncLib.setSubpicDecodedPictureHashType ( m_subpicDecodedPictureHashType );
......@@ -1489,6 +1547,9 @@ void EncApp::xInitLibCfg()
m_cEncLib.setForceSingleSplitThread ( m_forceSplitSequential );
#endif
m_cEncLib.setUseALF ( m_alf );
#if FIXFILTER_CFG
m_cEncLib.setUseAlfFixedFilter ( m_alfFixedFilter );
#endif
m_cEncLib.setUseCCALF ( m_ccalf );
m_cEncLib.setCCALFQpThreshold ( m_ccalfQpThreshold );
m_cEncLib.setLmcs ( m_lmcsEnabled );
......@@ -1612,6 +1673,9 @@ void EncApp::xInitLibCfg()
#if JVET_AB0171_ASYMMETRIC_DB_FOR_GDR
m_cEncLib.setAsymmetricILF(m_asymmetricILF);
#endif
#if JVET_AJ0249_NEURAL_NETWORK_BASED
m_cEncLib.setNnipMode(m_intraNN);
#endif
}
void EncApp::xCreateLib( std::list<PelUnitBuf*>& recBufList, const int layerId )
......
......@@ -941,6 +941,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#if JVET_AG0058_EIP
("NoEipConstraintFlag", m_noEipConstraintFlag, false, "Indicate that EIP is deactivated")
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
("NoIntraPredBfConstraintFlag", m_noIntraPredBfConstraintFlag, false, "Indicate that Intra Pred Bf is deactivated")
#endif
#if ENABLE_OBMC
("NoObmcConstraintFlag", m_noObmcConstraintFlag, false, "Indicate that OBMC is deactivated")
#endif
......@@ -1046,6 +1049,10 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#endif
#if JVET_AI0050_SBT_LFNST
("SbtLFNST", m_useSbtLFNST, true, "SBT-LFNST (0:off, 1:on) [default: on]")
#endif
#if AHG7_LN_TOOLOFF_CFG
( "NSPT", m_NSPT, true, "Enable NSPT (0:off, 1:on) [default: on]" )
( "LFNSTExt", m_LFNSTExt, true, "Enable LFNST extension (0:off, 1:on) [default: on]" )
#endif
("SbTMVP", m_sbTmvpEnableFlag, false, "Enable Subblock Temporal Motion Vector Prediction (0: off, 1: on) [default: off]")
("MMVD", m_MMVD, true, "Enable Merge mode with Motion Vector Difference (0:off, 1:on) [default: 1]")
......@@ -1054,6 +1061,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#if JVET_AI0185_ADAPTIVE_COST_IN_MERGE_MODE
("AltCost", m_useAltCost, true, "Enable alternating cost function based on parity of merge index (0:off, 1:on) [default: on]")
#endif
#if JVET_AJ0126_INTER_AMVP_ENHANCEMENT
("ExtAmvp", m_useExtAmvp, true, "Enable extended amvp candidates (0:off, 1:on) [default: on]")
#endif
#if JVET_AF0163_TM_SUBBLOCK_REFINEMENT
("AffineTM", m_useAffineTM, true, "Enable TM-based subblock motion refinement (0:off, 1:on) [default: on]")
#if JVET_AG0276_NLIC
......@@ -1138,7 +1148,11 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
("MTSInterMaxCand", m_MTSInterMaxCand, 4, "Number of additional candidates to test in encoder search for MTS in inter slices\n")
("MTSImplicit", m_MTSImplicit, 0, "Enable implicit MTS (when explicit MTS is off)\n")
( "SBT", m_SBT, false, "Enable Sub-Block Transform for inter blocks\n" )
#if JVET_AJ0260_SBT_CORNER_MODE
( "SBTFast64WidthTh", m_SBTFast64WidthTh, 0, "Picture width threshold for testing size-64 SBT in RDO (now for HD and above sequences)\n")
#else
( "SBTFast64WidthTh", m_SBTFast64WidthTh, 1920, "Picture width threshold for testing size-64 SBT in RDO (now for HD and above sequences)\n")
#endif
( "ISP", m_ISP, false, "Enable Intra Sub-Partitions\n" )
("SMVD", m_SMVD, false, "Enable Symmetric MVD\n")
("CompositeLTReference", m_compositeRefEnabled, false, "Enable Composite Long Term Reference Frame")
......@@ -1153,6 +1167,10 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#if JVET_AA0133_INTER_MTS_OPT
("InterMTSMaxSize", m_interMTSMaxSize, 32, "InterMTSMaxSize")
#endif
#if AHG7_MTS_TOOLOFF_CFG
("IntraMTSMaxSize", m_intraMTSMaxSize, 128, "InterMTSMaxSize")
("MTSExt", m_MTSExt, true, "Enable extended MTS (0: 0ff, 1: on)")
#endif
#if JVET_AE0174_NONINTER_TM_TOOLS_CONTROL
("EnableTMnoninterTools", m_tmNoninterToolsEnableFlag, (bool) JVET_AE0174_NONINTER_TM_TOOLS_CONTROL, "Enable non-inter based template matching (0:off, 1:on) \n")
#endif
......@@ -1161,6 +1179,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#endif
#if JVET_W0123_TIMD_FUSION
( "TIMD", m_timd, true, "Enable template based intra mode derivation\n" )
#if JVET_AJ0061_TIMD_MERGE
( "TIMDMerge", m_timdMrg, true, "Enable merge mode for TIMD\n" )
#endif
#endif
#if JVET_AB0155_SGPM
( "SGPM", m_sgpm, true, "Enable spatial geometric partitioning mode\n" )
......@@ -1174,9 +1195,15 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#if JVET_AG0058_EIP
("EIP", m_eip, true, "Enable extrapolation filter-based intra prediction\n")
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
("IntraPredBf", m_intraPredBf, true, "Enable intra prediction bilateral filtering\n")
#endif
#if JVET_AD0085_MPM_SORTING
( "MPMSorting", m_mpmSorting, true, "Enable template-based intra MPM list construction\n" )
#endif
#if JVET_AK0059_MDIP
( "MDIP", m_mdip, true, "Enable MDIP and excluding intra modes\n" )
#endif
#if JVET_AH0136_CHROMA_REORDERING
("ChromaReordering", m_chromaReordering, true, "Enable template-based intra chroma list reordering\n")
#endif
......@@ -1197,8 +1224,14 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
("CIIPTIMD", m_ciipTimd, true, "Enable CIIP-TIMD mode")
#endif
("Geo", m_Geo, false, "Enable geometric partitioning mode (0:off, 1:on)")
#if JVET_AJ0107_GPM_SHAPE_ADAPT
("GeoShapeAdapt", m_geoShapeAdapt, false, "Enable shape adaptive geometric partitioning mode (0:off, 1:on)")
#endif
#if JVET_AI0082_GPM_WITH_INTER_IBC
("GeoInterIbc", m_geoInterIbc, false, "GPM with inter and IBC (0:off, 1:on) [default: off]" )
#endif
#if JVET_AK0101_REGRESSION_GPM_INTRA
("GeoBlendIntra", m_geoBlendIntra, false, "Regression-based GPM with intra and inter (0:off, 1:on) [default: off]" )
#endif
("HashME", m_HashME, false, "Enable hash motion estimation (0:off, 1:on)")
......@@ -1305,6 +1338,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#if JVET_AG0136_INTRA_TMP_LIC
("ItmpLicExtension", m_itmpLicExtension, false, "extended Itmp LIC(0:off, 1:on) [default: off]" )
#endif
#if JVET_AJ0057_HL_INTRA_METHOD_CONTROL
("IntraToolControlMode", m_intraToolControlMode, 1, "Control of Intra tools related to reference Filtering, PDPC, and intra prediction fusion (0:tool off, 1:tool on, 2:decision by alogithm whether to signal 0 or 1 in SPS) [default: 1]")
#endif
("WrapAround", m_wrapAround, false, "Enable horizontal wrap-around motion compensation for inter prediction (0:off, 1:on) [default: off]")
("WrapAroundOffset", m_wrapAroundOffset, 0u, "Offset in luma samples used for computing the horizontal wrap-around position")
......@@ -1362,6 +1398,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#if JVET_AI0183_MVP_EXTENSION
("ScaleMvExtTmvp", m_scaledMvExtTmvp, true, "ScaleMvExtTmvp" )
("ScaleMvExtBiTmvp", m_scaledMvExtBiTmvp, true, "ScaleMvExtBiTmvp" )
#endif
#if JVET_AJ0158_SUBBLOCK_INTER_EXTENSION
("SbTmvpMvExt", m_sbTmvpMvExt, true, "SbTmvpMvExt" )
#endif
// ADD_NEW_TOOL : (encoder app) add parsing parameters here
( "VirtualBoundariesPresentInSPSFlag", m_virtualBoundariesPresentFlag, true, "Virtual Boundary position information is signalled in SPS or PH (1:SPS, 0:PH) [default: on]" )
......@@ -1387,7 +1426,7 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
("PBIntraFast", m_usePbIntraFast, false, "Fast assertion if the intra mode is probable")
("AMaxBT", m_useAMaxBT, false, "Adaptive maximal BT-size")
("E0023FastEnc", m_e0023FastEnc, true, "Fast encoding setting for QTBT (proposal E0023)")
#if JVET_AE0057_MTT_ET
#if JVET_AJ0226_MTT_SKIP
("MTTSkipping", m_useMttSkip, false, "MTT split modes early termination")
#endif
("ContentBasedFastQtbt", m_contentBasedFastQtbt, false, "Signal based QTBT speed-up")
......@@ -1567,6 +1606,13 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#endif
#if JVET_AH0057_CCALF_COEFF_PRECISION
("CCALFPrecision", m_ccalfPrecision, true, "Cross-component Alf with variable precision coefficients")
#endif
#if JVET_AJ0188_CODING_INFO_CLASSIFICATION
("AlfLumaFixedFilterAdjust", m_alfLumaFixedFilterAdjust, true, "Alf Luma Fixed Filter Adjustment" )
#endif
#if JVET_AK0121_LOOPFILTER_OFFSET_REFINEMENT
("InloopOffsetRefineFlag", m_inloopOffsetRefineFlag, true, "Inloop Filter Offset Refinement Flag" )
("InloopOffsetRefineFunc", m_inloopOffsetRefineFunc, true, "Inloop Filter Offset Refinement Func" )
#endif
("TestSAODisableAtPictureLevel", m_bTestSAODisableAtPictureLevel, false, "Enables the testing of disabling SAO at the picture level after having analysed all blocks")
("SaoEncodingRate", m_saoEncodingRate, 0.75, "When >0 SAO early picture termination is enabled for luma and chroma")
......@@ -1596,6 +1642,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
("Log2ParallelMergeLevel", m_log2ParallelMergeLevel, 2u, "Parallel merge estimation region")
("WaveFrontSynchro", m_entropyCodingSyncEnabledFlag, false, "0: entropy coding sync disabled; 1 entropy coding sync enabled")
("EntryPointsPresent", m_entryPointPresentFlag, true, "0: entry points is not present; 1 entry points may be present in slice header")
#if JVET_AK0085_TM_BOUNDARY_PADDING
("TMBP", m_templateMatchingBoundaryPrediction, true, "Enables Template Matching-based Reference Picture Boundary Padding")
#endif
("ScalingList", m_useScalingListId, SCALING_LIST_OFF, "0/off: no scaling list, 1/default: default scaling lists, 2/file: scaling lists specified in ScalingListFile")
("ScalingListFile", m_scalingListFileName, string(""), "Scaling list file name. Use an empty string to produce help.")
("DisableScalingMatrixForLFNST", m_disableScalingMatrixForLfnstBlks, true, "Disable scaling matrices, when enabled, for LFNST-coded blocks")
......@@ -1634,6 +1683,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
#endif
#if JVET_AG0164_AFFINE_GPM
("MaxNumGPMAffCand", m_maxNumGpmAffCand, 9u, "Maximum number of geometric partitioning mode candidates")
#if JVET_AJ0274_GPM_AFFINE_TM
("MaxNumGPMAffTmCand", m_maxNumGpmAffTmCand, 6u, "Maximum number of affine candidates for geometric partitioning mode with TM")
#endif
#endif
#if JVET_Z0127_SPS_MHP_MAX_MRG_CAND
#if NON_ADJACENT_MRG_CAND
......@@ -1882,6 +1934,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
("DebugCTU", m_debugCTU, -1, "If DebugBitstream is present, load frames up to this POC from this bitstream. Starting with DebugPOC-frame at CTUline containin debug CTU.")
("EnsureWppBitEqual", m_ensureWppBitEqual, false, "Ensure the results are equal to results with WPP-style parallelism, even if WPP is off")
( "ALF", m_alf, true, "Adaptive Loop Filter\n" )
#if FIXFILTER_CFG
( "AlfFixedFilter", m_alfFixedFilter, true, "Fixed Filters for Adaptive Loop Filter\n" )
#endif
( "CCALF", m_ccalf, true, "Cross-component Adaptive Loop Filter" )
( "CCALFQpTh", m_ccalfQpThreshold, 37, "QP threshold above which encoder reduces CCALF usage")
#if JVET_Q0114_ASPECT5_GCI_FLAG
......@@ -1963,6 +2018,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
("TemporalFilterFutureRefs", m_gopBasedTemporalFilterFutureRefs, TF_DEFAULT_REFS, "Number of future references for temporal prefilter")
("FirstValidFrame", m_firstValidFrame, 0, "First valid frame")
("LastValidFrame", m_lastValidFrame, MAX_INT, "Last valid frame")
#if JVET_AJ0249_NEURAL_NETWORK_BASED
("IntraNN", m_intraNN, true, "Neural Network Intra Prediction: 1 activated, 0 deactivated")
#endif
("TemporalFilterStrengthFrame*", m_gopBasedTemporalFilterStrengths, std::map<int, double>(), "Strength for every * frame in GOP based temporal filter, where * is an integer."
" E.g. --TemporalFilterStrengthFrame8 0.95 will enable GOP based temporal filter at every 8th frame with strength 0.95");
// clang-format on
......@@ -2034,6 +2092,13 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
}
#endif
#if JVET_AJ0061_TIMD_MERGE
if (!m_timd)
{
m_timdMrg = false;
}
#endif
#if JVET_AG0136_INTRA_TMP_LIC
m_itmpLicMode = (m_iIntraPeriod != 1) ? 1 : 0;
#endif
......@@ -3560,6 +3625,21 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] )
}
#endif
#if AHG7_LN_TOOLOFF_CFG
if( !m_interLFNST )
{
m_useInterMTSS = false;
m_useSbtLFNST = false;
}
#endif
#if JVET_AJ0237_INTERNAL_12BIT
if ((m_internalBitDepth[CHANNEL_TYPE_LUMA] > 10) && m_CCSAO && (m_iQP >= 37) && (m_sourceWidth * m_sourceHeight > 1920 * 1080))
{
m_CCSAO = false;
}
#endif
// check validity of input parameters
if( xCheckParameter() )
{
......@@ -4063,6 +4143,9 @@ bool EncAppCfg::xCheckParameter()
#if JVET_AG0164_AFFINE_GPM
xConfirmPara( m_maxNumGpmAffCand > GEO_MAX_NUM_UNI_AFF_CANDS, "MaxNumGeoCand must be no more than GEO_MAX_NUM_UNI_CANDS." );
xConfirmPara( 0 < m_maxNumGpmAffCand && m_maxNumGpmAffCand < 2, "MaxNumGeoCand must be no less than 2 unless MaxNumGeoCand is 0." );
#if JVET_AJ0274_GPM_AFFINE_TM
xConfirmPara( m_maxNumGpmAffTmCand > m_maxNumGpmAffCand, "MaxNumGeoAffTmCand must be no more than MaxNumGeoAffCand." );
#endif
#endif
#if JVET_Z0127_SPS_MHP_MAX_MRG_CAND
xConfirmPara( m_maxNumMHPCand > GEO_MAX_NUM_UNI_CANDS, "m_maxNumMHPCand must be no more than GEO_MAX_NUM_UNI_CANDS." );
......@@ -4113,6 +4196,13 @@ bool EncAppCfg::xCheckParameter()
msg(WARNING, "TIMD is forcefully disabled since the enable flag of non-inter-TM tools is set off. \n");
m_timd = false;
}
#if JVET_AJ0061_TIMD_MERGE
if (!m_timd)
{
msg(WARNING, "TIMDMerge is forcefully disabled since timd mode is set to off. \n");
m_timdMrg = false;
}
#endif
#endif
#if JVET_AB0155_SGPM
if (m_sgpm)
......@@ -4135,6 +4225,13 @@ bool EncAppCfg::xCheckParameter()
m_mpmSorting = false;
}
#endif
#if JVET_AK0059_MDIP
if(m_mdip)
{
msg(WARNING, "MDIP is forcefully disabled since the enable flag of non-inter-TM tools is set off. \n");
m_mdip = false;
}
#endif
#if JVET_AH0136_CHROMA_REORDERING
if (m_chromaReordering)
{
......@@ -4297,6 +4394,13 @@ bool EncAppCfg::xCheckParameter()
msg(WARNING, "Subblock TM is forcefully disabled since enable flag of TM tools is set off. \n");
m_useSbTmvpTM = false;
}
#endif
#if JVET_AK0085_TM_BOUNDARY_PADDING
if( m_templateMatchingBoundaryPrediction )
{
msg( WARNING, "TM boundary padding is forcefully disabled since enable flag of TM tools is set off. \n" );
m_templateMatchingBoundaryPrediction = false;
}
#endif
}
#endif
......@@ -5557,6 +5661,9 @@ void EncAppCfg::xPrintParameter()
msg( DETAILS, "Max Num Geo Merge Candidates : %d\n", m_maxNumGeoCand );
#if JVET_AG0164_AFFINE_GPM
msg( DETAILS, "Max Num Gpm Affine Merge Candidates : %d\n", m_maxNumGpmAffCand );
#if JVET_AJ0274_GPM_AFFINE_TM
msg( DETAILS, "Max Num Gpm Affine Tm Merge Candidates : %d\n", m_maxNumGpmAffTmCand );
#endif
#endif
#if JVET_Z0127_SPS_MHP_MAX_MRG_CAND
......@@ -5627,6 +5734,10 @@ void EncAppCfg::xPrintParameter()
#endif
#if JVET_AI0050_SBT_LFNST
msg( VERBOSE, "SbtLFNST:%d ", m_useSbtLFNST );
#endif
#if AHG7_LN_TOOLOFF_CFG
msg( VERBOSE, "NSPT:%d ", m_NSPT );
msg( VERBOSE, "LFNSTExt:%d ", m_LFNSTExt );
#endif
msg( VERBOSE, "MMVD:%d ", m_MMVD);
msg( VERBOSE, "Affine:%d ", m_Affine );
......@@ -5649,6 +5760,13 @@ void EncAppCfg::xPrintParameter()
msg( VERBOSE, "HorCollocatedChroma:%d ", m_horCollocatedChromaFlag );
msg( VERBOSE, "VerCollocatedChroma:%d ", m_verCollocatedChromaFlag );
msg( VERBOSE, "MTS: %1d(intra) %1d(inter) ", m_MTS & 1, ( m_MTS >> 1 ) & 1 );
#if AHG7_MTS_TOOLOFF_CFG
msg(VERBOSE, "MTSExt: %d ", m_MTSExt);
if (m_MTS & 1)
{
msg(VERBOSE, "IntraMTSMaxSize: %d ", m_intraMTSMaxSize);
}
#endif
#if JVET_AA0133_INTER_MTS_OPT
if ((m_MTS >> 1) & 1)
{
......@@ -5672,8 +5790,14 @@ void EncAppCfg::xPrintParameter()
msg(VERBOSE, "CIIPAffine:%d ", m_useCiipAffine);
#endif
msg( VERBOSE, "Geo:%d ", m_Geo );
#if JVET_AJ0107_GPM_SHAPE_ADAPT
msg( VERBOSE, "GeoShapeAdapt:%d ", m_geoShapeAdapt );
#endif
#if JVET_AI0082_GPM_WITH_INTER_IBC
msg( VERBOSE, "GeoInterIbc:%d ", m_geoInterIbc );
#endif
#if JVET_AK0101_REGRESSION_GPM_INTRA
msg( VERBOSE, "GeoBlendIntra:%d ", m_geoBlendIntra );
#endif
m_allowDisFracMMVD = m_MMVD ? m_allowDisFracMMVD : false;
if ( m_MMVD )
......@@ -5748,6 +5872,9 @@ void EncAppCfg::xPrintParameter()
#if JVET_AG0136_INTRA_TMP_LIC
msg( VERBOSE, "TmpLicExtension:%d ", m_itmpLicExtension );
msg( VERBOSE, "TmpLicMode:%d ", m_itmpLicMode );
#endif
#if JVET_AJ0057_HL_INTRA_METHOD_CONTROL
msg(VERBOSE, "IntraToolControlMode:%d ", m_intraToolControlMode);
#endif
msg( VERBOSE, "HashME:%d ", m_HashME );
msg( VERBOSE, "WrapAround:%d ", m_wrapAround);
......@@ -5855,6 +5982,9 @@ void EncAppCfg::xPrintParameter()
#if JVET_AH0209_PDP
msg( VERBOSE, "PDP:%d ", m_pdp );
#endif
#if JVET_AJ0249_NEURAL_NETWORK_BASED
msg(VERBOSE, "IntraNN:%d ", m_intraNN);
#endif
#if ENABLE_DIMD
msg( VERBOSE, "DIMD:%d ", m_dimd );
#endif
......@@ -5873,6 +6003,9 @@ void EncAppCfg::xPrintParameter()
#if JVET_AD0085_MPM_SORTING && !JVET_AE0174_NONINTER_TM_TOOLS_CONTROL
msg(VERBOSE, "MPMSorting:%d ", m_mpmSorting);
#endif
#if JVET_AK0059_MDIP && !JVET_AE0174_NONINTER_TM_TOOLS_CONTROL
msg(VERBOSE, "MDIP:%d ", m_mdip);
#endif
#if JVET_AH0136_CHROMA_REORDERING && !JVET_AE0174_NONINTER_TM_TOOLS_CONTROL
msg(VERBOSE, "ChromaReordering:%d ", m_chromaReordering);
#endif
......@@ -5913,6 +6046,9 @@ void EncAppCfg::xPrintParameter()
#endif
#if JVET_W0123_TIMD_FUSION
msg(VERBOSE, "TIMD:%d ", m_timd);
#if JVET_AJ0061_TIMD_MERGE
msg(VERBOSE, "TIMDMerge:%d ", m_timdMrg);
#endif
#endif
#if JVET_AB0155_SGPM
msg(VERBOSE, "SGPM:%d ", m_sgpm);
......@@ -5929,6 +6065,9 @@ void EncAppCfg::xPrintParameter()
#if JVET_AD0085_MPM_SORTING
msg(VERBOSE, "MPMsorting:%d ", m_mpmSorting);
#endif
#if JVET_AK0059_MDIP
msg(VERBOSE, "MDIP:%d ", m_mdip);
#endif
#if JVET_AH0136_CHROMA_REORDERING
msg(VERBOSE, "ChromaReordering:%d ", m_chromaReordering);
#endif
......@@ -5971,7 +6110,7 @@ void EncAppCfg::xPrintParameter()
{
msg( VERBOSE, "FastPicLevelLIC:%d ", m_fastPicLevelLIC );
#if JVET_AG0276_LIC_SLOPE_ADJUST
msg( VERBOSE, "LicSlopeAdust:%d ", m_licSlopeAdjust );
msg( VERBOSE, "LicSlopeAdjust:%d ", m_licSlopeAdjust );
#endif
}
#endif
......@@ -6038,6 +6177,9 @@ void EncAppCfg::xPrintParameter()
msg( VERBOSE, "ScaleMvExtTmvp:%d ", m_scaledMvExtTmvp );
msg( VERBOSE, "ScaleMvExtBiTmvp:%d ", m_scaledMvExtBiTmvp );
#endif
#if JVET_AJ0158_SUBBLOCK_INTER_EXTENSION
msg(VERBOSE, "SbTmvpMvExt:%d ", m_sbTmvpMvExt);
#endif
// transform and coefficient coding
#if TCQ_8STATES
......
......@@ -217,6 +217,9 @@ protected:
#if JVET_AG0058_EIP
bool m_noEipConstraintFlag;
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
bool m_noIntraPredBfConstraintFlag;
#endif
#if ENABLE_OBMC
bool m_noObmcConstraintFlag;
#endif
......@@ -387,6 +390,9 @@ protected:
unsigned m_uiMaxMTTHierarchyDepthIChroma;
unsigned m_uiMaxBT[3];
unsigned m_uiMaxTT[3];
#if AHG7_MTS_TOOLOFF_CFG
bool m_MTSExt;
#endif
#if JVET_Y0152_TT_ENC_SPEEDUP
int m_ttFastSkip;
double m_ttFastSkipThr;
......@@ -411,6 +417,10 @@ protected:
#endif
#if JVET_AI0050_SBT_LFNST
bool m_useSbtLFNST;
#endif
#if AHG7_LN_TOOLOFF_CFG
bool m_NSPT;
bool m_LFNSTExt;
#endif
bool m_sbTmvpEnableFlag;
bool m_Affine;
......@@ -418,6 +428,9 @@ protected:
#if JVET_AI0185_ADAPTIVE_COST_IN_MERGE_MODE
bool m_useAltCost;
#endif
#if JVET_AJ0126_INTER_AMVP_ENHANCEMENT
bool m_useExtAmvp;
#endif
#if JVET_AF0163_TM_SUBBLOCK_REFINEMENT
bool m_useAffineTM;
#if JVET_AG0276_NLIC
......@@ -502,11 +515,17 @@ protected:
#if JVET_AA0133_INTER_MTS_OPT
int m_interMTSMaxSize;
#endif
#if AHG7_MTS_TOOLOFF_CFG
int m_intraMTSMaxSize;
#endif
#if ENABLE_DIMD
bool m_dimd;
#endif
#if JVET_W0123_TIMD_FUSION
bool m_timd;
#if JVET_AJ0061_TIMD_MERGE
bool m_timdMrg;
#endif
#endif
#if JVET_AB0155_SGPM
bool m_sgpm;
......@@ -523,9 +542,15 @@ protected:
#if JVET_AG0058_EIP
bool m_eip;
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
bool m_intraPredBf;
#endif
#if JVET_AD0085_MPM_SORTING
bool m_mpmSorting;
#endif
#if JVET_AK0059_MDIP
bool m_mdip;
#endif
#if JVET_AH0136_CHROMA_REORDERING
bool m_chromaReordering;
#endif
......@@ -546,8 +571,14 @@ protected:
bool m_ciipTimd;
#endif
bool m_Geo;
#if JVET_AJ0107_GPM_SHAPE_ADAPT
bool m_geoShapeAdapt;
#endif
#if JVET_AI0082_GPM_WITH_INTER_IBC
bool m_geoInterIbc;
#endif
#if JVET_AK0101_REGRESSION_GPM_INTRA
bool m_geoBlendIntra;
#endif
bool m_HashME;
bool m_allowDisFracMMVD;
......@@ -620,7 +651,9 @@ protected:
bool m_itmpLicExtension;
bool m_itmpLicMode;
#endif
#if JVET_AJ0057_HL_INTRA_METHOD_CONTROL
int m_intraToolControlMode;
#endif
#if JVET_AD0208_IBC_ADAPT_FOR_CAM_CAPTURED_CONTENTS
bool m_rribc;
bool m_tmibc;
......@@ -684,6 +717,9 @@ protected:
bool m_scaledMvExtTmvp;
bool m_scaledMvExtBiTmvp;
#endif
#if JVET_AJ0158_SUBBLOCK_INTER_EXTENSION
bool m_sbTmvpMvExt;
#endif
// ADD_NEW_TOOL : (encoder app) add tool enabling flags and associated parameters here
bool m_virtualBoundariesEnabledFlag;
......@@ -704,7 +740,7 @@ protected:
unsigned m_uiMaxCUWidth; ///< max. CU width in pixel
unsigned m_uiMaxCUHeight; ///< max. CU height in pixel
unsigned m_log2MinCuSize; ///< min. CU size log2
#if JVET_AE0057_MTT_ET
#if JVET_AJ0226_MTT_SKIP
bool m_useMttSkip;
#endif
......@@ -756,6 +792,13 @@ protected:
#endif
#if JVET_AH0057_CCALF_COEFF_PRECISION
bool m_ccalfPrecision;
#endif
#if JVET_AJ0188_CODING_INFO_CLASSIFICATION
bool m_alfLumaFixedFilterAdjust;
#endif
#if JVET_AK0121_LOOPFILTER_OFFSET_REFINEMENT
bool m_inloopOffsetRefineFlag;
bool m_inloopOffsetRefineFunc;
#endif
bool m_bTestSAODisableAtPictureLevel;
double m_saoEncodingRate; ///< When >0 SAO early picture termination is enabled for luma and chroma
......@@ -788,6 +831,9 @@ protected:
bool m_DeblockingFilterMetric; ///< blockiness metric in encoder
#endif
bool m_enableIntraReferenceSmoothing; ///< flag for enabling(default)/disabling intra reference smoothing/filtering
#if JVET_AK0085_TM_BOUNDARY_PADDING
bool m_templateMatchingBoundaryPrediction;
#endif
// coding tools (encoder-only parameters)
bool m_bUseASR; ///< flag for using adaptive motion search range
......@@ -984,6 +1030,9 @@ protected:
uint32_t m_maxNumGeoCand;
#if JVET_AG0164_AFFINE_GPM
uint32_t m_maxNumGpmAffCand;
#if JVET_AJ0274_GPM_AFFINE_TM
uint32_t m_maxNumGpmAffTmCand;
#endif
#endif
uint32_t m_maxNumIBCMergeCand; ///< Max number of IBC merge candidates
#if JVET_Z0127_SPS_MHP_MAX_MRG_CAND
......@@ -1067,6 +1116,9 @@ protected:
bool m_forceDecodeBitstream1;
bool m_alf; ///< Adaptive Loop Filter
#if FIXFILTER_CFG
bool m_alfFixedFilter;
#endif
bool m_ccalf;
int m_ccalfQpThreshold;
......@@ -1149,6 +1201,9 @@ protected:
CfgVPSParameters m_cfgVPSParameters;
Level::Name m_levelPtl[MAX_NUM_OLSS];
int m_olsPtlIdx[MAX_NUM_OLSS];
#if JVET_AJ0249_NEURAL_NETWORK_BASED
bool m_intraNN;
#endif
#if EXTENSION_360_VIDEO
TExt360AppEncCfg m_ext360;
......
......@@ -74,6 +74,13 @@ enum AlfFilterType
#if JVET_AC0162_ALF_RESIDUAL_SAMPLES_INPUT
ALF_FILTER_13_EXT_DB_RESI_DIRECT,
ALF_FILTER_13_EXT_DB_RESI,
#if FIXFILTER_CFG
ALF_FILTER_13_DB_RESI_DIRECT,
ALF_FILTER_13_DB_RESI,
#endif
#endif
#if FIXFILTER_CFG
ALF_FILTER_9_NO_FIX,
#endif
#endif
ALF_NUM_OF_FILTER_TYPES
......@@ -91,10 +98,26 @@ static const int size_ALF_FILTER_13_EXT_DB = -6;
#if JVET_AC0162_ALF_RESIDUAL_SAMPLES_INPUT
static const int size_ALF_FILTER_13_EXT_DB_RESI_DIRECT = -7;
static const int size_ALF_FILTER_13_EXT_DB_RESI = -8;
#if FIXFILTER_CFG
static const int size_ALF_FILTER_13_DB_RESI_DIRECT = -9;
static const int size_ALF_FILTER_13_DB_RESI = -10;
#endif
#endif
#if FIXFILTER_CFG
static const int size_ALF_FILTER_9_NO_FIX = -11;
#endif
#if JVET_AK0065_TALF
static const int size_TALF = -100;
#endif
const int alfTypeToSize[ALF_NUM_OF_FILTER_TYPES] = { 5, 7, size_CC_ALF, 9, size_ALF_FILTER_9_EXT, size_ALF_FILTER_EXT, size_ALF_FILTER_13_EXT, size_ALF_FILTER_9_EXT_DB, size_ALF_FILTER_13_EXT_DB
#if JVET_AC0162_ALF_RESIDUAL_SAMPLES_INPUT
,size_ALF_FILTER_13_EXT_DB_RESI_DIRECT, size_ALF_FILTER_13_EXT_DB_RESI
#if FIXFILTER_CFG
,size_ALF_FILTER_13_DB_RESI_DIRECT, size_ALF_FILTER_13_DB_RESI
#endif
#endif
#if FIXFILTER_CFG
, size_ALF_FILTER_9_NO_FIX
#endif
};
#elif JVET_AA0095_ALF_WITH_SAMPLES_BEFORE_DBF
......@@ -213,6 +236,37 @@ struct AlfFilterShape
offset0 = ALF_ORDER;
#endif
}
#if FIXFILTER_CFG
else if( size == size_ALF_FILTER_9_NO_FIX )
{
filterLength = 9;
filterSize = 9 * 9 / 2 + 1 ;
pattern = {
0,
1, 2, 3,
4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 19, 18, 17, 16,
15, 14, 13, 12, 11, 10, 9,
8, 7, 6, 5, 4,
3, 2, 1,
0
};
weights = {
2,
2, 2, 2,
2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 1, 1
};
filterType = ALF_FILTER_9_NO_FIX;
numCoeff = 21;
numOrder = 1;
indexSecOrder = 20;
offset0 = 0;
}
#endif
else if( size == size_ALF_FILTER_9_EXT )
{
size = 9;
......@@ -446,8 +500,13 @@ struct AlfFilterShape
{
size = 13;
#if JVET_AD0222_ALF_LONG_FIXFILTER && JVET_AD0222_ADDITONAL_ALF_FIXFILTER
#if JVET_AK0091_LAPLACIAN_INFO_IN_ALF
numCoeff = 11 + EXT_LENGTH + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI + 1 + 1 + NUM_LAPLACIAN_FILTERED_COEFF;
filterSize = 11 + EXT_LENGTH + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI + 1 + 1 + NUM_LAPLACIAN_FILTERED_COEFF;
#else
numCoeff = 11 + EXT_LENGTH + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI + 1 + 1;
filterSize = 11 + EXT_LENGTH + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI + 1 + 1;
#endif
#elif JVET_AD0222_ALF_LONG_FIXFILTER
numCoeff = 11 + EXT_LENGTH + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI + 1;
filterSize = 11 + EXT_LENGTH + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI + 1;
......@@ -477,7 +536,11 @@ struct AlfFilterShape
};
numOrder = 2;
#if JVET_AD0222_ALF_LONG_FIXFILTER && JVET_AD0222_ADDITONAL_ALF_FIXFILTER
#if JVET_AK0091_LAPLACIAN_INFO_IN_ALF
indexSecOrder = 8 + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI + NUM_LAPLACIAN_FILTERED_COEFF - NUM_LAPLACIAN_FILTERED_SOURCE;
#else
indexSecOrder = 8 + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI;
#endif
#elif JVET_AD0222_ALF_LONG_FIXFILTER
indexSecOrder = 8 + NUM_DB + NUM_FIXED_BASED_COEFF_NEW - 1 + NUM_RESI;
#elif JVET_AD0222_ADDITONAL_ALF_FIXFILTER
......@@ -487,6 +550,98 @@ struct AlfFilterShape
#endif
offset0 = 0;
}
#if FIXFILTER_CFG
else if (size == size_ALF_FILTER_13_DB_RESI_DIRECT)
{
size = 13;
#if JVET_AD0222_ALF_LONG_FIXFILTER && JVET_AD0222_ADDITONAL_ALF_FIXFILTER
numCoeff = 11 + NUM_DB + NUM_RESI + NUM_GAUSS_FILTERED_COEFF;
filterSize = 11 + NUM_DB + NUM_RESI + NUM_GAUSS_FILTERED_COEFF;
#elif JVET_AD0222_ALF_LONG_FIXFILTER
numCoeff = 11 + NUM_DB + NUM_RESI;
filterSize = 11 + NUM_DB + NUM_RESI;
#elif JVET_AD0222_ADDITONAL_ALF_FIXFILTER
numCoeff = 21 + NUM_DB + NUM_RESI + NUM_GAUSS_FILTERED_COEFF;
filterSize = 21 + NUM_DB + NUM_RESI + NUM_GAUSS_FILTERED_COEFF;
#else
numCoeff = 21 + NUM_DB;
filterSize = 21 + NUM_DB;
#endif
filterLength = 13;
filterType = ALF_FILTER_13_DB_RESI_DIRECT;
pattern = {
0,
1,
2,
3,
4, 5, 6, 7, 8,
9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 19, 18, 17, 16, 15, 14,
13, 12, 11, 10, 9,
8, 7, 6, 5, 4,
3,
2,
1,
0
};
numOrder = 2;
#if JVET_AD0222_ALF_LONG_FIXFILTER && JVET_AD0222_ADDITONAL_ALF_FIXFILTER
indexSecOrder = 8 + NUM_DB + NUM_RESI + NUM_GAUSS_FILTERED_COEFF - NUM_GAUSS_FILTERED_SOURCE;
#elif JVET_AD0222_ALF_LONG_FIXFILTER
indexSecOrder = 8 + NUM_DB + NUM_RESI;
#elif JVET_AD0222_ADDITONAL_ALF_FIXFILTER
indexSecOrder = 18 + NUM_DB + NUM_RESI + NUM_GAUSS_FILTERED_COEFF - NUM_GAUSS_FILTERED_SOURCE;
#else
indexSecOrder = 18 + NUM_DB + NUM_RESI;
#endif
offset0 = 0;
}
else if (size == size_ALF_FILTER_13_DB_RESI)
{
size = 13;
#if JVET_AD0222_ALF_LONG_FIXFILTER && JVET_AD0222_ADDITONAL_ALF_FIXFILTER
numCoeff = 11 + NUM_DB + NUM_RESI + 1;
filterSize = 11 + NUM_DB + NUM_RESI + 1;
#elif JVET_AD0222_ALF_LONG_FIXFILTER
numCoeff = 11 + NUM_DB + NUM_RESI + 1;
filterSize = 11 + NUM_DB + NUM_RESI + 1;
#elif JVET_AD0222_ADDITONAL_ALF_FIXFILTER
numCoeff = 21 + NUM_DB + NUM_RESI + 1 + 1;
filterSize = 21 + NUM_DB + NUM_RESI + 1 + 1;
#else
numCoeff = 21 + NUM_DB + NUM_RESI + 1;
filterSize = 21 + NUM_DB + NUM_RESI + 1;
#endif
filterLength = 13;
filterType = ALF_FILTER_13_DB_RESI;
pattern = {
0,
1,
2,
3,
4, 5, 6, 7, 8,
9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 19, 18, 17, 16, 15, 14,
13, 12, 11, 10, 9,
8, 7, 6, 5, 4,
3,
2,
1,
0
};
numOrder = 2;
#if JVET_AD0222_ALF_LONG_FIXFILTER && JVET_AD0222_ADDITONAL_ALF_FIXFILTER
indexSecOrder = 8 + NUM_DB + NUM_RESI;
#elif JVET_AD0222_ALF_LONG_FIXFILTER
indexSecOrder = 8 + NUM_DB + NUM_RESI;
#elif JVET_AD0222_ADDITONAL_ALF_FIXFILTER
indexSecOrder = 18 + NUM_DB + NUM_RESI;
#else
indexSecOrder = 18 + NUM_DB + NUM_RESI;
#endif
offset0 = 0;
}
#endif
#endif
#endif
else if( size == size_CC_ALF )
......@@ -503,6 +658,12 @@ struct AlfFilterShape
#endif
filterType = CC_ALF;
}
#if JVET_AK0065_TALF
else if (size <= size_TALF)
{
numCoeff = abs(size - size_TALF);
}
#endif
else
{
filterType = ALF_NUM_OF_FILTER_TYPES;
......@@ -584,6 +745,9 @@ struct ScaleAlf
bool usePrev;
int apsIdx;
#if JVET_AJ0237_INTERNAL_12BIT
int bitDepth;
#endif
void reset()
{
......@@ -608,14 +772,20 @@ struct ScaleAlf
void setMinMax( const Pel lumaMin = 0, const Pel lumaMax = 1024, const bool bCheckClassifier = true )
{
const int c = classifierIdx;
#if !JVET_AJ0237_INTERNAL_12BIT
const int bitDepth = 10;
#endif
idxClassMin = (!bCheckClassifier || c == 1) ? ((lumaMin * ALF_NUM_CLASSES_CLASSIFIER[c]) >> bitDepth) : 0 ;
idxClassMax = (!bCheckClassifier || c == 1) ? ((lumaMax * ALF_NUM_CLASSES_CLASSIFIER[c]) >> bitDepth) : (ALF_NUM_CLASSES_CLASSIFIER[c] - 1) ;
initMinMaxDone = true;
}
void init( const int f, const int a, const int c )
#if JVET_AJ0237_INTERNAL_12BIT
void init(const int f, const int a, const int c, const int bDepth)
#else
void init( const int f, const int a, const int c )
#endif
{
filterSetIndex = f;
alt_num = a;
......@@ -625,7 +795,9 @@ struct ScaleAlf
idxClassMin = 0 ;
idxClassMax = ALF_NUM_CLASSES_CLASSIFIER[c] - 1 ;
#if JVET_AJ0237_INTERNAL_12BIT
bitDepth = bDepth;
#endif
initDone = true;
}
......@@ -687,6 +859,9 @@ struct AlfParam
#endif
#if JVET_AG0158_ALF_LUMA_COEFF_PRECISION
char coeffBits[MAX_NUM_ALF_ALTERNATIVES_LUMA];
#endif
#if JVET_AK0123_ALF_COEFF_RESTRICTION
char coeffMantissa[MAX_NUM_ALF_ALTERNATIVES_LUMA];
#endif
AlfFilterType filterType[MAX_NUM_CHANNEL_TYPE];
bool nonLinearFlag[MAX_NUM_CHANNEL_TYPE][32]; // alf_[luma/chroma]_clip_flag
......@@ -721,6 +896,10 @@ struct AlfParam
bool alfLumaCoeffDeltaFlag; // alf_luma_coeff_delta_flag
std::vector<AlfFilterShape>* filterShapes;
bool newFilterFlag[MAX_NUM_CHANNEL_TYPE];
#if JVET_AK0123_ALF_COEFF_RESTRICTION
char lumaScaleIdx[MAX_NUM_ALF_ALTERNATIVES_LUMA][MAX_NUM_ALF_CLASSES];
char chromaScaleIdx[MAX_NUM_ALF_ALTERNATIVES_CHROMA][1];
#endif
AlfParam()
{
......@@ -736,6 +915,9 @@ struct AlfParam
#endif
#if JVET_AG0158_ALF_LUMA_COEFF_PRECISION
std::memset( coeffBits, 0, sizeof( coeffBits ) );
#endif
#if JVET_AK0123_ALF_COEFF_RESTRICTION
std::memset(coeffMantissa, 0, sizeof(coeffMantissa));
#endif
std::memset( lumaCoeff, 0, sizeof( lumaCoeff ) );
std::memset( lumaClipp, 0, sizeof( lumaClipp ) );
......@@ -756,6 +938,10 @@ struct AlfParam
#endif
alfLumaCoeffDeltaFlag = false;
memset(newFilterFlag, 0, sizeof(newFilterFlag));
#if JVET_AK0123_ALF_COEFF_RESTRICTION
std::memset(lumaScaleIdx, 0, sizeof(lumaScaleIdx));
std::memset(chromaScaleIdx, 0, sizeof(chromaScaleIdx));
#endif
}
const AlfParam& operator = ( const AlfParam& src )
......@@ -767,6 +953,9 @@ struct AlfParam
#endif
#if JVET_AG0158_ALF_LUMA_COEFF_PRECISION
std::memcpy( coeffBits, src.coeffBits, sizeof( coeffBits ) );
#endif
#if JVET_AK0123_ALF_COEFF_RESTRICTION
std::memcpy(coeffMantissa, src.coeffMantissa, sizeof(coeffMantissa));
#endif
std::memcpy( lumaCoeff, src.lumaCoeff, sizeof( lumaCoeff ) );
std::memcpy( lumaClipp, src.lumaClipp, sizeof( lumaClipp ) );
......@@ -785,6 +974,10 @@ struct AlfParam
alfLumaCoeffDeltaFlag = src.alfLumaCoeffDeltaFlag;
filterShapes = src.filterShapes;
std::memcpy(newFilterFlag, src.newFilterFlag, sizeof(newFilterFlag));
#if JVET_AK0123_ALF_COEFF_RESTRICTION
std::memcpy(lumaScaleIdx, src.lumaScaleIdx, sizeof(lumaScaleIdx));
std::memcpy(chromaScaleIdx, src.chromaScaleIdx, sizeof(chromaScaleIdx));
#endif
return *this;
}
......@@ -815,6 +1008,12 @@ struct AlfParam
return false;
}
#endif
#if JVET_AK0123_ALF_COEFF_RESTRICTION
if (memcmp(coeffMantissa, other.coeffMantissa, sizeof(coeffMantissa)))
{
return false;
}
#endif
#endif
if( memcmp( lumaCoeff, other.lumaCoeff, sizeof( lumaCoeff ) ) )
{
......@@ -867,6 +1066,16 @@ struct AlfParam
{
return false;
}
#if JVET_AK0123_ALF_COEFF_RESTRICTION
if (memcmp(lumaScaleIdx, other.lumaScaleIdx, sizeof(lumaScaleIdx)))
{
return false;
}
if (memcmp(chromaScaleIdx, other.chromaScaleIdx, sizeof(chromaScaleIdx)))
{
return false;
}
#endif
return true;
}
......@@ -1052,6 +1261,17 @@ struct CcSaoPrvParam
};
#endif
#endif
#if JVET_AK0065_TALF
const Position templateShape0[NUM_TALF_COEFF] = {
Position( 0, 0), Position( 1, 0), Position( 0, 1), Position( 1, 1), Position(-1, 1), Position( 2, 0), Position( 0, 2),
Position(-2, 1), Position( 2, 1), Position(-1, 2), Position( 1, 2), Position( 3, 0), Position( 0, 3)
};
const Position templateShape1[NUM_TALF_COEFF] = {
Position( 0, 0), Position( 1, 0), Position( 0, 1), Position( 1, 1), Position(-1, 1), Position( 2, 0), Position( 0, 2),
Position( 3, 0), Position( 0, 3), Position( 4, 0), Position( 0, 4), Position( 5, 0), Position( 0, 5)
};
#endif
//! \}
#endif // end of #ifndef __ALFPARAMETERS__
This diff is collapsed.
......@@ -58,7 +58,11 @@ public:
#endif
class BilateralFilter
{
#if JVET_AK0118_BF_FOR_INTRA_PRED
public:
#else
private:
#endif
// 128x128 is the max TU size, 4 is the padding for the considered neighborhood, 16 is the AVX buffer size.
// (128 + 4 + 16) * (128 + 4) = 19536.
Pel tempblockSIMD[19536];
......@@ -67,8 +71,21 @@ private:
Pel *tempblock = (Pel*)tempblockSIMD;
Pel* tempblockFiltered = (Pel*)tempblockFilteredSIMD;
#if JVET_AJ0237_INTERNAL_12BIT
void (*m_bilateralFilterDiamond5x5)(uint32_t uiWidth, uint32_t uiHeight, int16_t block[], int16_t blkFilt[], const ClpRng& clpRng, Pel* recPtr, int recStride, int iWidthExtSIMD, int bfac, int bifRoundAdd, int bifRoundShift, bool isRDO, const char* lutRowPtr, bool noClip, int cutBitsNum, int bdShift
#if JVET_AK0118_BF_FOR_INTRA_PRED
, bool isIntraPredBf
#endif
);
static void blockBilateralFilterDiamond5x5(uint32_t uiWidth, uint32_t uiHeight, int16_t block[], int16_t blkFilt[], const ClpRng& clpRng, Pel* recPtr, int recStride, int iWidthExtSIMD, int bfac, int bifRoundAdd, int bifRoundShift, bool isRDO, const char* lutRowPtr, bool noClip, int cutBitsNum, int bdShift
#if JVET_AK0118_BF_FOR_INTRA_PRED
, bool isIntraPredBf
#endif
);
#else
void (*m_bilateralFilterDiamond5x5)(uint32_t uiWidth, uint32_t uiHeight, int16_t block[], int16_t blkFilt[], const ClpRng& clpRng, Pel* recPtr, int recStride, int iWidthExtSIMD, int bfac, int bifRoundAdd, int bifRoundShift, bool isRDO, const char* lutRowPtr, bool noClip, int cutBitsNum);
static void blockBilateralFilterDiamond5x5(uint32_t uiWidth, uint32_t uiHeight, int16_t block[], int16_t blkFilt[], const ClpRng& clpRng, Pel* recPtr, int recStride, int iWidthExtSIMD, int bfac, int bifRoundAdd, int bifRoundShift, bool isRDO, const char* lutRowPtr, bool noClip, int cutBitsNum);
#endif
#if JVET_AF0112_BIF_DYNAMIC_SCALING
int (*m_calcMAD)(int16_t* block, int stride, int width, int height, int whlog2);
......@@ -213,12 +230,22 @@ private:
{ 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1, },
};
#endif
#if JVET_AJ0237_INTERNAL_12BIT
int internalBitDepth;
#endif
public:
BilateralFilter();
~BilateralFilter();
void create();
void destroy();
#if JVET_AJ0237_INTERNAL_12BIT
void setInternalBitDepth(int bdDepth) { internalBitDepth = bdDepth; }
#endif
#if JVET_AK0118_BF_FOR_INTRA_PRED
int getInternalBitDepth() { return internalBitDepth; }
#endif
#if JVET_V0094_BILATERAL_FILTER
void bilateralFilterRDOdiamond5x5(const ComponentID compID, PelBuf& resiBuf, const CPelBuf& predBuf, PelBuf& recoBuf, int32_t qp, const CPelBuf& recIPredBuf, const ClpRng& clpRng, TransformUnit & currTU, bool useReco, bool doReshape = false, std::vector<Pel>* pLUT = nullptr);
void bilateralFilterPicRDOperCTU(const ComponentID compID, CodingStructure& cs, PelUnitBuf& src,BIFCabacEst* bifCABACEstimator);
......@@ -229,7 +256,11 @@ public:
#endif
);
const char* getFilterLutParameters(int16_t* block, const int stride, const int width, const int height, const PredMode predMode, const int qp, int& bfac);
const char* getFilterLutParameters(int16_t* block, const int stride, const int width, const int height, const PredMode predMode, const int qp, int& bfac
#if JVET_AK0118_BF_FOR_INTRA_PRED
, int& madValue
#endif
);
void clipNotBilaterallyFilteredBlocks(const ComponentID compID, const CPelUnitBuf& src, PelUnitBuf& rec, const ClpRng& clpRng, TransformUnit & currTU);
#endif
......@@ -243,8 +274,17 @@ public:
#if ENABLE_SIMD_BILATERAL_FILTER || JVET_X0071_CHROMA_BILATERAL_FILTER_ENABLE_SIMD
#ifdef TARGET_SIMD_X86
#if JVET_AJ0237_INTERNAL_12BIT
template<X86_VEXT vext>
static void simdFilterDiamond5x5(uint32_t uiWidth, uint32_t uiHeight, int16_t block[], int16_t blkFilt[], const ClpRng& clpRng, Pel* recPtr, int recStride, int iWidthExtSIMD, int bfac, int bifRoundAdd, int bifRoundShift, bool isRDO, const char* lutRowPtr, bool noClip, int cutBitsNum, int bdShift
#if JVET_AK0118_BF_FOR_INTRA_PRED
, bool isIntraPredBf
#endif
);
#else
template<X86_VEXT vext>
static void simdFilterDiamond5x5(uint32_t uiWidth, uint32_t uiHeight, int16_t block[], int16_t blkFilt[], const ClpRng& clpRng, Pel* recPtr, int recStride, int iWidthExtSIMD, int bfac, int bifRoundAdd, int bifRoundShift, bool isRDO, const char* lutRowPtr, bool noClip, int cutBitsNum);
#endif
#if JVET_AF0112_BIF_DYNAMIC_SCALING
template<X86_VEXT vext>
static int simdCalcMAD(int16_t* block, int stride, int width, int height, int whlog2);
......
This diff is collapsed.
......@@ -110,8 +110,16 @@ struct PelBufferOps
void(*calAbsSum) (const Pel* diff, int stride, int width, int height, int* absDiff);
void(*calcBIOParamSum5) (Pel* absGX, Pel* absGY, Pel* dIX, Pel* dIY, Pel* signGyGx, const int widthG, const int width, const int height, int* sumAbsGX, int* sumAbsGY, int* sumDIX, int* sumDIY, int* sumSignGyGx);
#if JVET_AI0046_HIGH_PRECISION_BDOF_SAMPLE
void(*calcBIOParamSum5NOSIM4) (int32_t* absGX, int32_t* absGY, int32_t* dIX, int32_t* dIY, int32_t* signGyGx, const int widthG, const int width, const int height, int* sumAbsGX, int* sumAbsGY, int* sumDIX, int* sumDIY, int* sumSignGyGx ,Pel* dI, Pel* gX, Pel* gY);
void(*calcBIOParamSum5NOSIM8) (int32_t* absGX, int32_t* absGY, int32_t* dIX, int32_t* dIY, int32_t* signGyGx, const int widthG, const int width, const int height, int* sumAbsGX, int* sumAbsGY, int* sumDIX, int* sumDIY, int* sumSignGyGx, Pel* dI, Pel* gX, Pel* gY);
void(*calcBIOParamSum5NOSIM4) (int32_t* absGX, int32_t* absGY, int32_t* dIX, int32_t* dIY, int32_t* signGyGx, const int widthG, const int width, const int height, int* sumAbsGX, int* sumAbsGY, int* sumDIX, int* sumDIY, int* sumSignGyGx ,Pel* dI
#if JVET_AG0067_DMVR_EXTENSIONS
, Pel* gX, Pel* gY
#endif
);
void(*calcBIOParamSum5NOSIM8) (int32_t* absGX, int32_t* absGY, int32_t* dIX, int32_t* dIY, int32_t* signGyGx, const int widthG, const int width, const int height, int* sumAbsGX, int* sumAbsGY, int* sumDIX, int* sumDIY, int* sumSignGyGx, Pel* dI
#if JVET_AG0067_DMVR_EXTENSIONS
, Pel* gX, Pel* gY
#endif
);
#endif
void(*calcBIOParamSum4) (Pel* absGX, Pel* absGY, Pel* dIX, Pel* dIY, Pel* signGyGx, int width, int height, const int widthG, int* sumAbsGX, int* sumAbsGY, int* sumDIX, int* sumDIY, int* sumSignGyGx);
#if JVET_Z0136_OOB
......@@ -495,7 +503,7 @@ void AreaBuf<T>::padCopyFrom(const AreaBuf<const T> &other, int w, int h, int pw
}
#if JVET_AI0208_PDP_MIP
template<typename T>
void AreaBuf<T>::copyTranspose ( const AreaBuf<const T> &other )
void AreaBuf<T>::copyTranspose( const AreaBuf<const T> &other )
{
int tw = width;
int th = height;
......@@ -516,7 +524,7 @@ void AreaBuf<T>::copyTranspose ( const AreaBuf<const T> &other )
}
}
template<typename T>
void AreaBuf<T>::copyFromFill ( const AreaBuf<const T> &other, int w, int h, T fill)
void AreaBuf<T>::copyFromFill( const AreaBuf<const T> &other, int w, int h, T fill)
{
int pw = w - (int)other.width;
int ph = h - (int)other.height;
......@@ -703,16 +711,22 @@ void AreaBuf<T>::removeWeightHighFreq(const AreaBuf<T>& other, const bool bClip,
#if ENABLE_SIMD_OPT_BCW && defined(TARGET_SIMD_X86)
if(!bClip)
{
if(!(width & 7))
g_pelBufOP.removeWeightHighFreq8(dst, dstStride, src, srcStride, width, height, 16, bcwWeight);
else if(!(width & 3))
g_pelBufOP.removeWeightHighFreq4(dst, dstStride, src, srcStride, width, height, 16, bcwWeight);
if( !( width & 7 ) )
{
g_pelBufOP.removeWeightHighFreq8( dst, dstStride, src, srcStride, width, height, 16, bcwWeight );
}
else if( !( width & 3 ) )
{
g_pelBufOP.removeWeightHighFreq4( dst, dstStride, src, srcStride, width, height, 16, bcwWeight );
}
else
{
#if JVET_AA0093_REFINED_MOTION_FOR_ARMC
g_pelBufOP.removeWeightHighFreq1(dst, dstStride, src, srcStride, width, height, 16, bcwWeight);
g_pelBufOP.removeWeightHighFreq1( dst, dstStride, src, srcStride, width, height, 16, bcwWeight );
#else
CHECK(true, "Not supported");
CHECK( true, "Not supported" );
#endif
}
}
else
{
......@@ -770,16 +784,22 @@ void AreaBuf<T>::removeHighFreq( const AreaBuf<T>& other, const bool bClip, cons
#if ENABLE_SIMD_OPT_BCW && defined(TARGET_SIMD_X86)
if (!bClip)
{
if(!(width & 7))
g_pelBufOP.removeHighFreq8(dst, dstStride, src, srcStride, width, height);
else if (!(width & 3))
g_pelBufOP.removeHighFreq4(dst, dstStride, src, srcStride, width, height);
if( !( width & 7 ) )
{
g_pelBufOP.removeHighFreq8( dst, dstStride, src, srcStride, width, height );
}
else if( !( width & 3 ) )
{
g_pelBufOP.removeHighFreq4( dst, dstStride, src, srcStride, width, height );
}
else
{
#if JVET_AA0093_REFINED_MOTION_FOR_ARMC
g_pelBufOP.removeHighFreq1(dst, dstStride, src, srcStride, width, height);
#else
CHECK(true, "Not supported");
#endif
}
}
else
{
......
......@@ -2478,6 +2478,9 @@ void CodingStructure::initSubStructure( CodingStructure& subStruct, const Channe
memcpy(subStruct.alfApss, alfApss, sizeof(alfApss));
#if JVET_AK0065_TALF
memcpy(subStruct.talfApss, talfApss, sizeof(talfApss));
#endif
subStruct.lmcsAps = lmcsAps;
subStruct.scalinglistAps = scalinglistAps;
......
This diff is collapsed.
This diff is collapsed.