Skip to content
Snippets Groups Projects
Commit aed4dca5 authored by Vadim Seregin's avatar Vadim Seregin
Browse files

Merge branch 'JVET-AD0123-padding-for-GDR' into 'master'

JVET-AD0123 (EE2 Test 5.1): reference frame padding for GDR

See merge request !409
parents eb2bfe9a 269a96ad
No related branches found
No related tags found
1 merge request!409JVET-AD0123 (EE2 Test 5.1): reference frame padding for GDR
Pipeline #9593 passed
...@@ -21339,6 +21339,12 @@ void InterPrediction::deriveMVDcandAffine(const PredictionUnit& pu, RefPicList e ...@@ -21339,6 +21339,12 @@ void InterPrediction::deriveMVDcandAffine(const PredictionUnit& pu, RefPicList e
for (int i = 0; i < numPt; i++) for (int i = 0; i < numPt; i++)
{ {
PictureType pt = (i == 0) ? PIC_RECONSTRUCTION_0 : PIC_RECONSTRUCTION_1; PictureType pt = (i == 0) ? PIC_RECONSTRUCTION_0 : PIC_RECONSTRUCTION_1;
#if JVET_AD0123_REF_PICTURE_PADDING_FOR_GDR
if (pt == PIC_RECONSTRUCTION_1)
{
padDirtyArea(pcCurPic, slice, pt);
}
#endif
mcFramePadOneSide(pcCurPic, slice, PAD_TOP, pPadBuffYUV, &blkDataTmp, pPadYUVContainerDyn, blkUnitAreaBuff, mcFramePadOneSide(pcCurPic, slice, PAD_TOP, pPadBuffYUV, &blkDataTmp, pPadYUVContainerDyn, blkUnitAreaBuff,
pCurBuffYUV, pt); pCurBuffYUV, pt);
mcFramePadOneSide(pcCurPic, slice, PAD_BOTTOM, pPadBuffYUV, &blkDataTmp, pPadYUVContainerDyn, blkUnitAreaBuff, mcFramePadOneSide(pcCurPic, slice, PAD_BOTTOM, pPadBuffYUV, &blkDataTmp, pPadYUVContainerDyn, blkUnitAreaBuff,
...@@ -22019,3 +22025,31 @@ void InterPrediction::deriveMVDcandAffine(const PredictionUnit& pu, RefPicList e ...@@ -22019,3 +22025,31 @@ void InterPrediction::deriveMVDcandAffine(const PredictionUnit& pu, RefPicList e
} }
} }
#endif #endif
#if JVET_AD0123_REF_PICTURE_PADDING_FOR_GDR
void InterPrediction::padDirtyArea(Picture* pcCurPic, Slice& slice, PictureType pt)
{
if (slice.getPicHeader()->getNumVerVirtualBoundaries() == 1)
{
const int maxCh = pcCurPic->chromaFormat == CHROMA_400 ? 0 : 2;
for (int chan = 0; chan <= maxCh; chan++)
{
const ComponentID ch = ComponentID(chan);
Pel* piTxtRec = pcCurPic->getBuf(ch, pt).bufAt(0, 0);
const int iStrideRec = pcCurPic->getBuf(ch, pt).stride;
const int iWidthFrm = slice.getPPS()->getPicWidthInLumaSamples() >> getComponentScaleX(ch, CHROMA_420);
const int iHeightFrm = slice.getPPS()->getPicHeightInLumaSamples() >> getComponentScaleY(ch, CHROMA_420);
const int posVBX = slice.getPicHeader()->getVirtualBoundariesPosX(0) >> getComponentScaleX(ch, CHROMA_420);
for (int idy = 0; idy < iHeightFrm; idy++)
{
for (int idx = posVBX; idx < iWidthFrm; idx++)
{
piTxtRec[idx] = piTxtRec[posVBX - 1];
}
piTxtRec += iStrideRec;
}
}
}
}
#endif
...@@ -1008,6 +1008,9 @@ public: ...@@ -1008,6 +1008,9 @@ public:
PredictionUnit *blkDataTmp, PelStorage *pPadYUVContainerDyn, const UnitArea blkUnitAreaBuff, PredictionUnit *blkDataTmp, PelStorage *pPadYUVContainerDyn, const UnitArea blkUnitAreaBuff,
PelStorage *pCurBuffYUV, PictureType pt); PelStorage *pCurBuffYUV, PictureType pt);
void mcFramePadRepExt(Picture *pcCurPic, Slice &slice, PictureType pt); void mcFramePadRepExt(Picture *pcCurPic, Slice &slice, PictureType pt);
#if JVET_AD0123_REF_PICTURE_PADDING_FOR_GDR
void padDirtyArea(Picture* pcCurPic, Slice& slice, PictureType pt);
#endif
#else #else
void mcFramePadOneSide(Picture *pcCurPic, Slice &slice, PadDirection padDir, PelStorage *pPadBuffYUV, void mcFramePadOneSide(Picture *pcCurPic, Slice &slice, PadDirection padDir, PelStorage *pPadBuffYUV,
PredictionUnit *blkDataTmp, PelStorage *pPadYUVContainerDyn, const UnitArea blkUnitAreaBuff, PredictionUnit *blkDataTmp, PelStorage *pPadYUVContainerDyn, const UnitArea blkUnitAreaBuff,
......
...@@ -255,6 +255,7 @@ ...@@ -255,6 +255,7 @@
#define JVET_AC0144_AFFINE_DMVR_REGRESSION 1 // JVET-AC0144: DMVR for affine with regression refinement #define JVET_AC0144_AFFINE_DMVR_REGRESSION 1 // JVET-AC0144: DMVR for affine with regression refinement
#define JVET_AC0158_PIXEL_AFFINE_MC 1 // JVET-AC0158: Pixel based affine motion compensation #define JVET_AC0158_PIXEL_AFFINE_MC 1 // JVET-AC0158: Pixel based affine motion compensation
#define JVET_AD0195_HIGH_PRECISION_BDOF_CORE 1 // JVET_AD0195: High-Precision MV Refinement for BDOF #define JVET_AD0195_HIGH_PRECISION_BDOF_CORE 1 // JVET_AD0195: High-Precision MV Refinement for BDOF
#define JVET_AD0123_REF_PICTURE_PADDING_FOR_GDR 1 // JVET-AD0123: Reference picture padding for GDR
// Inter template matching tools // Inter template matching tools
#define ENABLE_INTER_TEMPLATE_MATCHING 1 // It controls whether template matching is enabled for inter prediction #define ENABLE_INTER_TEMPLATE_MATCHING 1 // It controls whether template matching is enabled for inter prediction
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment