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
  • jvet/VVCSoftware_VTM
  • chenhuanbang/VVCSoftware_VTM
  • ezhizng/VVCSoftware_VTM
  • XZheng/VVCSoftware_VTM
  • YanZhang/VVCSoftware_VTM
  • xiaozhongxu/VVCSoftware_VTM
  • bossen/VVCSoftware_VTM
  • XiangLi/VVCSoftware_VTM
  • s.iwamura/VVCSoftware_VTM
  • yuling.hsiao/VVCSoftware_VTM
  • ccc2384823/VVCSoftware_VTM
  • yuchisu/VVCSoftware_VTM
  • schwarz/VVCSoftware_VTM
  • philippe.hanhart/VVCSoftware_VTM
  • nanh/VVCSoftware_VTM
  • guillaume.laroche/VVCSoftware_VTM
  • Kenneth/VVCSoftware_VTM
  • jonatan/VVCSoftware_VTM
  • Alexey/VVCSoftware_VTM
  • saintspear/VVCSoftware_VTM
  • xinzhao/VVCSoftware_VTM
  • Seungsoo/VVCSoftware_VTM
  • jamesxxiu/VVCSoftware_VTM
  • leolzhao/VVCSoftware_VTM
  • ywchen/VVCSoftware_VTM
  • kevin625/VVCSoftware_VTM
  • Zhang/VVCSoftware_VTM
  • zhangkai/VVCSoftware_VTM
  • YCSun/VVCSoftware_VTM
  • ksuehring/VVCSoftware_VTM
  • AbeKiyo/VVCSoftware_VTM
  • naeri.park/VVCSoftware_VTM
  • ling/VVCSoftware_VTM
  • aikiho/VVCSoftware_VTM
  • JangwonChoi/VVCSoftware_VTM
  • Shelly/VVCSoftware_VTM
  • blaeser/VVCSoftware_VTM
  • crhelmrich/VVCSoftware_VTM
  • keydel/VVCSoftware_VTM
  • adam_wieckowski/VVCSoftware_VTM
  • hashimry/VVCSoftware_VTM
  • yimingli/VVCSoftware_VTM
  • zhipin/VVCSoftware_VTM
  • chernyak/VVCSoftware_VTM
  • jvet-l-ahg-14/VVCSoftware_VTM
  • sauer/VVCSoftware_VTM
  • fbarbier/VVCSoftware_VTM
  • misrak/VVCSoftware_VTM
  • ikai/VVCSoftware_VTM
  • tlu/VVCSoftware_VTM
  • Yasugi/VVCSoftware_VTM
  • peterchuang/VVCSoftware_VTM
  • wanght99/VVCSoftware_VTM
  • yuhan/VVCSoftware_VTM
  • hongbin/VVCSoftware_VTM
  • jiahaoli/VVCSoftware_VTM
  • cfd/VVCSoftware_VTM
  • ruoyangyu/VVCSoftware_VTM
  • chujoh/VVCSoftware_VTM
  • lijingya/VVCSoftware_VTM
  • hinz/VVCSoftware_VTM
  • tamse.anish/VVCSoftware_VTM
  • mcoban/VVCSoftware_VTM
  • george/VVCSoftware_VTM
  • jeeva.raj/VVCSoftware_VTM
  • antoine/VVCSoftware_VTM
  • moonmo.koo/VVCSoftware_VTM
  • deluxan/VVCSoftware_VTM
  • bheng/VVCSoftware_VTM
  • lzz8246/VVCSoftware_VTM
  • delagrangep/VVCSoftware_VTM
  • jiechen/VVCSoftware_VTM
  • hendry197/VVCSoftware_VTM
  • LGE_VCC/VVCSoftware_VTM
  • asegall/VVCSoftware_VTM
  • pbcowan/VVCSoftware_VTM
  • forayr/VVCSoftware_VTM
  • JT/VVCSoftware_VTM
  • Zhou/VVCSoftware_VTM
  • yjpiao/VVCSoftware_VTM
  • fabrice.leleannec/VVCSoftware_VTM
  • tpoirier/VVCSoftware_VTM
  • PoHan.Lin/VVCSoftware_VTM
  • jzxu/VVCSoftware_VTM
  • junghak.nam/VVCSoftware_VTM
  • guichunli/VVCSoftware_VTM
  • xianglinwang/VVCSoftware_VTM
  • chunchic/VVCSoftware_VTM
  • chrisr12/VVCSoftware_VTM
  • ks_kashyap/VVCSoftware_VTM
  • minhua/VVCSoftware_VTM
  • Sheng-Yen.Lin/VVCSoftware_VTM
  • hegilmez/VVCSoftware_VTM
  • swongah/VVCSoftware_VTM
  • merkle/VVCSoftware_VTM
  • sunyucheng/VVCSoftware_VTM
  • kirchhoffer/VVCSoftware_VTM
  • vdrugeon/VVCSoftware_VTM
  • jennylai/VVCSoftware_VTM
  • rickxu/VVCSoftware_VTM
  • seuhong/VVCSoftware_VTM
  • chollmann/VVCSoftware_VTM
  • jvet-n-ce8-public/VVCSoftware_VTM
  • martin.m.pettersson/VVCSoftware_VTM
  • siekmann/VVCSoftware_VTM
  • aramasub/VVCSoftware_VTM
  • zhiyilin/VVCSoftware_VTM
  • EricLin/VVCSoftware_VTM
  • mengwang/VVCSoftware_VTM
  • m.sarwer/VVCSoftware_VTM
  • agnesedong/VVCSoftware_VTM
  • geonjungko/VVCSoftware_VTM
  • bray/VVCSoftware_VTM
  • yhchao/VVCSoftware_VTM
  • Zhu/VVCSoftware_VTM
  • ykato/VVCSoftware_VTM
  • ZhipinDeng/VVCSoftware_VTM
  • jasonjung/VVCSoftware_VTM
  • hanhuang/VVCSoftware_VTM
  • seregin/VVCSoftware_VTM
  • wchen1014/VVCSoftware_VTM
  • Auyeung/VVCSoftware_VTM
  • Morris/VVCSoftware_VTM
  • lphamvan/VVCSoftware_VTM
  • dmehlem/VVCSoftware_VTM
  • shih-ta.hsiang/VVCSoftware_VTM
  • ysanchez/VVCSoftware_VTM
  • baegn74/VVCSoftware_VTM
  • kazui/VVCSoftware_VTM
  • yuwenhe_vvc/VVCSoftware_VTM
  • rickard/VVCSoftware_VTM
  • wangyang.cs/VVCSoftware_VTM
  • xwmeng/VVCSoftware_VTM
  • takeshi.tsukuba/VVCSoftware_VTM
  • yixindu/VVCSoftware_VTM
  • baixiu.wz/VVCSoftware_VTM
  • hm.jang/VVCSoftware_VTM
  • Ted/VVCSoftware_VTM
  • nguyen/VVCSoftware_VTM
  • chaohsiu/VVCSoftware_VTM
  • francoise/VVCSoftware_VTM
  • Yin/VVCSoftware_VTM
  • Morigami/VVCSoftware_VTM
  • sagar.kotecha/VVCSoftware_VTM
  • hwsun/VVCSoftware_VTM
  • pierrick.bouvier/VVCSoftware_VTM
  • XiangMa/VVCSoftware_VTM
  • LouiseLee/VVCSoftware_VTM
  • chenps/VVCSoftware_VTM
  • karls/VVCSoftware_VTM
  • biaowang/VVCSoftware_VTM
  • hangao/VVCSoftware_VTM
  • Jin/VVCSoftware_VTM
  • analci/VVCSoftware_VTM
  • KuiFan/VVCSoftware_VTM
  • hobingzhang/VVCSoftware_VTM
  • audrey.turquin/VVCSoftware_VTM
  • rlliao/VVCSoftware_VTM
  • winken/VVCSoftware_VTM
  • hallapur/VVCSoftware_VTM
  • T.Hashimoto/VVCSoftware_VTM
  • AnandMeher/VVCSoftware_VTM
  • semihese/VVCSoftware_VTM
  • ouedraogo/VVCSoftware_VTM
  • arthurcerveira/VVCSoftware_VTM
  • sunmi.yoo/VVCSoftware_VTM
  • Cynthia/VVCSoftware_VTM
  • yang/VVCSoftware_VTM
  • yuyoon/VVCSoftware_VTM
  • jslee/VVCSoftware_VTM
  • weimin.zeng/VVCSoftware_VTM
  • edrthomas/VVCSoftware_VTM
  • Mitsuru.Katsumata/VVCSoftware_VTM
  • adybrowne/VVCSoftware_VTM
  • jack.enhorn/VVCSoftware_VTM
  • Palanivel/VVCSoftware_VTM
  • olena.chubach/VVCSoftware_VTM
  • juvenalluo/VVCSoftware_VTM
  • yylee/VVCSoftware_VTM
  • bross/VVCSoftware_VTM
  • jvet-ahg-nnvc/VVCSoftware_VTM
  • jacob/VVCSoftware_VTM
  • dmytro.rusanovskyy/VVCSoftware_VTM
  • karamnaser/VVCSoftware_VTM
  • milos.radosavljevic/VVCSoftware_VTM
  • Keming/VVCSoftware_VTM
  • pj/VVCSoftware_VTM
  • cwkuo/VVCSoftware_VTM
  • BD/VVCSoftware_VTM
  • bartnik/VVCSoftware_VTM
  • Fangjun.Pu/VVCSoftware_VTM
  • nikolay.shostak/VVCSoftware_VTM
  • kirill.suverov/VVCSoftware_VTM
  • Xile_Zhou/VVCSoftware_VTM
  • ksuehring/vvc-software-vtm-nnvc
  • guether/VVCSoftware_VTM
  • salmonc/VVCSoftware_VTM
  • eeehey/VVCSoftware_VTM
  • marie-pierre.gallasso/VVCSoftware_VTM
  • jvet-ahg-fgt/VTM
  • liaojq/VVCSoftware_VTM
  • axel.ricard/VVCSoftware_VTM
  • XiangLi/nnvc
  • sw.xie/VVCSoftware_VTM
  • jeeva.raj/vvc-software-vtm-tu-c
  • XiangLi/tu-c
  • msantamaria/nnvc
  • cjj490168650/VVCSoftware_VTM
  • Yun_li/VVCSoftware_VTM
  • Zhengang/vvc-software-vtm
  • lvzhuoyi/vvc-software-vtm-nnvc
  • Kenneth/vvc-software-vtm-nn
  • biatekt/vvc-software-vtm
  • jvet-ahg-gcc/VVCSoftware_VTM
  • JINGYING/VVCSoftware_VTM
  • furban/VVCSoftware_VTM
  • yanning/VVCSoftware_VTM
  • zhuochen/VVCSoftware_VTM
  • Kaifa/VVCSoftware_VTM_AJ0048
  • yueli/VVCSoftware_VTM
  • tokumo/VVCSoftware_VTM
