From 5cea952d322c1fffe3ce873875c80cf2b73a514d Mon Sep 17 00:00:00 2001 From: Joao Carreira Date: Sat, 28 Jul 2018 13:03:33 +0100 Subject: [PATCH] Add support for residue in HEVC intra pred module --- modules/HEVCIntraPrediction.cpp | 23 ++++++++++++++++++----- modules/HEVCIntraPrediction.h | 1 + 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/modules/HEVCIntraPrediction.cpp b/modules/HEVCIntraPrediction.cpp index 29c7156..acc3c67 100644 --- a/modules/HEVCIntraPrediction.cpp +++ b/modules/HEVCIntraPrediction.cpp @@ -41,11 +41,13 @@ HEVCIntraPrediction::HEVCIntraPrediction() CLP_MODULES_HAS_INFO | CLP_MODULE_REQUIRES_OPTIONS; - m_cModuleOptions.addOptions() /**/ - ( "mode", m_uiMode, "Intra mode (26-34) [26]" ) /**/ - ( "block_size", m_uiBlockSize, "Block size [4]" ) /**/ - ( "x_pel", m_uiXpel, "X coordinate [1]" ) /**/ - ( "y_pel", m_uiYpel, "Y coordinate [1]" ); + m_cModuleOptions.addOptions() /**/ + ( "mode", m_uiMode, "Intra mode (26-34) [26]" ) /**/ + ( "block_size", m_uiBlockSize, "Block size [4]" ) /**/ + ( "x_pel", m_uiXpel, "X coordinate [1]" ) /**/ + ( "y_pel", m_uiYpel, "Y coordinate [1]" ) /**/ + ( "recon", m_bShowResidue, "Show prediction residue [false]" ) /**/ + ; m_pcPredBlock = NULL; m_referenceMem = NULL; @@ -157,6 +159,17 @@ CalypFrame* HEVCIntraPrediction::process( std::vector apcFrameList } } + if( m_bShowResidue ) + { + for( y = 0; y < m_uiBlockSize; y++ ) + { + for( x = 0; x < m_uiBlockSize; x++ ) + { + predBlock[y + 1][x + 1] = abs( refFrame[m_uiYpel + y - 1][m_uiXpel + x - 1] - predBlock[y + 1][x + 1] ); + } + } + } + return m_pcPredBlock; } diff --git a/modules/HEVCIntraPrediction.h b/modules/HEVCIntraPrediction.h index 499320d..6259411 100644 --- a/modules/HEVCIntraPrediction.h +++ b/modules/HEVCIntraPrediction.h @@ -38,6 +38,7 @@ private: unsigned int m_uiBlockSize; unsigned int m_uiXpel; unsigned int m_uiYpel; + bool m_bShowResidue; ClpPel* m_referenceMem; public: