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
Commits on Source (16)
...@@ -388,7 +388,7 @@ void IntraPrediction::initPredIntraParams(const PredictionUnit & pu, const CompA ...@@ -388,7 +388,7 @@ void IntraPrediction::initPredIntraParams(const PredictionUnit & pu, const CompA
const int signAng = intraPredAngleMode < 0 ? -1 : 1; const int signAng = intraPredAngleMode < 0 ? -1 : 1;
absAng = angTable [absAngMode]; absAng = angTable [absAngMode];
m_ipaParam.invAngle = invAngTable[absAngMode]; m_ipaParam.absInvAngle = invAngTable[absAngMode];
m_ipaParam.intraPredAngle = signAng * absAng; m_ipaParam.intraPredAngle = signAng * absAng;
if (intraPredAngleMode < 0) if (intraPredAngleMode < 0)
{ {
...@@ -399,7 +399,7 @@ void IntraPrediction::initPredIntraParams(const PredictionUnit & pu, const CompA ...@@ -399,7 +399,7 @@ void IntraPrediction::initPredIntraParams(const PredictionUnit & pu, const CompA
const int sideSize = m_ipaParam.isModeVer ? puSize.height : puSize.width; const int sideSize = m_ipaParam.isModeVer ? puSize.height : puSize.width;
const int maxScale = 2; const int maxScale = 2;
m_ipaParam.angularScale = std::min(maxScale, floorLog2(sideSize) - (floorLog2(3 * m_ipaParam.invAngle - 2) - 8)); m_ipaParam.angularScale = std::min(maxScale, floorLog2(sideSize) - (floorLog2(3 * m_ipaParam.absInvAngle - 2) - 8));
m_ipaParam.applyPDPC &= m_ipaParam.angularScale >= 0; m_ipaParam.applyPDPC &= m_ipaParam.angularScale >= 0;
} }
} }
...@@ -464,7 +464,7 @@ void IntraPrediction::xPredIntraAng( const CPelBuf &pSrc, PelBuf &pDst, const Ch ...@@ -464,7 +464,7 @@ void IntraPrediction::xPredIntraAng( const CPelBuf &pSrc, PelBuf &pDst, const Ch
const bool bIsModeVer = m_ipaParam.isModeVer; const bool bIsModeVer = m_ipaParam.isModeVer;
const int multiRefIdx = m_ipaParam.multiRefIndex; const int multiRefIdx = m_ipaParam.multiRefIndex;
const int intraPredAngle = m_ipaParam.intraPredAngle; const int intraPredAngle = m_ipaParam.intraPredAngle;
const int invAngle = m_ipaParam.invAngle; const int absInvAngle = m_ipaParam.absInvAngle;
Pel* refMain; Pel* refMain;
Pel* refSide; Pel* refSide;
...@@ -490,7 +490,7 @@ void IntraPrediction::xPredIntraAng( const CPelBuf &pSrc, PelBuf &pDst, const Ch ...@@ -490,7 +490,7 @@ void IntraPrediction::xPredIntraAng( const CPelBuf &pSrc, PelBuf &pDst, const Ch
int sizeSide = bIsModeVer ? height : width; int sizeSide = bIsModeVer ? height : width;
for (int k = -sizeSide; k <= -1; k++) for (int k = -sizeSide; k <= -1; k++)
{ {
refMain[k] = refSide[std::min((-k * invAngle + 256) >> 9, sizeSide)]; refMain[k] = refSide[std::min((-k * absInvAngle + 256) >> 9, sizeSide)];
} }
} }
else else
...@@ -618,7 +618,7 @@ void IntraPrediction::xPredIntraAng( const CPelBuf &pSrc, PelBuf &pDst, const Ch ...@@ -618,7 +618,7 @@ void IntraPrediction::xPredIntraAng( const CPelBuf &pSrc, PelBuf &pDst, const Ch
for (int x = 0; x < std::min(3 << scale, width); x++) for (int x = 0; x < std::min(3 << scale, width); x++)
{ {
invAngleSum += invAngle; invAngleSum += absInvAngle;
int wL = 32 >> (2 * x >> scale); int wL = 32 >> (2 * x >> scale);
Pel left = refSide[y + (invAngleSum >> 9) + 1]; Pel left = refSide[y + (invAngleSum >> 9) + 1];
......
...@@ -83,7 +83,7 @@ private: ...@@ -83,7 +83,7 @@ private:
bool isModeVer; bool isModeVer;
int multiRefIndex; int multiRefIndex;
int intraPredAngle; int intraPredAngle;
int invAngle; int absInvAngle;
bool interpolationFlag; bool interpolationFlag;
int angularScale; int angularScale;
...@@ -94,7 +94,7 @@ private: ...@@ -94,7 +94,7 @@ private:
, isModeVer(false) , isModeVer(false)
, multiRefIndex(-1) , multiRefIndex(-1)
, intraPredAngle(std::numeric_limits<int>::max()) , intraPredAngle(std::numeric_limits<int>::max())
, invAngle(std::numeric_limits<int>::max()) , absInvAngle(std::numeric_limits<int>::max())
, interpolationFlag(false) , interpolationFlag(false)
, angularScale(-1) , angularScale(-1)
// clang-format on // clang-format on
......
...@@ -57,7 +57,9 @@ Slice::Slice() ...@@ -57,7 +57,9 @@ Slice::Slice()
, m_prevIRAPSubpicType ( NAL_UNIT_INVALID ) , m_prevIRAPSubpicType ( NAL_UNIT_INVALID )
, m_rpl0Idx ( -1 ) , m_rpl0Idx ( -1 )
, m_rpl1Idx ( -1 ) , m_rpl1Idx ( -1 )
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
, m_colourPlaneId ( 0 ) , m_colourPlaneId ( 0 )
#endif
, m_eNalUnitType ( NAL_UNIT_CODED_SLICE_IDR_W_RADL ) , m_eNalUnitType ( NAL_UNIT_CODED_SLICE_IDR_W_RADL )
, m_pictureHeaderInSliceHeader ( false ) , m_pictureHeaderInSliceHeader ( false )
, m_eSliceType ( I_SLICE ) , m_eSliceType ( I_SLICE )
...@@ -161,7 +163,9 @@ void Slice::initSlice() ...@@ -161,7 +163,9 @@ void Slice::initSlice()
m_aiNumRefIdx[i] = 0; m_aiNumRefIdx[i] = 0;
} }
m_colFromL0Flag = true; m_colFromL0Flag = true;
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
m_colourPlaneId = 0; m_colourPlaneId = 0;
#endif
m_colRefIdx = 0; m_colRefIdx = 0;
m_lmcsEnabledFlag = 0; m_lmcsEnabledFlag = 0;
m_explicitScalingListUsed = 0; m_explicitScalingListUsed = 0;
...@@ -2691,7 +2695,9 @@ SPS::SPS() ...@@ -2691,7 +2695,9 @@ SPS::SPS()
, m_SBT ( false ) , m_SBT ( false )
, m_ISP ( false ) , m_ISP ( false )
, m_chromaFormatIdc (CHROMA_420) , m_chromaFormatIdc (CHROMA_420)
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
, m_separateColourPlaneFlag ( 0 ) , m_separateColourPlaneFlag ( 0 )
#endif
, m_uiMaxTLayers ( 1) , m_uiMaxTLayers ( 1)
, m_ptlDpbHrdParamsPresentFlag (1) , m_ptlDpbHrdParamsPresentFlag (1)
, m_SubLayerDpbParamsFlag (0) , m_SubLayerDpbParamsFlag (0)
......
...@@ -1287,7 +1287,9 @@ private: ...@@ -1287,7 +1287,9 @@ private:
bool m_SBT; bool m_SBT;
bool m_ISP; bool m_ISP;
ChromaFormat m_chromaFormatIdc; ChromaFormat m_chromaFormatIdc;
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
bool m_separateColourPlaneFlag; //!< separate colour plane flag bool m_separateColourPlaneFlag; //!< separate colour plane flag
#endif
uint32_t m_uiMaxTLayers; // maximum number of temporal layers uint32_t m_uiMaxTLayers; // maximum number of temporal layers
...@@ -1464,8 +1466,10 @@ public: ...@@ -1464,8 +1466,10 @@ public:
int getLayerId() const { return m_layerId; } int getLayerId() const { return m_layerId; }
ChromaFormat getChromaFormatIdc () const { return m_chromaFormatIdc; } ChromaFormat getChromaFormatIdc () const { return m_chromaFormatIdc; }
void setChromaFormatIdc (ChromaFormat i) { m_chromaFormatIdc = i; } void setChromaFormatIdc (ChromaFormat i) { m_chromaFormatIdc = i; }
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
void setSeparateColourPlaneFlag ( bool b ) { m_separateColourPlaneFlag = b; } void setSeparateColourPlaneFlag ( bool b ) { m_separateColourPlaneFlag = b; }
bool getSeparateColourPlaneFlag () const { return m_separateColourPlaneFlag; } bool getSeparateColourPlaneFlag () const { return m_separateColourPlaneFlag; }
#endif
static int getWinUnitX (int chromaFormatIdc) { CHECK(chromaFormatIdc < 0 || chromaFormatIdc >= NUM_CHROMA_FORMAT, "Invalid chroma format parameter"); return m_winUnitX[chromaFormatIdc]; } static int getWinUnitX (int chromaFormatIdc) { CHECK(chromaFormatIdc < 0 || chromaFormatIdc >= NUM_CHROMA_FORMAT, "Invalid chroma format parameter"); return m_winUnitX[chromaFormatIdc]; }
static int getWinUnitY (int chromaFormatIdc) { CHECK(chromaFormatIdc < 0 || chromaFormatIdc >= NUM_CHROMA_FORMAT, "Invalid chroma format parameter"); return m_winUnitY[chromaFormatIdc]; } static int getWinUnitY (int chromaFormatIdc) { CHECK(chromaFormatIdc < 0 || chromaFormatIdc >= NUM_CHROMA_FORMAT, "Invalid chroma format parameter"); return m_winUnitY[chromaFormatIdc]; }
...@@ -2541,7 +2545,9 @@ private: ...@@ -2541,7 +2545,9 @@ private:
ReferencePictureList m_localRPL1; //< RPL for L1 when present in slice header ReferencePictureList m_localRPL1; //< RPL for L1 when present in slice header
int m_rpl0Idx; //< index of used RPL in the SPS or -1 for local RPL in the slice header int m_rpl0Idx; //< index of used RPL in the SPS or -1 for local RPL in the slice header
int m_rpl1Idx; //< index of used RPL in the SPS or -1 for local RPL in the slice header int m_rpl1Idx; //< index of used RPL in the SPS or -1 for local RPL in the slice header
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
int m_colourPlaneId; //!< 4:4:4 colour plane ID int m_colourPlaneId; //!< 4:4:4 colour plane ID
#endif
NalUnitType m_eNalUnitType; ///< Nal unit type for the slice NalUnitType m_eNalUnitType; ///< Nal unit type for the slice
bool m_pictureHeaderInSliceHeader; bool m_pictureHeaderInSliceHeader;
uint32_t m_nuhLayerId; ///< Nal unit layer id uint32_t m_nuhLayerId; ///< Nal unit layer id
...@@ -2790,8 +2796,10 @@ public: ...@@ -2790,8 +2796,10 @@ public:
bool isPocRestrictedByDRAP( int poc, bool precedingDRAPinDecodingOrder ); bool isPocRestrictedByDRAP( int poc, bool precedingDRAPinDecodingOrder );
bool isPOCInRefPicList( const ReferencePictureList *rpl, int poc ); bool isPOCInRefPicList( const ReferencePictureList *rpl, int poc );
void checkConformanceForDRAP( uint32_t temporalId ); void checkConformanceForDRAP( uint32_t temporalId );
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
void setColourPlaneId( int id ) { m_colourPlaneId = id; } void setColourPlaneId( int id ) { m_colourPlaneId = id; }
int getColourPlaneId() const { return m_colourPlaneId; } int getColourPlaneId() const { return m_colourPlaneId; }
#endif
void setLambdas( const double lambdas[MAX_NUM_COMPONENT] ) { for (int component = 0; component < MAX_NUM_COMPONENT; component++) m_lambdas[component] = lambdas[component]; } void setLambdas( const double lambdas[MAX_NUM_COMPONENT] ) { for (int component = 0; component < MAX_NUM_COMPONENT; component++) m_lambdas[component] = lambdas[component]; }
const double* getLambdas() const { return m_lambdas; } const double* getLambdas() const { return m_lambdas; }
......
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
#define JVET_S0221_NUM_VB_CHECK 1 // JVET_S0221: Constraints on the number of virtual boundaries #define JVET_S0221_NUM_VB_CHECK 1 // JVET_S0221: Constraints on the number of virtual boundaries
#define JVET_S0052_RM_SEPARATE_COLOUR_PLANE 1 // JVET-S0052: Remove separate colour plane coding from VVC version 1
//########### place macros to be be kept below this line ############### //########### place macros to be be kept below this line ###############
#define JVET_S0257_DUMP_360SEI_MESSAGE 1 // Software support of 360 SEI messages #define JVET_S0257_DUMP_360SEI_MESSAGE 1 // Software support of 360 SEI messages
......
...@@ -1322,11 +1322,13 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) ...@@ -1322,11 +1322,13 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
pcSPS->setGDREnabledFlag(uiCode); pcSPS->setGDREnabledFlag(uiCode);
READ_CODE(2, uiCode, "chroma_format_idc"); pcSPS->setChromaFormatIdc( ChromaFormat(uiCode) ); READ_CODE(2, uiCode, "chroma_format_idc"); pcSPS->setChromaFormatIdc( ChromaFormat(uiCode) );
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
if( pcSPS->getChromaFormatIdc() == CHROMA_444 ) if( pcSPS->getChromaFormatIdc() == CHROMA_444 )
{ {
READ_FLAG( uiCode, "separate_colour_plane_flag"); CHECK(uiCode != 0, "separate_colour_plane_flag shall be equal to 0"); READ_FLAG( uiCode, "separate_colour_plane_flag"); CHECK(uiCode != 0, "separate_colour_plane_flag shall be equal to 0");
pcSPS->setSeparateColourPlaneFlag( uiCode != 0 ); pcSPS->setSeparateColourPlaneFlag( uiCode != 0 );
} }
#endif
READ_FLAG(uiCode, "ref_pic_resampling_enabled_flag"); pcSPS->setRprEnabledFlag(uiCode); READ_FLAG(uiCode, "ref_pic_resampling_enabled_flag"); pcSPS->setRprEnabledFlag(uiCode);
if (uiCode) if (uiCode)
...@@ -1354,7 +1356,9 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) ...@@ -1354,7 +1356,9 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
READ_UVLC(uiCode, "sps_conf_win_top_offset"); conf.setWindowTopOffset(uiCode); READ_UVLC(uiCode, "sps_conf_win_top_offset"); conf.setWindowTopOffset(uiCode);
READ_UVLC(uiCode, "sps_conf_win_bottom_offset"); conf.setWindowBottomOffset(uiCode); READ_UVLC(uiCode, "sps_conf_win_bottom_offset"); conf.setWindowBottomOffset(uiCode);
} }
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
const uint32_t chromaArrayType = (int) pcSPS->getSeparateColourPlaneFlag() ? 0 : pcSPS->getChromaFormatIdc(); const uint32_t chromaArrayType = (int) pcSPS->getSeparateColourPlaneFlag() ? 0 : pcSPS->getChromaFormatIdc();
#endif
READ_CODE(2, uiCode, "sps_log2_ctu_size_minus5"); pcSPS->setCTUSize(1 << (uiCode + 5)); READ_CODE(2, uiCode, "sps_log2_ctu_size_minus5"); pcSPS->setCTUSize(1 << (uiCode + 5));
CHECK(uiCode > 2, "sps_log2_ctu_size_minus5 must be less than or equal to 2"); CHECK(uiCode > 2, "sps_log2_ctu_size_minus5 must be less than or equal to 2");
...@@ -1632,7 +1636,11 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) ...@@ -1632,7 +1636,11 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
READ_FLAG(uiCode, "sps_lfnst_enabled_flag"); pcSPS->setUseLFNST(uiCode != 0); READ_FLAG(uiCode, "sps_lfnst_enabled_flag"); pcSPS->setUseLFNST(uiCode != 0);
#endif #endif
#if JVET_S0052_RM_SEPARATE_COLOUR_PLANE
if (pcSPS->getChromaFormatIdc() != CHROMA_400)
#else
if (chromaArrayType != CHROMA_400) if (chromaArrayType != CHROMA_400)
#endif
{ {
READ_FLAG(uiCode, "sps_joint_cbcr_enabled_flag"); pcSPS->setJointCbCrEnabledFlag(uiCode ? true : false); READ_FLAG(uiCode, "sps_joint_cbcr_enabled_flag"); pcSPS->setJointCbCrEnabledFlag(uiCode ? true : false);
ChromaQpMappingTableParams chromaQpMappingTableParams; ChromaQpMappingTableParams chromaQpMappingTableParams;
...@@ -1868,7 +1876,11 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) ...@@ -1868,7 +1876,11 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
} }
#endif #endif
READ_FLAG( uiCode, "sps_palette_enabled_flag"); pcSPS->setPLTMode ( uiCode != 0 ); READ_FLAG( uiCode, "sps_palette_enabled_flag"); pcSPS->setPLTMode ( uiCode != 0 );
#if JVET_S0052_RM_SEPARATE_COLOUR_PLANE
if (pcSPS->getChromaFormatIdc() == CHROMA_444 && pcSPS->getLog2MaxTbSize() != 6)
#else
if (chromaArrayType == CHROMA_444 && pcSPS->getLog2MaxTbSize() != 6) if (chromaArrayType == CHROMA_444 && pcSPS->getLog2MaxTbSize() != 6)
#endif
{ {
READ_FLAG(uiCode, "sps_act_enabled_flag"); pcSPS->setUseColorTrans(uiCode != 0); READ_FLAG(uiCode, "sps_act_enabled_flag"); pcSPS->setUseColorTrans(uiCode != 0);
} }
...@@ -3339,7 +3351,9 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par ...@@ -3339,7 +3351,9 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par
CHECK(pcSlice->getPictureHeaderInSliceHeader() && pps->getWpInfoInPhFlag() == 1, "When sh_picture_header_in_slice_header_flag is equal to 1, wp_info_in_ph_flag shall be equal to 0"); CHECK(pcSlice->getPictureHeaderInSliceHeader() && pps->getWpInfoInPhFlag() == 1, "When sh_picture_header_in_slice_header_flag is equal to 1, wp_info_in_ph_flag shall be equal to 0");
CHECK(pcSlice->getPictureHeaderInSliceHeader() && pps->getQpDeltaInfoInPhFlag() == 1, "When sh_picture_header_in_slice_header_flag is equal to 1, qp_delta_info_in_ph_flag shall be equal to 0"); CHECK(pcSlice->getPictureHeaderInSliceHeader() && pps->getQpDeltaInfoInPhFlag() == 1, "When sh_picture_header_in_slice_header_flag is equal to 1, qp_delta_info_in_ph_flag shall be equal to 0");
CHECK(pcSlice->getPictureHeaderInSliceHeader() && sps->getSubPicInfoPresentFlag() == 1, "When sps_subpic_info_present_flag is equal to 1, the value of sh_picture_header_in_slice_header_flag shall be equal to 0"); CHECK(pcSlice->getPictureHeaderInSliceHeader() && sps->getSubPicInfoPresentFlag() == 1, "When sps_subpic_info_present_flag is equal to 1, the value of sh_picture_header_in_slice_header_flag shall be equal to 0");
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
CHECK(pcSlice->getPictureHeaderInSliceHeader() && sps->getSeparateColourPlaneFlag() == 1, "when separate_colour_plane_flag is equal to 1, the value of picture_header_in_slice_header_flag shall be equal to 0"); CHECK(pcSlice->getPictureHeaderInSliceHeader() && sps->getSeparateColourPlaneFlag() == 1, "when separate_colour_plane_flag is equal to 1, the value of picture_header_in_slice_header_flag shall be equal to 0");
#endif
const ChromaFormat chFmt = sps->getChromaFormatIdc(); const ChromaFormat chFmt = sps->getChromaFormatIdc();
const uint32_t numValidComp=getNumberValidComponents(chFmt); const uint32_t numValidComp=getNumberValidComponents(chFmt);
...@@ -3602,6 +3616,7 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par ...@@ -3602,6 +3616,7 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par
pcSlice->setExplicitScalingListUsed(pcSlice->getPictureHeaderInSliceHeader() ? picHeader->getExplicitScalingListEnabledFlag() : false); pcSlice->setExplicitScalingListUsed(pcSlice->getPictureHeaderInSliceHeader() ? picHeader->getExplicitScalingListEnabledFlag() : false);
} }
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
// 4:4:4 colour plane ID // 4:4:4 colour plane ID
if( sps->getSeparateColourPlaneFlag() ) if( sps->getSeparateColourPlaneFlag() )
{ {
...@@ -3612,8 +3627,7 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par ...@@ -3612,8 +3627,7 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par
{ {
pcSlice->setColourPlaneId( 0 ); pcSlice->setColourPlaneId( 0 );
} }
#endif
if( pps->getRplInfoInPhFlag() ) if( pps->getRplInfoInPhFlag() )
{ {
pcSlice->setRPL0(picHeader->getRPL0()); pcSlice->setRPL0(picHeader->getRPL0());
......
...@@ -1722,8 +1722,12 @@ void EncLib::xInitPPS(PPS &pps, const SPS &sps) ...@@ -1722,8 +1722,12 @@ void EncLib::xInitPPS(PPS &pps, const SPS &sps)
{ {
chromaDbfOffsetNotSameAsLuma = false; chromaDbfOffsetNotSameAsLuma = false;
} }
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
const uint32_t chromaArrayType = (int)sps.getSeparateColourPlaneFlag() ? 0 : sps.getChromaFormatIdc(); const uint32_t chromaArrayType = (int)sps.getSeparateColourPlaneFlag() ? 0 : sps.getChromaFormatIdc();
if( ( chromaArrayType != CHROMA_400 ) && ( chromaQPOffsetNotZero || chromaDbfOffsetNotSameAsLuma ) ) if( ( chromaArrayType != CHROMA_400 ) && ( chromaQPOffsetNotZero || chromaDbfOffsetNotSameAsLuma ) )
#else
if ((sps.getChromaFormatIdc() != CHROMA_400) && (chromaQPOffsetNotZero || chromaDbfOffsetNotSameAsLuma))
#endif
{ {
pps.setPPSChromaToolFlag(true); pps.setPPSChromaToolFlag(true);
} }
......
...@@ -788,6 +788,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) ...@@ -788,6 +788,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
WRITE_FLAG(pcSPS->getGDREnabledFlag(), "gdr_enabled_flag"); WRITE_FLAG(pcSPS->getGDREnabledFlag(), "gdr_enabled_flag");
WRITE_CODE(int(pcSPS->getChromaFormatIdc ()), 2, "chroma_format_idc"); WRITE_CODE(int(pcSPS->getChromaFormatIdc ()), 2, "chroma_format_idc");
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
const ChromaFormat format = pcSPS->getChromaFormatIdc(); const ChromaFormat format = pcSPS->getChromaFormatIdc();
const uint32_t separate_colour_plane_flag = pcSPS->getSeparateColourPlaneFlag(); const uint32_t separate_colour_plane_flag = pcSPS->getSeparateColourPlaneFlag();
if( format == CHROMA_444 ) if( format == CHROMA_444 )
...@@ -797,6 +798,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) ...@@ -797,6 +798,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
} }
const uint32_t chromaArrayType = separate_colour_plane_flag ? 0 : format; const uint32_t chromaArrayType = separate_colour_plane_flag ? 0 : format;
#endif
WRITE_FLAG(pcSPS->getRprEnabledFlag(), "ref_pic_resampling_enabled_flag"); WRITE_FLAG(pcSPS->getRprEnabledFlag(), "ref_pic_resampling_enabled_flag");
if (pcSPS->getRprEnabledFlag()) if (pcSPS->getRprEnabledFlag())
...@@ -967,7 +969,11 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) ...@@ -967,7 +969,11 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
WRITE_FLAG(pcSPS->getUseLFNST() ? 1 : 0, "sps_lfnst_enabled_flag"); WRITE_FLAG(pcSPS->getUseLFNST() ? 1 : 0, "sps_lfnst_enabled_flag");
#endif #endif
#if JVET_S0052_RM_SEPARATE_COLOUR_PLANE
if (pcSPS->getChromaFormatIdc() != CHROMA_400)
#else
if (chromaArrayType != CHROMA_400) if (chromaArrayType != CHROMA_400)
#endif
{ {
WRITE_FLAG(pcSPS->getJointCbCrEnabledFlag(), "sps_joint_cbcr_enabled_flag"); WRITE_FLAG(pcSPS->getJointCbCrEnabledFlag(), "sps_joint_cbcr_enabled_flag");
const ChromaQpMappingTable& chromaQpMappingTable = pcSPS->getChromaQpMappingTable(); const ChromaQpMappingTable& chromaQpMappingTable = pcSPS->getChromaQpMappingTable();
...@@ -2179,12 +2185,13 @@ void HLSWriter::codeSliceHeader ( Slice* pcSlice ) ...@@ -2179,12 +2185,13 @@ void HLSWriter::codeSliceHeader ( Slice* pcSlice )
WRITE_FLAG(pcSlice->getExplicitScalingListUsed(), "slice_explicit_scaling_list_used_flag"); WRITE_FLAG(pcSlice->getExplicitScalingListUsed(), "slice_explicit_scaling_list_used_flag");
} }
#if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE
// 4:4:4 colour plane ID // 4:4:4 colour plane ID
if( pcSlice->getSPS()->getSeparateColourPlaneFlag() ) if( pcSlice->getSPS()->getSeparateColourPlaneFlag() )
{ {
WRITE_CODE( pcSlice->getColourPlaneId(), 2, "colour_plane_id" ); WRITE_CODE( pcSlice->getColourPlaneId(), 2, "colour_plane_id" );
} }
#endif
if( !pcSlice->getPPS()->getRplInfoInPhFlag() && (!pcSlice->getIdrPicFlag() || pcSlice->getSPS()->getIDRRefParamListPresent())) if( !pcSlice->getPPS()->getRplInfoInPhFlag() && (!pcSlice->getIdrPicFlag() || pcSlice->getSPS()->getIDRRefParamListPresent()))
{ {
//Write L0 related syntax elements //Write L0 related syntax elements
......