221 results
Show changes
Showing
with 208 additions and 106 deletions
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......@@ -484,16 +484,13 @@ static const std::map<SEI::PayloadType, const char *> payloadTypeStrings = {
{ SEI::PayloadType::PHASE_INDICATION, "Phase Indication" },
{ SEI::PayloadType::SEI_PROCESSING_ORDER, "SEI messages Processing order" },
{ SEI::PayloadType::SOURCE_PICTURE_TIMING_INFO, "Source picture timing info" },
#if JVET_AG0322_MODALITY_INFORMATION
{ SEI::PayloadType::MODALITY_INFORMATION, "Modality information" },
#endif
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
{ SEI::PayloadType::DIGITALLY_SIGNED_CONTENT_INITIALIZATION, "Digitally Signed Content Initialization" },
{ SEI::PayloadType::DIGITALLY_SIGNED_CONTENT_SELECTION, "Digitally Signed Content Selection" },
{ SEI::PayloadType::DIGITALLY_SIGNED_CONTENT_VERIFICATION, "Digitally Signed Content Verification" },
#endif
#if JVET_AJ0207_GFV
{ SEI::PayloadType::GENERATIVE_FACE_VIDEO, "Generative face video" }
{ SEI::PayloadType::GENERATIVE_FACE_VIDEO, "Generative face video" },
#if JVET_AK0239_GFVE
{ SEI::PayloadType::GENERATIVE_FACE_VIDEO_ENHANCEMENT, "Generative face video enhancement" }
#endif
};
......@@ -526,6 +523,9 @@ SEISourcePictureTimingInfo::SEISourcePictureTimingInfo(const SEISourcePictureTim
m_sptiSourceType = sei.m_sptiSourceType;
m_sptiTimeScale = sei.m_sptiTimeScale;
m_sptiNumUnitsInElementalInterval = sei.m_sptiNumUnitsInElementalInterval;
#if JVET_AJ0308_SPTI_SEI_DIRECTION_FLAG
m_sptiDirectionFlag = sei.m_sptiDirectionFlag;
#endif
}
SEIProcessingOrderInfo::SEIProcessingOrderInfo(const SEIProcessingOrderInfo& sei)
......@@ -538,6 +538,7 @@ SEIProcessingOrderInfo::SEIProcessingOrderInfo(const SEIProcessingOrderInfo& sei
m_posBreadthFirstFlag = sei.m_posBreadthFirstFlag;
m_posWrappingFlag = sei.m_posWrappingFlag;
m_posImportanceFlag = sei.m_posImportanceFlag;
m_posProcessingDegreeFlag = sei.m_posProcessingDegreeFlag;
m_posPrefixFlag = sei.m_posPrefixFlag;
m_posPayloadType = sei.m_posPayloadType;
m_posProcessingOrder = sei.m_posProcessingOrder;
......@@ -975,9 +976,7 @@ SEINeuralNetworkPostFilterCharacteristics::SEINeuralNetworkPostFilterCharacteris
m_inpFormatIdc = sei.m_inpFormatIdc;
m_auxInpIdc = sei.m_auxInpIdc;
m_sepColDescriptionFlag = sei.m_sepColDescriptionFlag;
#if JVET_AD0067_INCLUDE_SYNTAX
m_fullRangeFlag = sei.m_fullRangeFlag;
#endif
m_colPrimaries = sei.m_colPrimaries;
m_transCharacteristics = sei.m_transCharacteristics;
m_matrixCoeffs = sei.m_matrixCoeffs;
......@@ -999,6 +998,9 @@ SEINeuralNetworkPostFilterCharacteristics::SEINeuralNetworkPostFilterCharacteris
m_complexityInfoPresentFlag = sei.m_complexityInfoPresentFlag;
m_applicationPurposeTagUriPresentFlag = sei.m_applicationPurposeTagUriPresentFlag;
m_applicationPurposeTagUri = sei.m_applicationPurposeTagUri;
#if NNPFC_SCAN_TYPE_IDC
m_scanTypeIdc = sei.m_scanTypeIdc;
#endif
m_forHumanViewingIdc = sei.m_forHumanViewingIdc;
m_forMachineAnalysisIdc = sei.m_forMachineAnalysisIdc;
m_uriTag = sei.m_uriTag;
......@@ -1011,14 +1013,12 @@ SEINeuralNetworkPostFilterCharacteristics::SEINeuralNetworkPostFilterCharacteris
m_numberInputDecodedPicturesMinus1 = sei.m_numberInputDecodedPicturesMinus1;
m_numberInterpolatedPictures = sei.m_numberInterpolatedPictures;
m_numberExtrapolatedPicturesMinus1 = sei.m_numberExtrapolatedPicturesMinus1;
#if NNPFC_SPATIAL_EXTRAPOLATION
m_spatialExtrapolationLeftOffset = sei.m_spatialExtrapolationLeftOffset;
m_spatialExtrapolationRightOffset = sei.m_spatialExtrapolationRightOffset;
m_spatialExtrapolationTopOffset = sei.m_spatialExtrapolationTopOffset;
m_spatialExtrapolationBottomOffset = sei.m_spatialExtrapolationBottomOffset;
m_spatialExtrapolationPromptPresentFlag = sei.m_spatialExtrapolationPromptPresentFlag;
m_inbandPromptFlag = sei.m_inbandPromptFlag;
m_prompt = sei.m_prompt;
#endif
m_inputPicOutputFlag = sei.m_inputPicOutputFlag;
}
......@@ -1047,9 +1047,7 @@ bool SEINeuralNetworkPostFilterCharacteristics::operator == (const SEINeuralNetw
m_inpFormatIdc == sei.m_inpFormatIdc &&
m_auxInpIdc == sei.m_auxInpIdc &&
m_sepColDescriptionFlag == sei.m_sepColDescriptionFlag &&
#if JVET_AD0067_INCLUDE_SYNTAX
m_fullRangeFlag == sei.m_fullRangeFlag &&
#endif
m_colPrimaries == sei.m_colPrimaries &&
m_transCharacteristics == sei.m_transCharacteristics &&
m_matrixCoeffs == sei.m_matrixCoeffs &&
......@@ -1079,14 +1077,15 @@ bool SEINeuralNetworkPostFilterCharacteristics::operator == (const SEINeuralNetw
m_numberInputDecodedPicturesMinus1 == sei.m_numberInputDecodedPicturesMinus1 &&
m_numberInterpolatedPictures == sei.m_numberInterpolatedPictures &&
m_numberExtrapolatedPicturesMinus1 == sei.m_numberExtrapolatedPicturesMinus1 &&
#if NNPFC_SPATIAL_EXTRAPOLATION
m_spatialExtrapolationLeftOffset == sei.m_spatialExtrapolationLeftOffset &&
m_spatialExtrapolationRightOffset == sei.m_spatialExtrapolationRightOffset &&
m_spatialExtrapolationTopOffset == sei.m_spatialExtrapolationTopOffset &&
m_spatialExtrapolationBottomOffset == sei.m_spatialExtrapolationBottomOffset &&
m_spatialExtrapolationPromptPresentFlag == sei.m_spatialExtrapolationPromptPresentFlag &&
m_prompt == sei.m_prompt &&
#if NNPFC_SCAN_TYPE_IDC
m_scanTypeIdc == sei.m_scanTypeIdc &&
#endif
m_inbandPromptFlag == sei.m_inbandPromptFlag &&
m_prompt == sei.m_prompt &&
m_inputPicOutputFlag == sei.m_inputPicOutputFlag &&
m_payloadLength == sei.m_payloadLength;
......@@ -1112,6 +1111,13 @@ SEINeuralNetworkPostFilterActivation::SEINeuralNetworkPostFilterActivation(
m_noPrevCLVSFlag = sei.m_noPrevCLVSFlag;
m_noFollCLVSFlag = sei.m_noFollCLVSFlag;
m_outputFlag = sei.m_outputFlag;
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE
m_promptUpdateFlag = sei.m_promptUpdateFlag;
m_prompt = sei.m_prompt;
#endif
#if JVET_AJ0114_NNPFA_NUM_PIC_SHIFT
m_numInputPicShift = sei.m_numInputPicShift;
#endif
}
SEIPostFilterHint::SEIPostFilterHint(const SEIPostFilterHint& sei)
......@@ -1125,14 +1131,11 @@ SEIPostFilterHint::SEIPostFilterHint(const SEIPostFilterHint& sei)
m_filterHintValues = sei.m_filterHintValues;
}
#if JVET_AH2006_TXTDESCRINFO_SEI
SEITextDescription::SEITextDescription(const SEITextDescription& sei)
{
m_textDescriptionID = sei.m_textDescriptionID;
m_textCancelFlag = sei.m_textCancelFlag;
#if JVET_AI0059_TXTDESCRINFO_SEI_PERSISTANCE
m_textIDCancelFlag = sei.m_textIDCancelFlag;
#endif
m_textPersistenceFlag = sei.m_textPersistenceFlag;
m_textDescriptionPurpose = sei.m_textDescriptionPurpose;
m_textNumStringsMinus1 = sei.m_textNumStringsMinus1;
......@@ -1144,7 +1147,6 @@ SEIPostFilterHint::SEIPostFilterHint(const SEIPostFilterHint& sei)
m_textDescriptionString[i] = sei.m_textDescriptionString[i];
}
}
#endif
SEINeuralNetworkPostFilterCharacteristics* getNnpfcWithGivenId(const SEIMessages &seiList, uint32_t id)
{
......@@ -1172,7 +1174,6 @@ SEINeuralNetworkPostFilterCharacteristics* getSuperResolutionNnpfc(const SEIMess
return nullptr;
}
#if JVET_AH2006_EOI_SEI
SEIEncoderOptimizationInfo::SEIEncoderOptimizationInfo(
const SEIEncoderOptimizationInfo& sei)
{
......@@ -1182,6 +1183,10 @@ SEIEncoderOptimizationInfo::SEIEncoderOptimizationInfo(
m_forMachineAnalysisIdc = sei.m_forMachineAnalysisIdc;
m_type = sei.m_type;
m_objectBasedIdc = sei.m_objectBasedIdc;
#if JVET_AK0075_EOI_SEI_OBJ_QP_THRESHOLD
m_quantThresholdDelta = sei.m_quantThresholdDelta;
m_picQuantObjectFlag = sei.m_picQuantObjectFlag;
#endif
m_temporalResamplingTypeFlag = sei.m_temporalResamplingTypeFlag;
m_numIntPics = sei.m_numIntPics;
m_origPicDimensionsFlag = sei.m_origPicDimensionsFlag;
......@@ -1192,9 +1197,7 @@ SEIEncoderOptimizationInfo::SEIEncoderOptimizationInfo(
m_privacyProtectedInfoType = sei.m_privacyProtectedInfoType;
}
#endif
#if JVET_AG0322_MODALITY_INFORMATION
SEIModalityInfo::SEIModalityInfo(const SEIModalityInfo& sei)
{
m_miCancelFlag = sei.m_miCancelFlag;
......@@ -1206,9 +1209,7 @@ SEIModalityInfo::SEIModalityInfo(const SEIModalityInfo& sei)
m_miMaxWavelengthMantissa = sei.m_miMaxWavelengthMantissa;
m_miMaxWavelengthExponentPlus15 = sei.m_miMaxWavelengthExponentPlus15;
}
#endif
#if JVET_AJ0207_GFV
SEIGenerativeFaceVideo::SEIGenerativeFaceVideo(const SEIGenerativeFaceVideo & sei)
{
m_number = sei.m_number;
......@@ -1255,4 +1256,34 @@ SEIGenerativeFaceVideo::SEIGenerativeFaceVideo(const SEIGenerativeFaceVideo & se
m_matrixWidthstore = sei.m_matrixWidthstore;
m_matrixHeightstore = sei.m_matrixHeightstore;
}
#if JVET_AK0239_GFVE
SEIGenerativeFaceVideoEnhancement::SEIGenerativeFaceVideoEnhancement(const SEIGenerativeFaceVideoEnhancement & sei)
{
m_number = sei.m_number;
m_currentid = sei.m_currentid;
m_id = sei.m_id;
m_gfvcnt = sei.m_gfvcnt;
m_gfvid = sei.m_gfvid;
m_basePicFlag = sei.m_basePicFlag;
m_nnPresentFlag = sei.m_nnPresentFlag;
m_nnModeIdc = sei.m_nnModeIdc;
m_nnTagURI = sei.m_nnTagURI;
m_nnURI = sei.m_nnURI;
m_matrixElementPrecisionFactor = sei.m_matrixElementPrecisionFactor;
m_matrixPresentFlag = sei.m_matrixPresentFlag;
m_matrixPredFlag = sei.m_matrixPredFlag;
m_numMatrices = sei.m_numMatrices;
m_matrixWidth = sei.m_matrixWidth;
m_matrixHeight = sei.m_matrixHeight;
m_matrixElement = sei.m_matrixElement;
m_payloadFilename = sei.m_payloadFilename;
m_payloadLength = sei.m_payloadLength;
m_payloadByte = sei.m_payloadByte ? new char(*sei.m_payloadByte) : nullptr;
m_pupilPresentIdx = sei.m_pupilPresentIdx;
m_pupilCoordinatePrecisionFactor = sei.m_pupilCoordinatePrecisionFactor;
m_pupilLeftEyeCoordinateX = sei.m_pupilLeftEyeCoordinateX;
m_pupilLeftEyeCoordinateY = sei.m_pupilLeftEyeCoordinateY;
m_pupilRightEyeCoordinateX = sei.m_pupilRightEyeCoordinateX;
m_pupilRightEyeCoordinateY = sei.m_pupilRightEyeCoordinateY;
}
#endif
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......@@ -101,24 +101,17 @@ public:
SEI_PROCESSING_ORDER = 213,
SEI_PROCESSING_ORDER_NESTING = 214,
#if JVET_AH2006_EOI_SEI
ENCODER_OPTIMIZATION_INFO = 215,
#endif
SOURCE_PICTURE_TIMING_INFO = 216,
OBJECT_MASK_INFO = 217,
#if JVET_AG0322_MODALITY_INFORMATION
MODALITY_INFORMATION = 218,
#endif
#if JVET_AH2006_TXTDESCRINFO_SEI
SEI_TEXT_DESCRIPTION = 219,
#endif
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
TEXT_DESCRIPTION = 219,
DIGITALLY_SIGNED_CONTENT_INITIALIZATION = 220,
DIGITALLY_SIGNED_CONTENT_SELECTION = 221,
DIGITALLY_SIGNED_CONTENT_VERIFICATION = 222,
#endif
#if JVET_AJ0207_GFV
GENERATIVE_FACE_VIDEO = 223,
GENERATIVE_FACE_VIDEO = 223,
#if JVET_AK0239_GFVE
GENERATIVE_FACE_VIDEO_ENHANCEMENT = 224,
#endif
};
......@@ -175,7 +168,25 @@ class SEISourcePictureTimingInfo : public SEI
{
public:
PayloadType payloadType() const { return PayloadType::SOURCE_PICTURE_TIMING_INFO; }
#if JVET_AK2006_SPTI_SEI_UPDATES
SEISourcePictureTimingInfo(int temporalId)
: m_sptiSourceTimingEqualsOutputTimingFlag(false)
, m_sptiSourceType(0)
, m_sptiTimeScale(27000000)
, m_sptiNumUnitsInElementalInterval(1080000)
, m_sptiDirectionFlag(false)
, m_sptiCancelFlag(false)
, m_sptiPersistenceFlag(true)
, m_sptiSourceTypePresentFlag(false)
, m_sptiMaxSublayersMinus1(temporalId)
{
m_sptiSublayerIntervalScaleFactor.resize(MAX_TLAYER + 1, 0);
m_sptiSublayerSynthesizedPictureFlag.resize(MAX_TLAYER + 1, false);
}
#else
SEISourcePictureTimingInfo() {}
#endif
SEISourcePictureTimingInfo(const SEISourcePictureTimingInfo& sei);
virtual ~SEISourcePictureTimingInfo() {}
......@@ -185,6 +196,9 @@ public:
uint32_t m_sptiSourceType;
uint32_t m_sptiTimeScale;
uint32_t m_sptiNumUnitsInElementalInterval;
#if JVET_AJ0308_SPTI_SEI_DIRECTION_FLAG
bool m_sptiDirectionFlag;
#endif
bool m_sptiCancelFlag;
bool m_sptiPersistenceFlag;
bool m_sptiSourceTypePresentFlag;
......@@ -208,6 +222,8 @@ public:
bool m_posBreadthFirstFlag;
std::vector<bool> m_posWrappingFlag;
std::vector<bool> m_posImportanceFlag;
std::vector<bool> m_posProcessingDegreeFlag;
std::vector<uint32_t> m_posSubChainIdx;
std::vector<bool> m_posPrefixFlag;
std::vector<uint16_t> m_posPayloadType;
std::vector<uint16_t> m_posProcessingOrder;
......@@ -218,17 +234,11 @@ public:
switch (payloadType)
{
case SEI::PayloadType::FILM_GRAIN_CHARACTERISTICS:
#if !JVET_AJ0129_SPO_SEI_LIST
case SEI::PayloadType::POST_FILTER_HINT:
#endif
case SEI::PayloadType::CONTENT_LIGHT_LEVEL_INFO:
case SEI::PayloadType::NEURAL_NETWORK_POST_FILTER_CHARACTERISTICS:
case SEI::PayloadType::COLOUR_TRANSFORM_INFO:
case SEI::PayloadType::CONTENT_COLOUR_VOLUME:
#if JVET_AH2006_TXTDESCRINFO_SEI
case SEI::PayloadType::SEI_TEXT_DESCRIPTION:
#endif
#if JVET_AJ0129_SPO_SEI_LIST
case SEI::PayloadType::TEXT_DESCRIPTION:
case SEI::PayloadType::FILLER_PAYLOAD:
case SEI::PayloadType::USER_DATA_REGISTERED_ITU_T_T35:
case SEI::PayloadType::USER_DATA_UNREGISTERED:
......@@ -245,6 +255,9 @@ public:
case SEI::PayloadType::ANNOTATED_REGIONS:
case SEI::PayloadType::SAMPLE_ASPECT_RATIO_INFO:
case SEI::PayloadType::NEURAL_NETWORK_POST_FILTER_ACTIVATION:
#if JVET_AJ0048_SPO_SEI_LIST
case SEI::PayloadType::OBJECT_MASK_INFO:
case SEI::PayloadType::MODALITY_INFORMATION:
#endif
return true;
default:
......@@ -1412,9 +1425,7 @@ public:
, m_inpFormatIdc(0)
, m_auxInpIdc(0)
, m_sepColDescriptionFlag(false)
#if JVET_AD0067_INCLUDE_SYNTAX
, m_fullRangeFlag(false)
#endif
, m_colPrimaries(0)
, m_transCharacteristics(0)
, m_matrixCoeffs(0)
......@@ -1435,6 +1446,9 @@ public:
, m_complexityInfoPresentFlag(false)
, m_applicationPurposeTagUriPresentFlag(false)
, m_applicationPurposeTagUri("")
#if NNPFC_SCAN_TYPE_IDC
, m_scanTypeIdc(0)
#endif
, m_forHumanViewingIdc(0)
, m_forMachineAnalysisIdc(0)
, m_uriTag("")
......@@ -1446,14 +1460,12 @@ public:
, m_totalKilobyteSize(0)
, m_numberInputDecodedPicturesMinus1(0)
, m_numberExtrapolatedPicturesMinus1(0)
#if NNPFC_SPATIAL_EXTRAPOLATION
, m_spatialExtrapolationLeftOffset(0)
, m_spatialExtrapolationRightOffset(0)
, m_spatialExtrapolationTopOffset(0)
, m_spatialExtrapolationBottomOffset(0)
, m_spatialExtrapolationPromptPresentFlag(false)
, m_inbandPromptFlag(false)
, m_prompt("")
#endif
, m_absentInputPicZeroFlag(false)
, m_numInpPicsInOutputTensor(0)
{}
......@@ -1495,9 +1507,7 @@ public:
uint32_t m_inpFormatIdc;
uint32_t m_auxInpIdc;
bool m_sepColDescriptionFlag;
#if JVET_AD0067_INCLUDE_SYNTAX
bool m_fullRangeFlag;
#endif
uint8_t m_colPrimaries;
uint8_t m_transCharacteristics;
uint8_t m_matrixCoeffs;
......@@ -1519,6 +1529,9 @@ public:
bool m_complexityInfoPresentFlag;
bool m_applicationPurposeTagUriPresentFlag;
std::string m_applicationPurposeTagUri;
#if NNPFC_SCAN_TYPE_IDC
uint32_t m_scanTypeIdc;
#endif
uint32_t m_forHumanViewingIdc;
uint32_t m_forMachineAnalysisIdc;
std::string m_uriTag;
......@@ -1531,14 +1544,12 @@ public:
uint32_t m_numberInputDecodedPicturesMinus1;
std::vector<uint32_t> m_numberInterpolatedPictures;
uint32_t m_numberExtrapolatedPicturesMinus1;
#if NNPFC_SPATIAL_EXTRAPOLATION
int32_t m_spatialExtrapolationLeftOffset;
int32_t m_spatialExtrapolationRightOffset;
int32_t m_spatialExtrapolationTopOffset;
int32_t m_spatialExtrapolationBottomOffset;
bool m_spatialExtrapolationPromptPresentFlag;
bool m_inbandPromptFlag;
std::string m_prompt;
#endif
std::vector<bool> m_inputPicOutputFlag;
bool m_absentInputPicZeroFlag;
uint32_t m_numInpPicsInOutputTensor;
......@@ -1555,7 +1566,14 @@ public:
, m_noPrevCLVSFlag(false)
, m_noFollCLVSFlag(false)
, m_persistenceFlag(false)
{}
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE
, m_promptUpdateFlag(false)
, m_prompt("")
#endif
#if JVET_AJ0114_NNPFA_NUM_PIC_SHIFT
, m_numInputPicShift(0)
#endif
{}
SEINeuralNetworkPostFilterActivation(const SEINeuralNetworkPostFilterActivation& sei);
virtual ~SEINeuralNetworkPostFilterActivation() {}
......@@ -1567,6 +1585,13 @@ public:
bool m_noFollCLVSFlag;
bool m_persistenceFlag;
std::vector<bool> m_outputFlag;
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE
bool m_promptUpdateFlag;
std::string m_prompt;
#endif
#if JVET_AJ0114_NNPFA_NUM_PIC_SHIFT
uint32_t m_numInputPicShift;
#endif
};
class SEIPostFilterHint : public SEI
......@@ -1587,11 +1612,10 @@ public:
std::vector<int> m_filterHintValues; // values stored in linear array, [ ( ( component * sizeY + y ) * SizeX ) + x ]
};
#if JVET_AH2006_TXTDESCRINFO_SEI
class SEITextDescription : public SEI
{
public:
PayloadType payloadType() const { return PayloadType::SEI_TEXT_DESCRIPTION; }
PayloadType payloadType() const { return PayloadType::TEXT_DESCRIPTION; }
SEITextDescription() {}
SEITextDescription(const SEITextDescription& sei);
......@@ -1599,17 +1623,14 @@ public:
uint16_t m_textDescriptionID;
bool m_textCancelFlag;
#if JVET_AI0059_TXTDESCRINFO_SEI_PERSISTANCE
bool m_textIDCancelFlag;
#endif
bool m_textPersistenceFlag;
uint8_t m_textDescriptionPurpose;
uint8_t m_textNumStringsMinus1;
std::vector<std::string> m_textDescriptionStringLang;
std::vector<std::string> m_textDescriptionString;
};
#endif
#if JVET_AJ0207_GFV
class SEIGenerativeFaceVideo : public SEI
{
public:
......@@ -1661,11 +1682,46 @@ public:
std::vector<uint32_t> m_matrixWidthstore;
std::vector<uint32_t> m_matrixHeightstore;
};
#if JVET_AK0239_GFVE
class SEIGenerativeFaceVideoEnhancement : public SEI
{
public:
PayloadType payloadType() const { return PayloadType::GENERATIVE_FACE_VIDEO_ENHANCEMENT; }
SEIGenerativeFaceVideoEnhancement() {}
SEIGenerativeFaceVideoEnhancement(const SEIGenerativeFaceVideoEnhancement & sei);
virtual ~SEIGenerativeFaceVideoEnhancement() {}
uint32_t m_number;
uint32_t m_currentid;
bool m_basePicFlag;
bool m_nnPresentFlag;
uint32_t m_nnModeIdc;
std::string m_nnTagURI;
std::string m_nnURI;
uint32_t m_id;
uint32_t m_gfvcnt;
uint32_t m_gfvid;
uint32_t m_matrixElementPrecisionFactor;
bool m_matrixPresentFlag;
bool m_matrixPredFlag;
uint32_t m_numMatrices;
std::vector<uint32_t> m_matrixWidth;
std::vector<uint32_t> m_matrixHeight;
std::vector<std::vector<std::vector<double>>> m_matrixElement;
std::string m_payloadFilename;
uint64_t m_payloadLength;
char* m_payloadByte;
uint32_t m_pupilPresentIdx;
uint32_t m_pupilCoordinatePrecisionFactor;
double m_pupilLeftEyeCoordinateX;
double m_pupilLeftEyeCoordinateY;
double m_pupilRightEyeCoordinateX;
double m_pupilRightEyeCoordinateY;
};
#endif
SEINeuralNetworkPostFilterCharacteristics* getNnpfcWithGivenId(const SEIMessages &seiList, uint32_t nnpfaTargetId);
SEINeuralNetworkPostFilterCharacteristics* getSuperResolutionNnpfc(const SEIMessages &seiList);
#if JVET_AH2006_EOI_SEI
class SEIEncoderOptimizationInfo : public SEI
{
public:
......@@ -1677,6 +1733,10 @@ public:
, m_forMachineAnalysisIdc(0)
, m_type(0)
, m_objectBasedIdc(0)
#if JVET_AK0075_EOI_SEI_OBJ_QP_THRESHOLD
, m_quantThresholdDelta(0)
, m_picQuantObjectFlag(false)
#endif
, m_temporalResamplingTypeFlag(false)
, m_numIntPics(0)
, m_origPicDimensionsFlag(false)
......@@ -1696,6 +1756,10 @@ public:
uint32_t m_forMachineAnalysisIdc;
uint32_t m_type;
uint32_t m_objectBasedIdc;
#if JVET_AK0075_EOI_SEI_OBJ_QP_THRESHOLD
uint32_t m_quantThresholdDelta;
bool m_picQuantObjectFlag;
#endif
bool m_temporalResamplingTypeFlag;
uint32_t m_numIntPics;
bool m_origPicDimensionsFlag;
......@@ -1707,9 +1771,7 @@ public:
};
#endif
#if JVET_AG0322_MODALITY_INFORMATION
class SEIModalityInfo : public SEI
{
public:
......@@ -1737,7 +1799,6 @@ public:
uint16_t m_miMaxWavelengthMantissa;
uint8_t m_miMaxWavelengthExponentPlus15;
};
#endif
//! \}
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......@@ -239,6 +239,12 @@ bool DscSubstreamManager::initVerificator (const std::string &keyStoreDir, const
return true;
}
bool DscSubstreamManager::isVerificationActive()
{
return m_isInitialized && m_dscVerify.isInitialized();
}
void DscSubstreamManager::addToSubstream (int substreamId, const char *data, size_t length)
{
CHECK(substreamId >= m_substream.size(), "Invalid substream");
......@@ -261,7 +267,7 @@ void DscSubstreamManager::createDatapacket (int substreamId, std::vector<uint8_t
if (m_isFirstSubstream)
{
refDigest.resize(curDigest.size());
std::memset(refDigest.data(), 0, refDigest.size());
std::memset(refDigest.data(), 0xFF, refDigest.size());
}
else
{
......@@ -300,11 +306,16 @@ void DscSubstreamManager::signSubstream (int substreamId, std::vector<uint8_t> &
bool DscSubstreamManager::verifySubstream (int substreamId, std::vector<uint8_t> &signature)
{
if (!m_isInitialized || !m_dscVerify.isInitialized() )
{
std::cerr << "Cannot verify signature for substream " << substreamId << ". Not initialized." << std::endl;
return false;
}
printf ("DSC: verifying substream %d\n", substreamId);
CHECK(substreamId >= m_substream.size(), "Invalid substream");
if (! m_substream[substreamId].calculateHash())
{
std::cout << "Cannot verify signature for substream " << substreamId << " because no NAL units are present in that substream." << std::endl;
std::cerr << "Cannot verify signature for substream " << substreamId << " because no NAL units are present in that substream." << std::endl;
return false;
}
std::vector<uint8_t> dataPacket;
......@@ -348,13 +359,6 @@ bool DscSignature::signPacket (std::vector<uint8_t> &packet, std::vector<uint8_t
{
CHECK(m_isInitialized == false, "Signature is not initialized");
#if 0
if (std::rand() > (RAND_MAX / 2) )
{
std::cout << "\033[1;31mTest mode: invalid signature\033[0m\n";
packet[0] = 0;
}
#endif
// Create signature
EVP_MD_CTX *mdctx = EVP_MD_CTX_new();
......@@ -580,7 +584,7 @@ DSCStatus DscVerificator::verifyPacket (std::vector<uint8_t> &packet, std::vecto
unsigned long err = ERR_get_error();
char err_msg[120];
ERR_error_string_n(err, err_msg, sizeof(err_msg));
std::cout << "Verification error: " << err_msg << "\n";
std::cerr << "Verification error: " << err_msg << "\n";
}
return DSCStatus::DSC_Error;
}
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......@@ -33,12 +33,10 @@
#pragma once
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
#include "CommonDef.h"
#include "SEI.h"
#endif
#if JVET_AJ0151_DSC_SEI
......@@ -63,7 +61,6 @@ typedef enum : uint32_t
#endif
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
class SEIDigitallySignedContentInitialization: public SEI
{
......@@ -119,7 +116,6 @@ public:
PayloadType payloadType() const { return PayloadType::DIGITALLY_SIGNED_CONTENT_VERIFICATION; }
};
#endif
#if JVET_AJ0151_DSC_SEI
......@@ -148,7 +144,7 @@ private:
EVP_PKEY *m_pubKey = nullptr;
DSCStatus m_certVerificationStatus = DSCStatus::DSC_Uninitalized;
public:
~DscVerificator()
~DscVerificator()
{
uninitDscVerificator();
};
......@@ -156,6 +152,9 @@ public:
DSCStatus verifyCert (const std::string &certFile, const std::string &trustStoreDir);
DSCStatus verifyPacket (std::vector<uint8_t> &packet, std::vector<uint8_t> &signature);
void uninitDscVerificator ();
bool isInitialized() { return m_isInitialized; };
protected:
bool xLocateCertificate (const std::string &certificateURI, const std::string &keyStoreDir, std::string &targetPath);
......@@ -210,6 +209,8 @@ public:
void signSubstream (int substreamId, std::vector<uint8_t> &signature);
bool verifySubstream (int substreamId, std::vector<uint8_t> &signature);
void uninitDscSubstreamManager();
bool isVerificationActive();
protected:
void createDatapacket (int substreamId, std::vector<uint8_t> &dataPacket);
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......@@ -73,6 +73,9 @@ void SEINeuralNetworkPostFiltering::setPicActivatedNnpfc(Picture* picture)
m_isNnpfActiveForCLVS[nnpfa->m_targetId] = false; // Cancel the persistence of an NNPFA SEI message with any subsequent NNPFA SEI message with the same nnpfa_target_id
}
CHECK((uint32_t)nnpfa->m_outputFlag.size() > nnpfc->m_numInpPicsInOutputTensor, "The value of nnpfa_num_output_entries shall be in the range of 0 to NumInpPicsInOutputTensor");
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE && JVET_AK0072_NNPF_NULL_PROMPT_CONTRAINT
CHECK(!nnpfa->m_promptUpdateFlag && nnpfc->m_inbandPromptFlag && nnpfc->m_prompt.empty(), "When nnpfa_prompt_update_flag is equal 0 and nnpfc_inband_prompt_flag is equal 1, nnpfc_prompt shall not be a null string")
#endif
}
}
......@@ -170,6 +173,15 @@ void SEINeuralNetworkPostFiltering::filterPictures(PicList& picList)
CHECK(outputPicWidth == croppedWidth && outputPicHeight == croppedHeight, "When resolutionResamplingFlag is equal to 1, either nnpfcOutputPicWidth is not equal to CroppedWidth or nnpfcOutputPicHeight is not equal to CroppedHeight.");
if ((superResolutionNnpfc->m_purpose & NNPC_PurposeType::SPATIAL_EXTRAPOLATION) != 0)
{
int outputPicWidth1 = outputPicWidth + superResolutionNnpfc->m_outSubWidthC * (superResolutionNnpfc->m_spatialExtrapolationLeftOffset + superResolutionNnpfc->m_spatialExtrapolationRightOffset);
int outputPicHeight1 = outputPicHeight + superResolutionNnpfc->m_outSubHeightC * (superResolutionNnpfc->m_spatialExtrapolationTopOffset + superResolutionNnpfc->m_spatialExtrapolationBottomOffset);
CHECK(outputPicWidth1 == 0 || outputPicWidth1 % superResolutionNnpfc->m_outSubWidthC != 0, "When SpatialExtrapolation is equal to 1, the outputPicWidth1 must be greater than 0 and outputPicWidth1 % outSubWidthC shall equal 0.");
CHECK(outputPicHeight1 == 0 || outputPicHeight1 % superResolutionNnpfc->m_outSubHeightC != 0, "When SpatialExtrapolation is equal to 1, the outputPicHeight1 must be greater than 0 and outputPicHeight1 % outSubHeightC shall equal 0.");
}
}
else
{
......@@ -186,13 +198,6 @@ void SEINeuralNetworkPostFiltering::filterPictures(PicList& picList)
for (auto sei : currCodedPic->m_nnpfcActivated)
{
auto currNnpfc = (SEINeuralNetworkPostFilterCharacteristics*) sei;
if ((currNnpfc->m_purpose & NNPC_PurposeType::SPATIAL_EXTRAPOLATION) != 0)
{
currNnpfc->m_overlap = 0;
currNnpfc->m_constantPatchSizeFlag = 1;
currNnpfc->m_patchWidthMinus1 = croppedWidth - 1;
currNnpfc->m_patchHeightMinus1 = croppedHeight - 1;
}
checkInputPics(currCodedPic, currNnpfc, sourceWidth, sourceHeight, croppedWidth, croppedHeight);
}
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......
......@@ -3,7 +3,7 @@
* and contributor rights, including patent rights, and no such rights are
* granted under this license.
*
* Copyright (c) 2010-2024, ITU/ISO/IEC
* Copyright (c) 2010-2025, ITU/ISO/IEC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
......