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 191 additions and 151 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
......@@ -545,33 +545,26 @@ bool SEIReader::xReadSEImessage(SEIMessages& seis, const NalUnitType nalUnitType
xParseSEIProcessingOrderNesting((SEIProcessingOrderNesting&)*sei, nalUnitType, nuh_layer_id, payloadSize, vps, sps, hrd,
pDecodedMessageOutputStream);
break;
#if JVET_AH2006_TXTDESCRINFO_SEI
case SEI::PayloadType::SEI_TEXT_DESCRIPTION:
case SEI::PayloadType::TEXT_DESCRIPTION:
sei = new SEITextDescription;
xParseSEITextDescription((SEITextDescription&)*sei, payloadSize, pDecodedMessageOutputStream);
break;
#endif
case SEI::PayloadType::POST_FILTER_HINT:
sei = new SEIPostFilterHint;
xParseSEIPostFilterHint((SEIPostFilterHint &) *sei, payloadSize, pDecodedMessageOutputStream);
break;
#if JVET_AH2006_EOI_SEI
case SEI::PayloadType::ENCODER_OPTIMIZATION_INFO:
sei = new SEIEncoderOptimizationInfo;
xParseSEIEncoderOptimizationInfo((SEIEncoderOptimizationInfo &)*sei, payloadSize, pDecodedMessageOutputStream);
break;
#endif
case SEI::PayloadType::SOURCE_PICTURE_TIMING_INFO:
sei = new SEISourcePictureTimingInfo;
xParseSEISourcePictureTimingInfo((SEISourcePictureTimingInfo&) *sei, payloadSize, pDecodedMessageOutputStream);
break;
#if JVET_AG0322_MODALITY_INFORMATION
case SEI::PayloadType::MODALITY_INFORMATION:
sei = new SEIModalityInfo;
xParseSEIModalityInfo((SEIModalityInfo &) *sei, payloadSize, pDecodedMessageOutputStream);
break;
#endif
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
case SEI::PayloadType::DIGITALLY_SIGNED_CONTENT_INITIALIZATION:
sei = new SEIDigitallySignedContentInitialization;
xParseSEIDigitallySignedContentInitialization((SEIDigitallySignedContentInitialization &) *sei, payloadSize, pDecodedMessageOutputStream);
......@@ -580,7 +573,6 @@ bool SEIReader::xReadSEImessage(SEIMessages& seis, const NalUnitType nalUnitType
sei = new SEIDigitallySignedContentSelection;
xParseSEIDigitallySignedContentSelection((SEIDigitallySignedContentSelection &) *sei, payloadSize, pDecodedMessageOutputStream);
break;
#endif
default:
for (uint32_t i = 0; i < payloadSize; i++)
{
......@@ -654,18 +646,14 @@ bool SEIReader::xReadSEImessage(SEIMessages& seis, const NalUnitType nalUnitType
xParseSEIProcessingOrderNesting((SEIProcessingOrderNesting&)*sei, nalUnitType, nuh_layer_id, payloadSize, vps, sps, hrd,
pDecodedMessageOutputStream);
break;
#if JVET_AJ0207_GFV
case SEI::PayloadType::GENERATIVE_FACE_VIDEO:
sei = new SEIGenerativeFaceVideo;
xParseSEIGenerativeFaceVideo((SEIGenerativeFaceVideo &)*sei, payloadSize, pDecodedMessageOutputStream);
break;
#endif
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
case SEI::PayloadType::DIGITALLY_SIGNED_CONTENT_VERIFICATION:
sei = new SEIDigitallySignedContentVerification;
xParseSEIDigitallySignedContentVerification((SEIDigitallySignedContentVerification &) *sei, payloadSize, pDecodedMessageOutputStream);
break;
#endif
default:
for (uint32_t i = 0; i < payloadSize; i++)
{
......@@ -825,16 +813,17 @@ void SEIReader::xParseSEIProcessingOrder(SEIProcessingOrderInfo& sei, const NalU
sei.m_posPrefixByte.resize(numMaxSeiMessages);
sei.m_posWrappingFlag.resize(numMaxSeiMessages);
sei.m_posImportanceFlag.resize(numMaxSeiMessages);
#if JVET_AJ0129_SPO_SEI_LIST
sei.m_posProcessingDegreeFlag.resize(numMaxSeiMessages);
bool NNPFCFound = false;
bool NNPFAFound = false;
#endif
for (i = 0; i < numMaxSeiMessages; i++)
{
sei_read_flag(decodedMessageOutputStream, val, "po_sei_wrapping_flag[i]");
sei.m_posWrappingFlag[i] = val;
sei_read_flag(decodedMessageOutputStream, val, "po_sei_importance_flag[i]");
sei.m_posImportanceFlag[i] = val;
sei_read_flag(decodedMessageOutputStream, val, "po_sei_processing_degree_flag[i]");
sei.m_posProcessingDegreeFlag[i] = val;
sei_read_code(decodedMessageOutputStream, 13, val, "po_sei_payload_type[i]");
sei.m_posPayloadType[i] = val;
sei_read_flag(decodedMessageOutputStream, val, "po_sei_prefix_flag[i]");
......@@ -842,16 +831,12 @@ void SEIReader::xParseSEIProcessingOrder(SEIProcessingOrderInfo& sei, const NalU
sei_read_code(decodedMessageOutputStream, 8, val, "po_sei_processing_order[i]");
sei.m_posProcessingOrder[i] = val;
CHECK((i > 0) && (sei.m_posProcessingOrder[i] < sei.m_posProcessingOrder[i-1]) , "For i greater than 0, po_sei_processing_order[i] shall be greater than or equal to po_sei_processing_order[i-1]");
#if JVET_AJ0129_SPO_SEI_LIST
NNPFCFound = NNPFCFound || (sei.m_posPayloadType[i] == (uint16_t)SEI::PayloadType::NEURAL_NETWORK_POST_FILTER_CHARACTERISTICS);
NNPFAFound = NNPFAFound || (sei.m_posPayloadType[i] == (uint16_t)SEI::PayloadType::NEURAL_NETWORK_POST_FILTER_ACTIVATION);
CHECK(!NNPFCFound && NNPFAFound, "NNPFA payload type found before NNPFC payload type in SPO SEI");
#endif
}
CHECK(i<2, "An SEI processing order SEI message shall contain at least two pairs sei_payloadType[i] and sei_processingOrder[i]");
#if JVET_AJ0129_SPO_SEI_LIST
CHECK(NNPFCFound && !NNPFAFound, "When SPO SEI contains NNPFC payload type it shall also contain NNPFA payload type");
#endif
for (i = 0; i < numMaxSeiMessages; i++)
{
......@@ -879,6 +864,42 @@ void SEIReader::xParseSEIProcessingOrder(SEIProcessingOrderInfo& sei, const NalU
}
}
}
uint32_t numProcStgs = sei.m_posNumMinus2 + 2;
std::vector<uint32_t> seiTypeIdx;
for (uint32_t j = 0; j < numProcStgs; j++)
{
seiTypeIdx.push_back(j);
}
uint32_t subChainFlag = 0;
uint32_t subChainPrevIdx = 0;
sei.m_posSubChainIdx.resize(numProcStgs);
for (uint32_t j = 0; j < numProcStgs; j++)
{
uint32_t idx = seiTypeIdx[j];
if (sei.m_posImportanceFlag[idx] && sei.m_posProcessingDegreeFlag[idx])
{
sei.m_posSubChainIdx[j] = 0;
}
else if (!sei.m_posImportanceFlag[idx] && sei.m_posProcessingDegreeFlag[idx])
{
sei.m_posSubChainIdx[j] = subChainPrevIdx;
subChainFlag = 0;
}
else if (sei.m_posImportanceFlag[idx] && !sei.m_posProcessingDegreeFlag[idx])
{
if (subChainFlag == 0)
{
subChainPrevIdx++;
}
sei.m_posSubChainIdx[j] = subChainPrevIdx;
subChainFlag = 1;
}
else
{
sei.m_posSubChainIdx[j] = subChainFlag * subChainPrevIdx;
}
}
}
void SEIReader::xParseSEIProcessingOrderNesting(SEIProcessingOrderNesting& sei, const NalUnitType nalUnitType, const uint32_t nuhLayerId, uint32_t payloadSize, const VPS* vps, const SPS* sps, HRD& hrd, std::ostream* decodedMessageOutputStream)
......@@ -2040,7 +2061,6 @@ void SEIReader::xParseSEIObjectMaskInfos(SEIObjectMaskInfos& sei, uint32_t paylo
}
}
#if JVET_AH2006_EOI_SEI
void SEIReader::xParseSEIEncoderOptimizationInfo(SEIEncoderOptimizationInfo& sei, uint32_t payloadSize, std::ostream* pDecodedMessageOutputStream)
{
uint32_t val;
......@@ -2055,20 +2075,25 @@ void SEIReader::xParseSEIEncoderOptimizationInfo(SEIEncoderOptimizationInfo& sei
sei.m_forHumanViewingIdc = val;
sei_read_code(pDecodedMessageOutputStream, 2, val, "eoi_for_machine_analysis_idc");
sei.m_forMachineAnalysisIdc = val;
#if JVET_AJ0063_ENCODER_OPTIMIZATION_INFORMATION
sei_read_code(pDecodedMessageOutputStream, 2, val, "eoi_reserved_zero_2bits");
CHECK(val != 0, "non-zero value parsed for eoi_reserved_zero_2bits");
#endif
sei_read_code(pDecodedMessageOutputStream, 16, val, "eoi_type");
sei.m_type = val;
if ((sei.m_type & EOI_OptimizationType::OBJECT_BASED_OPTIMIZATION) != 0)
{
#if JVET_AJ0063_ENCODER_OPTIMIZATION_INFORMATION
sei_read_code(pDecodedMessageOutputStream, 16, val, "eoi_object_based_idc");
sei.m_objectBasedIdc = val;
#else
sei_read_uvlc(pDecodedMessageOutputStream, val, "eoi_object_based_idc");
sei.m_objectBasedIdc = val;
#if JVET_AK0075_EOI_SEI_OBJ_QP_THRESHOLD
if (sei.m_objectBasedIdc & EOI_OBJECT_BASED::COARSER_QUANTIZATION)
{
sei_read_uvlc(pDecodedMessageOutputStream, val, "eoi_quant_threshold_delta");
sei.m_quantThresholdDelta = val;
if (sei.m_quantThresholdDelta > 0)
{
sei_read_flag(pDecodedMessageOutputStream, val, "eoi_pic_quant_object_flag");
sei.m_picQuantObjectFlag = val;
}
}
#endif
}
if ((sei.m_type & EOI_OptimizationType::TEMPORAL_RESAMPLING) != 0)
......@@ -2099,21 +2124,14 @@ void SEIReader::xParseSEIEncoderOptimizationInfo(SEIEncoderOptimizationInfo& sei
if ((sei.m_type & EOI_OptimizationType::PRIVACY_PROTECTION_OPTIMIZATION) != 0)
{
#if JVET_AJ0063_ENCODER_OPTIMIZATION_INFORMATION
sei_read_code(pDecodedMessageOutputStream, 16, val, "eoi_privacy_protection_type_idc");
sei.m_privacyProtectionTypeIdc = val;
#else
sei_read_code(pDecodedMessageOutputStream, 4, val, "eoi_privacy_protection_type_idc");
sei.m_privacyProtectionTypeIdc = val;
#endif
sei_read_code(pDecodedMessageOutputStream, 8, val, "eoi_privacy_protected_info_type");
sei.m_privacyProtectedInfoType = val;
}
}
}
#endif
#if JVET_AG0322_MODALITY_INFORMATION
void SEIReader::xParseSEIModalityInfo(SEIModalityInfo& sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream)
{
uint32_t code;
......@@ -2140,7 +2158,6 @@ void SEIReader::xParseSEIModalityInfo(SEIModalityInfo& sei, uint32_t payloadSize
}
}
}
#endif
void SEIReader::xParseSEIFrameFieldinfo(SEIFrameFieldInfo& sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream)
{
......@@ -3143,16 +3160,27 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
sei.m_numInpPicsInOutputTensor++;
}
}
#if JVET_AK0072_NNPF_TEMP_EXTR_UPDATES
if ((sei.m_purpose & NNPC_PurposeType::FRAME_RATE_UPSAMPLING) == 0 && (sei.m_purpose & NNPC_PurposeType::TEMPORAL_EXTRAPOLATION) == 0)
{
CHECK(!atLeastOne, "When picRateUpsamplingFlag is equal to 0 and nnpfc_num_input_pics_minus1 is greater than 0, at least one value of nnpfc_input_pic_filtering_flag[i] shall be greater than 0");
}
#else
if ((sei.m_purpose & NNPC_PurposeType::FRAME_RATE_UPSAMPLING) == 0)
{
CHECK(!atLeastOne, "When picRateUpsamplingFlag is equal to 0 and nnpfc_num_input_pics_minus1 is greater than 0, at least one value of nnpfc_input_pic_filtering_flag[i] shall be greater than 0");
}
#endif
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_absent_input_pic_zero_flag");
sei.m_absentInputPicZeroFlag = val;
}
else
{
#if JVET_AK0072_NNPF_TEMP_EXTR_UPDATES
sei.m_inputPicOutputFlag.push_back((sei.m_purpose & 0xff) != NNPC_PurposeType::TEMPORAL_EXTRAPOLATION ? true : false);
#else
sei.m_inputPicOutputFlag.push_back(true);
#endif
sei.m_numInpPicsInOutputTensor = 1;
}
......@@ -3243,7 +3271,6 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
sei.m_numberExtrapolatedPicturesMinus1 = val;
}
#if NNPFC_SPATIAL_EXTRAPOLATION
if((sei.m_purpose & NNPC_PurposeType::SPATIAL_EXTRAPOLATION) != 0)
{
int32_t value;
......@@ -3255,21 +3282,7 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
sei.m_spatialExtrapolationTopOffset = value;
sei_read_svlc(pDecodedMessageOutputStream, value, "nnpfc_spatial_extrapolation_bottom_offset");
sei.m_spatialExtrapolationBottomOffset = value;
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_spatial_extrapolation_prompt_present_flag");
sei.m_spatialExtrapolationPromptPresentFlag = val;
if (sei.m_spatialExtrapolationPromptPresentFlag)
{
std::string valp;
while (!isByteAligned())
{
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_alignment_zero_bit_c");
CHECK(val != 0, "nnpfc_alignment_zero_bit_c not equal to zero");
}
sei_read_string(pDecodedMessageOutputStream, valp, "nnpfc_prompt");
sei.m_prompt = valp;
}
}
#endif
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_component_last_flag");
sei.m_componentLastFlag = val;
......@@ -3280,7 +3293,23 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
sei_read_uvlc(pDecodedMessageOutputStream,val,"nnpfc_auxiliary_inp_idc");
sei.m_auxInpIdc = val;
CHECK(val > 1, "The value of nnpfc_auxiliary_inp_idc shall be in the range of 0 to 1");
CHECK(val > 3, "The value of nnpfc_auxiliary_inp_idc shall be in the range of 0 to 3");
if ((sei.m_auxInpIdc & 2) > 0)
{
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_inband_prompt_flag");
sei.m_inbandPromptFlag = val;
if (sei.m_inbandPromptFlag)
{
std::string valp;
while (!isByteAligned())
{
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_alignment_zero_bit_c");
CHECK(val != 0, "nnpfc_alignment_zero_bit_c not equal to zero");
}
sei_read_string(pDecodedMessageOutputStream, valp, "nnpfc_prompt");
sei.m_prompt = valp;
}
}
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_inp_order_idc");
sei.m_inpOrderIdc = val;
CHECK(val > 3, "The value of nnpfc_inp_order_idc shall be in the range of 0 to 3");
......@@ -3358,13 +3387,11 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
}
}
#if JVET_AD0067_INCLUDE_SYNTAX
if (sei.m_sepColDescriptionFlag & (sei.m_outFormatIdc == 1))
{
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_full_range_flag");
sei.m_fullRangeFlag = val;
}
#endif
if (sei.m_outOrderIdc != 0)
{
......@@ -3393,23 +3420,28 @@ void SEIReader::xParseSEINNPostFilterCharacteristics(SEINeuralNetworkPostFilterC
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfc_constant_patch_size_flag");
sei.m_constantPatchSizeFlag = val;
}
else
{
sei.m_overlap = 0;
sei.m_constantPatchSizeFlag = 1;
}
if (sei.m_constantPatchSizeFlag)
{
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_patch_width_minus1");
sei.m_patchWidthMinus1 = val;
if (sei.m_constantPatchSizeFlag)
{
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_patch_width_minus1");
sei.m_patchWidthMinus1 = val;
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_patch_height_minus1");
sei.m_patchHeightMinus1 = val;
}
else
{
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_extended_patch_width_cd_delta_minus1");
sei.m_extendedPatchWidthCdDeltaMinus1 = val;
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_patch_height_minus1");
sei.m_patchHeightMinus1 = val;
}
else
{
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_extended_patch_width_cd_delta_minus1");
sei.m_extendedPatchWidthCdDeltaMinus1 = val;
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_extended_patch_height_cd_delta_minus1");
sei.m_extendedPatchHeightCdDeltaMinus1 = val;
}
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_extended_patch_height_cd_delta_minus1");
sei.m_extendedPatchHeightCdDeltaMinus1 = val;
}
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfc_padding_type");
......@@ -3559,6 +3591,32 @@ void SEIReader::xParseSEINNPostFilterActivation(SEINeuralNetworkPostFilterActiva
sei_read_flag( pDecodedMessageOutputStream, val, "nnpfa_output_flag" );
sei.m_outputFlag[i] = val;
}
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE||JVET_AJ0114_NNPFA_NUM_PIC_SHIFT
if (m_pcBitstream->getNumBitsLeft())
{
#endif
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfa_prompt_update_flag");
sei.m_promptUpdateFlag = val;
if (sei.m_promptUpdateFlag)
{
std::string val2;
while (!isByteAligned())
{
sei_read_flag(pDecodedMessageOutputStream, val, "nnpfa_alignment_zero_bit");
CHECK(val != 0, "nnpfa_alignment_zero_bit not equal to zero");
}
sei_read_string(pDecodedMessageOutputStream, val2, "nnpfa_prompt");
sei.m_prompt = val2;
}
#endif
#if JVET_AJ0114_NNPFA_NUM_PIC_SHIFT
sei_read_uvlc(pDecodedMessageOutputStream, val, "nnpfa_num_input_pic_shift");
sei.m_numInputPicShift = val;
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE||JVET_AJ0114_NNPFA_NUM_PIC_SHIFT
}
#endif
#endif
}
}
......@@ -3641,6 +3699,10 @@ void SEIReader::xParseSEISourcePictureTimingInfo(SEISourcePictureTimingInfo& sei
sei.m_sptiTimeScale = val;
sei_read_code(pDecodedMessageOutputStream, 32, val, "spti_num_units_in_elemental_interval");
sei.m_sptiNumUnitsInElementalInterval = val;
#if JVET_AJ0308_SPTI_SEI_DIRECTION_FLAG
sei_read_flag(pDecodedMessageOutputStream, val, "spti_direction_flag");
sei.m_sptiDirectionFlag = val;
#endif
if (sei.m_sptiPersistenceFlag)
{
......@@ -3659,35 +3721,23 @@ void SEIReader::xParseSEISourcePictureTimingInfo(SEISourcePictureTimingInfo& sei
}
}
#if JVET_AH2006_TXTDESCRINFO_SEI
void SEIReader::xParseSEITextDescription(SEITextDescription &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream)
{
uint32_t val;
#if JVET_AI0059_TXTDESCRINFO_SEI_PERSISTANCE
sei_read_code(pDecodedMessageOutputStream, 8, val, "txt_descr_purpose");
sei.m_textDescriptionPurpose = val;
#else
sei_read_code(pDecodedMessageOutputStream, 14, val, "txt_descr_id");
sei.m_textDescriptionID = val;
#endif
sei_read_flag(pDecodedMessageOutputStream, val, "txt_cancel_flag");
sei.m_textCancelFlag = val;
if (!sei.m_textCancelFlag)
{
#if JVET_AI0059_TXTDESCRINFO_SEI_PERSISTANCE
sei_read_code(pDecodedMessageOutputStream, 13, val, "txt_descr_id");
sei.m_textDescriptionID = val;
sei_read_flag(pDecodedMessageOutputStream, val, "txt_id_cancel_flag");
sei.m_textIDCancelFlag = val;
if (!sei.m_textIDCancelFlag)
{
#endif
sei_read_flag(pDecodedMessageOutputStream, val, "txt_persistence_flag");
sei.m_textPersistenceFlag = val;
#if !JVET_AI0059_TXTDESCRINFO_SEI_PERSISTANCE
sei_read_code(pDecodedMessageOutputStream, 8, val, "txt_descr_purpose");
sei.m_textDescriptionPurpose = val;
#endif
sei_read_code(pDecodedMessageOutputStream, 8, val, "txt_num_strings_minus1");
sei.m_textNumStringsMinus1 = val;
sei.m_textDescriptionStringLang.resize(sei.m_textNumStringsMinus1+1);
......@@ -3697,13 +3747,10 @@ void SEIReader::xParseSEISourcePictureTimingInfo(SEISourcePictureTimingInfo& sei
sei_read_string(pDecodedMessageOutputStream, sei.m_textDescriptionStringLang[i], "txt_descr_string_lang[i]");
sei_read_string(pDecodedMessageOutputStream, sei.m_textDescriptionString[i], "txt_descr_string[i]");
}
#if JVET_AI0059_TXTDESCRINFO_SEI_PERSISTANCE
}
#endif
}
}
#endif
#if JVET_S0257_DUMP_360SEI_MESSAGE
void SeiCfgFileDump::write360SeiDump (std::string decoded360MessageFileName, SEIMessages& seis, const SPS* sps)
......@@ -3904,7 +3951,6 @@ void SEIReader::xParseSEISEIPrefixIndication(SEIPrefixIndication &sei, uint32_t
}
}
#if JVET_AJ0207_GFV
void SEIReader::xParseSEIGenerativeFaceVideo(SEIGenerativeFaceVideo & sei, uint32_t payloadSize, std::ostream* pDecodedMessageOutputStream)
{
output_sei_message_header(sei, pDecodedMessageOutputStream, payloadSize);
......@@ -4612,9 +4658,7 @@ void SEIReader::xParseSEIGenerativeFaceVideo(SEIGenerativeFaceVideo & sei, uint3
}
}
}
#endif
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
void SEIReader::xParseSEIDigitallySignedContentInitialization(SEIDigitallySignedContentInitialization &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream)
{
unsigned int val;
......@@ -4669,5 +4713,4 @@ void SEIReader::xParseSEIDigitallySignedContentVerification(SEIDigitallySignedCo
sei.dscvSignature[i] = val;
}
}
#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
......@@ -47,9 +47,7 @@
#include "CommonLib/SEI.h"
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
#include "CommonLib/SEIDigitallySignedContent.h"
#endif
class InputBitstream;
......@@ -96,12 +94,8 @@ protected:
void xParseSEIAnnotatedRegions (SEIAnnotatedRegions& sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
void xParseSEIObjectMaskInfos (SEIObjectMaskInfos& sei, uint32_t payloadSize, std::ostream* pDecodedMessageOutputStream);
void xParseSEIAlternativeTransferCharacteristics(SEIAlternativeTransferCharacteristics& sei, uint32_t payLoadSize, std::ostream *pDecodedMessageOutputStream);
#if JVET_AH2006_EOI_SEI
void xParseSEIEncoderOptimizationInfo(SEIEncoderOptimizationInfo& sei, uint32_t payloadSize, std::ostream* pDecodedMessageOutputStream);
#endif
#if JVET_AG0322_MODALITY_INFORMATION
void xParseSEIModalityInfo (SEIModalityInfo& sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
#endif
void xParseSEIEquirectangularProjection (SEIEquirectangularProjection &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
void xParseSEISphereRotation (SEISphereRotation &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
void xParseSEIOmniViewport (SEIOmniViewport& sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
......@@ -135,14 +129,10 @@ protected:
void xParseSEIPostFilterHint(SEIPostFilterHint &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
void xParseSEISourcePictureTimingInfo(SEISourcePictureTimingInfo& sei, uint32_t payloadSize,
std::ostream* pDecodedMessageOutputStream);
#if JVET_AH2006_TXTDESCRINFO_SEI
void xParseSEITextDescription(SEITextDescription &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
#endif
#if JVET_AJ0151_DSC_SEI_DECODER_SYNTAX
void xParseSEIDigitallySignedContentInitialization(SEIDigitallySignedContentInitialization &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
void xParseSEIDigitallySignedContentSelection (SEIDigitallySignedContentSelection &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
void xParseSEIDigitallySignedContentVerification (SEIDigitallySignedContentVerification &sei, uint32_t payloadSize, std::ostream *pDecodedMessageOutputStream);
#endif
void sei_read_scode(std::ostream *pOS, uint32_t length, int& code, const char *pSymbolName);
void sei_read_code(std::ostream *pOS, uint32_t length, uint32_t &ruiCode, const char *pSymbolName);
......@@ -153,7 +143,6 @@ protected:
protected:
HRD m_nestedHrd;
#if JVET_AJ0207_GFV
void xParseSEIGenerativeFaceVideo(SEIGenerativeFaceVideo& sei, uint32_t payloadSize,std::ostream* pDecodedMessageOutputStream);
uint32_t baseCoordinateQuantizationFactor;
uint32_t basdCoordinatePointNum;
......@@ -172,7 +161,6 @@ protected:
std::vector<uint32_t> baseMatrixWidth;
std::vector<uint32_t> baseMatrixHeight;
std::vector<std::vector<std::vector<std::vector<double>>>> prevMatrix;
#endif
};
#if JVET_S0257_DUMP_360SEI_MESSAGE
......
......@@ -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
......
......@@ -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
......@@ -708,6 +708,9 @@ protected:
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_nnPostFilterSEICharacteristicsEnabled;
bool m_nnPostFilterSEICharacteristicsUseSuffixSEI;
......@@ -733,9 +736,7 @@ protected:
uint32_t m_nnPostFilterSEICharacteristicsInpFormatIdc[MAX_NUM_NN_POST_FILTERS];
uint32_t m_nnPostFilterSEICharacteristicsAuxInpIdc[MAX_NUM_NN_POST_FILTERS];
bool m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[MAX_NUM_NN_POST_FILTERS];
#if JVET_AD0067_INCLUDE_SYNTAX
bool m_nnPostFilterSEICharacteristicsFullRangeFlag[MAX_NUM_NN_POST_FILTERS];
#endif
uint32_t m_nnPostFilterSEICharacteristicsColPrimaries[MAX_NUM_NN_POST_FILTERS];
uint32_t m_nnPostFilterSEICharacteristicsTransCharacteristics[MAX_NUM_NN_POST_FILTERS];
uint32_t m_nnPostFilterSEICharacteristicsMatrixCoeffs[MAX_NUM_NN_POST_FILTERS];
......@@ -768,14 +769,12 @@ protected:
uint32_t m_nnPostFilterSEICharacteristicsNumberInputDecodedPicturesMinus1[MAX_NUM_NN_POST_FILTERS];
std::vector<uint32_t> m_nnPostFilterSEICharacteristicsNumberInterpolatedPictures[MAX_NUM_NN_POST_FILTERS];
uint32_t m_nnPostFilterSEICharacteristicsNumberExtrapolatedPicturesMinus1[MAX_NUM_NN_POST_FILTERS];
#if NNPFC_SPATIAL_EXTRAPOLATION
int32_t m_nnPostFilterSEICharacteristicsSpatialExtrapolationLeftOffset[MAX_NUM_NN_POST_FILTERS];
int32_t m_nnPostFilterSEICharacteristicsSpatialExtrapolationRightOffset[MAX_NUM_NN_POST_FILTERS];
int32_t m_nnPostFilterSEICharacteristicsSpatialExtrapolationTopOffset[MAX_NUM_NN_POST_FILTERS];
int32_t m_nnPostFilterSEICharacteristicsSpatialExtrapolationBottomOffset[MAX_NUM_NN_POST_FILTERS];
bool m_nnPostFilterSEICharacteristicsSpatialExtrapolationPromptPresentFlag[MAX_NUM_NN_POST_FILTERS];
std::string m_nnPostFilterSEICharacteristicsSpatialExtrapolationPrompt[MAX_NUM_NN_POST_FILTERS];
#endif
bool m_nnPostFilterSEICharacteristicsInbandPromptFlag[MAX_NUM_NN_POST_FILTERS];
std::string m_nnPostFilterSEICharacteristicsPrompt[MAX_NUM_NN_POST_FILTERS];
std::vector<bool> m_nnPostFilterSEICharacteristicsInputPicOutputFlag[MAX_NUM_NN_POST_FILTERS];
bool m_nnPostFilterSEICharacteristicsAbsentInputPicZeroFlag[MAX_NUM_NN_POST_FILTERS];
......@@ -788,8 +787,14 @@ protected:
bool m_nnPostFilterSEIActivationNoFollCLVSFlag;
bool m_nnPostFilterSEIActivationPersistenceFlag;
std::vector<bool> m_nnPostFilterSEIActivationOutputflag;
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE
bool m_nnPostFilterSEIActivationPromptUpdateFlag;
std::string m_nnPostFilterSEIActivationPrompt;
#endif
#if JVET_AJ0114_NNPFA_NUM_PIC_SHIFT
uint32_t m_nnPostFilterSEIActivationNumInputPicShift;
#endif
#if JVET_AH2006_EOI_SEI
// Encoder Optimization Information SEI
bool m_eoiSEIEnabled;
bool m_eoiSEICancelFlag;
......@@ -798,6 +803,10 @@ protected:
uint32_t m_eoiSEIForMachineAnalysisIdc;
uint32_t m_eoiSEIType;
uint32_t m_eoiSEIObjectBasedIdc;
#if JVET_AK0075_EOI_SEI_OBJ_QP_THRESHOLD
uint32_t m_eoiSEIQuantThresholdDelta;
bool m_eoiSEIPicQuantObjectFlag;
#endif
bool m_eoiSEITemporalResamplingTypeFlag;
uint32_t m_eoiSEINumIntPics;
bool m_eoiSEIOrigPicDimensionsFlag;
......@@ -806,9 +815,7 @@ protected:
bool m_eoiSEISpatialResamplingTypeFlag;
uint32_t m_eoiSEIPrivacyProtectionTypeIdc;
uint32_t m_eoiSEIPrivacyProtectedInfoType;
#endif
#if JVET_AG0322_MODALITY_INFORMATION
// Modality Information SEI
bool m_miSEIEnabled;
bool m_miCancelFlag;
......@@ -819,7 +826,6 @@ protected:
int m_miMinWavelengthExponentPlus15;
int m_miMaxWavelengthMantissa;
int m_miMaxWavelengthExponentPlus15;
#endif
// film grain characterstics sei
bool m_fgcSEIEnabled;
......@@ -956,6 +962,7 @@ protected:
bool m_poSEIBreadthFirstFlag;
std::vector<bool> m_poSEIWrappingFlag;
std::vector<bool> m_poSEIImportanceFlag;
std::vector<bool> m_poSEIProcessingDegreeFlag;
std::vector<bool> m_poSEIPrefixFlag;
std::vector<uint16_t> m_poSEIPayloadType;
std::vector<uint16_t> m_poSEIProcessingOrder;
......@@ -969,18 +976,14 @@ protected:
uint32_t m_postFilterHintSEIType;
bool m_postFilterHintSEIChromaCoeffPresentFlag;
std::vector<int32_t> m_postFilterHintValues;
#if JVET_AH2006_TXTDESCRINFO_SEI
uint16_t m_textDescriptionSEIId;
bool m_textSEICancelFlag;
#if JVET_AI0059_TXTDESCRINFO_SEI_PERSISTANCE
bool m_textSEIIDCancelFlag;
#endif
bool m_textSEIPersistenceFlag;
uint8_t m_textSEIDescriptionPurpose;
uint8_t m_textSEINumStringsMinus1;
std::vector<std::string> m_textSEIDescriptionStringLang;
std::vector<std::string> m_textSEIDescriptionString;
#endif
bool m_constrainedRaslEncoding;
......@@ -1143,7 +1146,6 @@ protected:
bool m_explicitILRP;
bool m_encILOpt;
double m_encILOptLambdaModifier;
#if JVET_AJ0207_GFV
bool m_generativeFaceVideoEnabled;
uint32_t m_generativeFaceVideoSEINumber;
bool m_generativeFaceVideoSEIBasePicFlag;
......@@ -1182,7 +1184,6 @@ protected:
std::vector<std::vector<uint32_t>> m_generativeFaceVideoSEIMatrixHeight;
std::vector<std::vector<std::vector<std::vector<std::vector<double>>>>> m_generativeFaceVideoSEIMatrixElement;
std::string m_generativeFaceVideoSEIPayloadFilename;
#endif
public:
EncCfg()
......@@ -2069,6 +2070,10 @@ public:
uint32_t getmSptiSEITimeScale() { return m_sptiTimeScale; }
void setmSptiSEINumUnitsInElementalInterval(uint32_t b) { m_sptiNumUnitsInElementalInterval = b; }
uint32_t getmSptiSEINumUnitsInElementalInterval() { return m_sptiNumUnitsInElementalInterval; }
#if JVET_AJ0308_SPTI_SEI_DIRECTION_FLAG
void setmSptiSEIDirectionFlag(bool b) { m_sptiDirectionFlag = b; }
uint32_t getmSptiSEIDirectionFlag() { return m_sptiDirectionFlag; }
#endif
void setNNPostFilterSEICharacteristicsEnabled(bool enabledFlag) { m_nnPostFilterSEICharacteristicsEnabled = enabledFlag; }
bool getNNPostFilterSEICharacteristicsEnabled() const { return m_nnPostFilterSEICharacteristicsEnabled; }
......@@ -2124,7 +2129,6 @@ public:
{
return m_nnPostFilterSEICharacteristicsSepColDescriptionFlag[filterIdx];
}
#if JVET_AD0067_INCLUDE_SYNTAX
void setNNPostFilterSEICharacteristicsFullRangeFlag(bool fullRangeFlag, int filterIdx)
{
m_nnPostFilterSEICharacteristicsFullRangeFlag[filterIdx] = fullRangeFlag;
......@@ -2133,7 +2137,6 @@ public:
{
return m_nnPostFilterSEICharacteristicsFullRangeFlag[filterIdx];
}
#endif
void setNNPostFilterSEICharacteristicsColPrimaries(uint32_t colPrimaries, int filterIdx) { m_nnPostFilterSEICharacteristicsColPrimaries[filterIdx] = colPrimaries; }
uint32_t getNNPostFilterSEICharacteristicsColPrimaries(int filterIdx) const { return m_nnPostFilterSEICharacteristicsColPrimaries[filterIdx]; }
void setNNPostFilterSEICharacteristicsTransCharacteristics(uint32_t transCharacteristics, int filterIdx) { m_nnPostFilterSEICharacteristicsTransCharacteristics[filterIdx] = transCharacteristics; }
......@@ -2209,7 +2212,6 @@ public:
const std::vector<uint32_t>& getNNPostFilterSEICharacteristicsNumberInterpolatedPictures(int filterIdx) { return m_nnPostFilterSEICharacteristicsNumberInterpolatedPictures[filterIdx]; }
void setNNPostFilterSEICharacteristicsNumberExtrapolatedPicturesMinus1(uint32_t value, int filterIdx) { m_nnPostFilterSEICharacteristicsNumberExtrapolatedPicturesMinus1[filterIdx] = value; }
uint32_t getNNPostFilterSEICharacteristicsNumberExtrapolatedPicturesMinus1(int filterIdx) { return m_nnPostFilterSEICharacteristicsNumberExtrapolatedPicturesMinus1[filterIdx]; }
#if NNPFC_SPATIAL_EXTRAPOLATION
void setNNPostFilterSEICharacteristicsSpatialExtrapolationLeftOffset(int32_t value, int filterIdx) { m_nnPostFilterSEICharacteristicsSpatialExtrapolationLeftOffset[filterIdx] = value; }
int32_t getNNPostFilterSEICharacteristicsSpatialExtrapolationLeftOffset(int filterIdx) { return m_nnPostFilterSEICharacteristicsSpatialExtrapolationLeftOffset[filterIdx]; }
void setNNPostFilterSEICharacteristicsSpatialExtrapolationRightOffset(int32_t value, int filterIdx) { m_nnPostFilterSEICharacteristicsSpatialExtrapolationRightOffset[filterIdx] = value; }
......@@ -2218,11 +2220,10 @@ public:
int32_t getNNPostFilterSEICharacteristicsSpatialExtrapolationTopOffset(int filterIdx) { return m_nnPostFilterSEICharacteristicsSpatialExtrapolationTopOffset[filterIdx]; }
void setNNPostFilterSEICharacteristicsSpatialExtrapolationBottomOffset(int32_t value, int filterIdx) { m_nnPostFilterSEICharacteristicsSpatialExtrapolationBottomOffset[filterIdx] = value; }
int32_t getNNPostFilterSEICharacteristicsSpatialExtrapolationBottomOffset(int filterIdx) { return m_nnPostFilterSEICharacteristicsSpatialExtrapolationBottomOffset[filterIdx]; }
void setNNPostFilterSEICharacteristicsSpatialExtrapolationPromptPresentFlag(bool promptPresentFlag, int filterIdx) { m_nnPostFilterSEICharacteristicsSpatialExtrapolationPromptPresentFlag[filterIdx] = promptPresentFlag; }
bool getNNPostFilterSEICharacteristicsSpatialExtrapolationPromptPresentFlag(int filterIdx) const { return m_nnPostFilterSEICharacteristicsSpatialExtrapolationPromptPresentFlag[filterIdx]; }
void setNNPostFilterSEICharacteristicsSpatialExrapolationPrompt(std::string prompt, int filterIdx) { m_nnPostFilterSEICharacteristicsSpatialExtrapolationPrompt[filterIdx] = prompt; }
std::string getNNPostFilterSEICharacteristicsSpatialExrapolationPrompt(int filterIdx) const { return m_nnPostFilterSEICharacteristicsSpatialExtrapolationPrompt[filterIdx]; }
#endif
void setNNPostFilterSEICharacteristicsInbandPromptFlag(bool promptPresentFlag, int filterIdx) { m_nnPostFilterSEICharacteristicsInbandPromptFlag[filterIdx] = promptPresentFlag; }
bool getNNPostFilterSEICharacteristicsInbandPromptFlag(int filterIdx) const { return m_nnPostFilterSEICharacteristicsInbandPromptFlag[filterIdx]; }
void setNNPostFilterSEICharacteristicsPrompt(std::string prompt, int filterIdx) { m_nnPostFilterSEICharacteristicsPrompt[filterIdx] = prompt; }
std::string getNNPostFilterSEICharacteristicsPrompt(int filterIdx) const { return m_nnPostFilterSEICharacteristicsPrompt[filterIdx]; }
void setNNPostFilterSEICharacteristicsInputPicOutputFlag(std::vector<bool> value, int filterIdx) { m_nnPostFilterSEICharacteristicsInputPicOutputFlag[filterIdx] = value; }
const std::vector<bool>& getNNPostFilterSEICharacteristicsInputPicOutputFlag(int filterIdx) { return m_nnPostFilterSEICharacteristicsInputPicOutputFlag[filterIdx]; }
void setNNPostFilterSEICharacteristicsAbsentInputPicZeroFlag(bool absentInputPicZeroFlag, int filterIdx) { m_nnPostFilterSEICharacteristicsAbsentInputPicZeroFlag[filterIdx] = absentInputPicZeroFlag; }
......@@ -2246,6 +2247,16 @@ public:
uint32_t getNnPostFilterSEIActivationNumOutputEntries() const { return (uint32_t)m_nnPostFilterSEIActivationOutputflag.size(); }
void setNnPostFilterSEIActivationOutputFlag(std::vector<bool> value) { m_nnPostFilterSEIActivationOutputflag = value; }
const std::vector<bool>& getNnPostFilterSEIActivationOutputFlag() const { return m_nnPostFilterSEIActivationOutputflag; }
#if JVET_AJ0104_NNPFA_PROMPT_UPDATE
void setNnPostFilterSEIActivationPromptUpdateFlag(bool promptUpdateFlag) { m_nnPostFilterSEIActivationPromptUpdateFlag = promptUpdateFlag; }
bool getNnPostFilterSEIActivationPromptUpdateFlag() const { return m_nnPostFilterSEIActivationPromptUpdateFlag; }
void setNnPostFilterSEIActivationPrompt(std::string prompt) { m_nnPostFilterSEIActivationPrompt = prompt; }
std::string getNnPostFilterSEIActivationPrompt() const { return m_nnPostFilterSEIActivationPrompt; }
#endif
#if JVET_AJ0114_NNPFA_NUM_PIC_SHIFT
void setNnPostFilterSEIActivationNumInputPicShift(uint32_t numInputPicShift) { m_nnPostFilterSEIActivationNumInputPicShift = numInputPicShift; }
uint32_t getNnPostFilterSEIActivationNumInputPicShift() const { return m_nnPostFilterSEIActivationNumInputPicShift; }
#endif
void setBufferingPeriodSEIEnabled(bool b) { m_bufferingPeriodSEIEnabled = b; }
bool getBufferingPeriodSEIEnabled() const { return m_bufferingPeriodSEIEnabled; }
......@@ -2500,7 +2511,6 @@ public:
void setSEIPreferredTransferCharacteristics(uint8_t v) { m_preferredTransferCharacteristics = v; }
uint8_t getSEIPreferredTransferCharacteristics() const { return m_preferredTransferCharacteristics; }
const SEIMasteringDisplay &getMasteringDisplaySEI() const { return m_masteringDisplay; }
#if JVET_AH2006_EOI_SEI
void setEOISEIEnabled(bool enabledFlag) { m_eoiSEIEnabled = enabledFlag; }
bool getEOISEIEnabled() const { return m_eoiSEIEnabled; }
void setEOISEICancelFlag(bool cancelFlag) { m_eoiSEICancelFlag = cancelFlag; }
......@@ -2515,6 +2525,12 @@ public:
uint32_t getEOISEIType() const { return m_eoiSEIType; }
void setEOISEIObjectBasedIdc(uint32_t objectBasedIdc) { m_eoiSEIObjectBasedIdc = objectBasedIdc; }
uint32_t getEOISEIObjectBasedIdc() const { return m_eoiSEIObjectBasedIdc; }
#if JVET_AK0075_EOI_SEI_OBJ_QP_THRESHOLD
void setEOISEIQuantThresholdDelta(uint32_t quantThresholdDelta) { m_eoiSEIQuantThresholdDelta = quantThresholdDelta; }
uint32_t getEOISEIQuantThresholdDelta() const { return m_eoiSEIQuantThresholdDelta; }
void setEOISEIPicQuantObjectFlag(bool picQuantObjectFlag) { m_eoiSEIPicQuantObjectFlag = picQuantObjectFlag; }
bool getEOISEIPicQuantObjectFlag() const { return m_eoiSEIPicQuantObjectFlag; }
#endif
void setEOISEITemporalResamplingTypeFlag(bool temporalResamplingTypeFlag) { m_eoiSEITemporalResamplingTypeFlag = temporalResamplingTypeFlag; }
bool getEOISEITemporalResamplingTypeFlag() const { return m_eoiSEITemporalResamplingTypeFlag; }
void setEOISEINumIntPics(uint32_t numIntPics) { m_eoiSEINumIntPics = numIntPics; }
......@@ -2531,9 +2547,7 @@ public:
uint32_t getEOISEIPrivacyProtectionTypeIdc() const { return m_eoiSEIPrivacyProtectionTypeIdc; }
void setEOISEIPrivacyProtectedInfoType(uint32_t privacyProtectedInfoType) { m_eoiSEIPrivacyProtectedInfoType = privacyProtectedInfoType; }
uint32_t getEOISEIPrivacyProtectedInfoType() const { return m_eoiSEIPrivacyProtectedInfoType; }
#endif
#if JVET_AG0322_MODALITY_INFORMATION
//Modality Information SEI
void setMiSEIEnabled(bool b) { m_miSEIEnabled = b; }
bool getMiSEIEnabled() { return m_miSEIEnabled; }
......@@ -2553,7 +2567,6 @@ public:
int getMiMaxWavelengthMantissa() const { return m_miMaxWavelengthMantissa; }
void setMiMaxWavelengthExponentPlus15(const int val) { m_miMaxWavelengthExponentPlus15 = val; }
int getMiMaxWavelengthExponentPlus15() const { return m_miMaxWavelengthExponentPlus15; }
#endif
// film grain SEI
void setFilmGrainCharactersticsSEIEnabled (bool b) { m_fgcSEIEnabled = b; }
......@@ -2820,6 +2833,8 @@ public:
bool getPoSEIWrappingFlag(uint16_t idx) const { return m_poSEIWrappingFlag[idx]; }
void setPoSEIImportanceFlag(const std::vector<bool>& b) { m_poSEIImportanceFlag = b; }
bool getPoSEIImportanceFlag(uint16_t idx) const { return m_poSEIImportanceFlag[idx]; }
void setPoSEIProcessingDegreeFlag(const std::vector<bool>& b) { m_poSEIProcessingDegreeFlag = b; }
bool getPoSEIProcessingDegreeFlag(uint16_t idx) const { return m_poSEIProcessingDegreeFlag[idx]; }
void setPoSEIPrefixFlag(const std::vector<bool>& b) { m_poSEIPrefixFlag = b; }
bool getPoSEIPrefixFlag(uint16_t idx) const { return m_poSEIPrefixFlag[idx]; }
void setPoSEIPayloadType(const std::vector<uint16_t>& b) { m_poSEIPayloadType = b; }
......@@ -2847,15 +2862,12 @@ public:
bool getPostFilterHintSEIChromaCoeffPresentFlag() { return m_postFilterHintSEIChromaCoeffPresentFlag; }
void setPostFilterHintSEIValues(const std::vector<int32_t> &b) { m_postFilterHintValues = b; }
int32_t getPostFilterHintSEIValues(int32_t idx) const { return m_postFilterHintValues[idx]; }
#if JVET_AH2006_TXTDESCRINFO_SEI
void setTextDescriptionSEIId(const uint16_t i) {m_textDescriptionSEIId = i;}
uint32_t getTextDescriptionSEIId() {return m_textDescriptionSEIId;}
void setTextSEICancelFlag(bool b) {m_textSEICancelFlag = b;}
bool getTextSEICancelFlag() {return m_textSEICancelFlag;}
#if JVET_AI0059_TXTDESCRINFO_SEI_PERSISTANCE
void setTextSEIIDCancelFlag(bool b) { m_textSEIIDCancelFlag = b; }
bool getTextSEIIDCancelFlag() { return m_textSEIIDCancelFlag; }
#endif
void setTextSEIPersistenceFlag(bool b) {m_textSEIPersistenceFlag = b;}
bool getTextSEIPersistenceFlag() {return m_textSEIPersistenceFlag;}
void setTextSEIPurpose(uint8_t i) {m_textSEIDescriptionPurpose = i;}
......@@ -2866,7 +2878,6 @@ public:
std::string getTextSEIDescriptionStringLang(int idx) const {return m_textSEIDescriptionStringLang[idx];}
void setTextSEIDescriptionString(const std::vector<std::string> b) {m_textSEIDescriptionString = b;}
std::string getTextSEIDescriptionString(int idx) const {return m_textSEIDescriptionString[idx];}
#endif
void setUseWP ( bool b ) { m_useWeightedPred = b; }
void setWPBiPred ( bool b ) { m_useWeightedBiPred = b; }
......@@ -3190,7 +3201,6 @@ public:
bool getEncILOpt() const { return m_encILOpt; }
void setEncILOptLambdaModifier(double dValue) { m_encILOptLambdaModifier = dValue; }
double getEncILOptLambdaModifier() const { return m_encILOptLambdaModifier; }
#if JVET_AJ0207_GFV
void setGenerativeFaceVideoSEIEnabled(bool enabledFlag) { m_generativeFaceVideoEnabled = enabledFlag; }
bool getGenerativeFaceVideoSEIEnabled() const { return m_generativeFaceVideoEnabled; }
void setGenerativeFaceVideoSEINumber(uint32_t number) { m_generativeFaceVideoSEINumber = number; }
......@@ -3267,7 +3277,6 @@ public:
uint32_t getGenerativeFaceVideoSEINumMatricesInfo(int idx,int idy) const { return m_generativeFaceVideoSEINumMatricesInfo[idx][idy]; }
void setGenerativeFaceVideoSEIPayloadFilename(const std::string &payloadFilename) { m_generativeFaceVideoSEIPayloadFilename = payloadFilename; }
const std::string getGenerativeFaceVideoSEIPayloadFilename() const { return m_generativeFaceVideoSEIPayloadFilename; }
#endif
const EncCfgParam::CfgVPSParameters &getVPSParameters() const
{
return m_cfgVPSParameters;
......
......@@ -4,7 +4,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
......