Ignore:
Timestamp:
15 Apr 2015, 11:36:33 (10 years ago)
Author:
tech
Message:

Removed 3D-HEVC.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-14.0-MV-draft-3/source/Lib/TLibRenderer/TRenImage.cpp

    r1179 r1191  
    3737#include "TRenFilter.h"
    3838#include "assert.h"
    39 #if H_3D
    40 
    41 
    42 template<typename T>
    43 TRenImage<T>::TRenImage( TRenImage& rcIn )
    44 {
    45   allocatePlanes( rcIn.getPlane(0)->getWidth(), rcIn.getPlane(0)->getHeight(), rcIn.getNumberOfFullPlanes(), rcIn.getNumberOfQuaterPlanes() ) ; assign(&rcIn);
    46 }
    47 
    48 template<typename T>
    49 TRenImage<T>::TRenImage( UInt uiWidth, UInt uiHeight, UInt uiNumberOfFullPlanes, UInt uiNumberOfQuaterPlanes )
    50 {
    51   allocatePlanes( uiWidth, uiHeight, uiNumberOfFullPlanes, uiNumberOfQuaterPlanes );
    52 }
    53 
    54 template<typename T>
    55 TRenImage<T>::TRenImage() : m_uiNumberOfFullPlanes(0), m_uiNumberOfQuaterPlanes(0), m_uiNumberOfPlanes(0), m_apcPlanes(0)
    56 {
    57 
    58 }
    59 
    60 
    61 template<>
    62 TRenImage<Pel>::TRenImage( TComPicYuv* pcPicYuv, Bool bFirstPlaneOnly )
    63 {
    64   if (bFirstPlaneOnly) //400
    65   {
    66     m_uiNumberOfPlanes       = 1;
    67     m_uiNumberOfFullPlanes   = 1;
    68     m_uiNumberOfQuaterPlanes = 0;
    69     m_apcPlanes    = new TRenImagePlane<Pel>*[ m_uiNumberOfPlanes ];
    70     m_apcPlanes[0] = new TRenImagePlane<Pel>( pcPicYuv->getBufY(), pcPicYuv->getWidth() + (REN_LUMA_MARGIN << 1),   pcPicYuv->getHeight()+ (REN_LUMA_MARGIN << 1), pcPicYuv->getStride (), REN_LUMA_MARGIN );
    71   }
    72   else //420
    73   {
    74     m_uiNumberOfPlanes       = 3;
    75     m_uiNumberOfFullPlanes   = 1;
    76     m_uiNumberOfQuaterPlanes = 2;
    77 
    78     m_apcPlanes    = new TRenImagePlane<Pel>*[ m_uiNumberOfPlanes ];
    79     m_apcPlanes[0] = new TRenImagePlane<Pel>( pcPicYuv->getBufY(),   pcPicYuv->getWidth()     + (REN_LUMA_MARGIN << 1),  pcPicYuv->getHeight()      + (REN_LUMA_MARGIN << 1), pcPicYuv->getStride (), REN_LUMA_MARGIN );
    80     m_apcPlanes[1] = new TRenImagePlane<Pel>( pcPicYuv->getBufU(),   (pcPicYuv->getWidth()>>1)+  REN_LUMA_MARGIN      ,  (pcPicYuv->getHeight()>>1) +  REN_LUMA_MARGIN      , pcPicYuv->getCStride(), REN_LUMA_MARGIN >> 1 );
    81     m_apcPlanes[2] = new TRenImagePlane<Pel>( pcPicYuv->getBufV(),   (pcPicYuv->getWidth()>>1)+  REN_LUMA_MARGIN      ,  (pcPicYuv->getHeight()>>1) +  REN_LUMA_MARGIN      , pcPicYuv->getCStride(), REN_LUMA_MARGIN >> 1 );
    82   }
    83 }
    84 
    85 template<typename T>
    86 TRenImage<T>* TRenImage<T>::create()
    87 {
    88   return new TRenImage( m_apcPlanes[0]->getWidth(), m_apcPlanes[0]->getHeight(), m_uiNumberOfFullPlanes, m_uiNumberOfQuaterPlanes );
    89 }
    90 
    91 
    92 template<typename T>
    93 TRenImage<T>::TRenImage( TComPicYuv* pcPicYuv, Bool bFirstPlaneOnly )
    94 {
    95   assert(0);
    96 }
    97 
    98 template<class T>
    99 TRenImagePlane<T>* TRenImage<T>::getPlane(UInt uiPlaneNumber) const
    100 {
    101   return m_apcPlanes[uiPlaneNumber];
    102 }
    103 
    104 template<class T>
    105 TRenImagePlane<T>** TRenImage<T>::getPlanes() const
    106 {
    107   return m_apcPlanes;
    108 }
    109 
    110 template<typename T>
    111 Void TRenImage<T>::getDataAndStrides( T** pptData, Int* piStrides )
    112 {
    113   for (UInt uiCurPlane = 0; uiCurPlane < m_uiNumberOfPlanes; uiCurPlane++ )
    114   {
    115     piStrides[uiCurPlane] = m_apcPlanes[uiCurPlane]->getStride   ();
    116     pptData  [uiCurPlane] = m_apcPlanes[uiCurPlane]->getPlaneData();
    117   }
    118 }
    119 
    120 
    121 template<typename T>
    122 Void TRenImage<T>::getWidthAndHeight( Int* ppiWidths, Int* ppiHeights )
    123 {
    124   for (UInt uiCurPlane = 0; uiCurPlane < m_uiNumberOfPlanes; uiCurPlane++ )
    125   {
    126     ppiWidths [uiCurPlane] = m_apcPlanes[uiCurPlane]->getWidth ();
    127     ppiHeights[uiCurPlane] = m_apcPlanes[uiCurPlane]->getHeight();
    128   }
    129 }
    130 
    131 template<typename T>
    132 Void TRenImage<T>::allocatePlanes( UInt uiWidth, UInt uiHeight, UInt uiNumberOfFullPlanes, UInt uiNumberOfQuaterPlanes )
    133 {
    134   assert( uiNumberOfFullPlanes + uiNumberOfQuaterPlanes);
    135 
    136   UInt uiHalfWidth  = uiWidth  / 2;
    137   UInt uiHalfHeight = uiHeight / 2;
    138 
    139   uiHalfWidth  = (uiHalfWidth  == 0) ? 1 : uiHalfWidth ;
    140   uiHalfHeight = (uiHalfHeight == 0) ? 1 : uiHalfHeight;
    141 
    142   m_uiNumberOfPlanes       = uiNumberOfFullPlanes + uiNumberOfQuaterPlanes; ;
    143   m_uiNumberOfFullPlanes   = uiNumberOfFullPlanes;
    144   m_uiNumberOfQuaterPlanes = uiNumberOfQuaterPlanes;
    145 
    146   this->m_apcPlanes    = new TRenImagePlane<T>*[m_uiNumberOfPlanes];
    147 
    148   for (UInt uiCurPlane = 0; uiCurPlane < uiNumberOfFullPlanes; uiCurPlane++)
    149   {
    150     this->m_apcPlanes[uiCurPlane] = new TRenImagePlane<T>(uiWidth, uiHeight, REN_LUMA_MARGIN);
    151   };
    152 
    153   for (UInt uiCurPlane = 0; uiCurPlane < uiNumberOfQuaterPlanes; uiCurPlane++)
    154   {
    155     this->m_apcPlanes[uiCurPlane+uiNumberOfFullPlanes] = new TRenImagePlane<T>(uiHalfWidth, uiHalfHeight, REN_LUMA_MARGIN >> 1);
    156   };
    157 }
    158 
    159 
    160 template<class T>
    161 Void TRenImage<T>::assign(Int iVal)
    162 {
    163   for (UInt uiCurPlane = 0; uiCurPlane < m_uiNumberOfPlanes; uiCurPlane++)
    164   {
    165     m_apcPlanes[uiCurPlane]->assign( iVal);
    166   }
    167 }
    168 
    169 
    170 template<class T>
    171 Void TRenImage<T>::devide( Double dDevisor )
    172 {
    173   for (UInt uiCurPlane = 0; uiCurPlane < m_uiNumberOfPlanes; uiCurPlane++)
    174   {
    175     m_apcPlanes[uiCurPlane]->devide(dDevisor);
    176   }
    177 }
    178 
    179 
    180 template<class T> template<class S>
    181 Void TRenImage<T>::assign( TRenImage<S>* pcSrcImage )
    182 {
    183   if (pcSrcImage->getNumberOfPlanes() != m_uiNumberOfPlanes )
    184   {
    185     assert(0);
    186   }
    187 
    188   for (UInt uiCurPlane = 0; uiCurPlane < m_uiNumberOfPlanes; uiCurPlane++)
    189   {
    190     m_apcPlanes[uiCurPlane]->assign(pcSrcImage->getPlane(uiCurPlane)->getPlaneDataOrg(),pcSrcImage->getPlane(uiCurPlane)->getStride());
    191   }
    192 }
    193 
    194 
    195 template<typename T>
    196 Void TRenImage<T>::setData( TRenImage* pcInputImage, Bool bClean )
    197 {
    198   for (UInt uiPlane = 0; uiPlane < m_uiNumberOfPlanes; uiPlane++)
    199   {
    200     m_apcPlanes[uiPlane]->setData( pcInputImage->getPlane( uiPlane ), bClean );
    201   }
    202 }
    203 
    204 template<typename T>
    205 Void TRenImage<T>::extendMargin()
    206 {
    207   for (UInt uiPlane = 0; uiPlane < m_uiNumberOfPlanes; uiPlane++)
    208   {
    209     m_apcPlanes[uiPlane]->extendMargin();
    210   }
    211 }
    212 
    213 template<class T>
    214 Void TRenImage<T>::xDeletePlanes()
    215 {
    216   for (UInt uiCurPlane = 0; uiCurPlane < m_uiNumberOfPlanes; uiCurPlane++)
    217   {
    218     if ( m_apcPlanes[uiCurPlane])
    219     {
    220       delete m_apcPlanes[uiCurPlane];
    221     }
    222     m_apcPlanes[uiCurPlane] = 0;
    223   }
    224 }
    225 
    226 
    227 template<class T>
    228 Void TRenImage<T>::init()
    229 {
    230   // YUV-init
    231   m_apcPlanes[0]->assign((Pel) 0 );
    232 
    233   for (UInt uiCurPlane = 1; uiCurPlane < m_uiNumberOfPlanes; uiCurPlane++)
    234   {
    235     m_apcPlanes[uiCurPlane]->assign( (Pel) ( 1 << ( g_bitDepthC - 1 ) ) );
    236   }
    237 }
    238 
    239 
    240 template<class T>
    241 TRenImage<T>::~TRenImage() {
    242   xDeletePlanes();
    243   delete[] m_apcPlanes;
    244 }
    245 
    246 
    247 
    248 template<class T>
    249 UInt TRenImage<T>::getNumberOfPlanes() const
    250 {
    251   return m_uiNumberOfPlanes;
    252 }
    253 
    254 template<class T>
    255 UInt TRenImage<T>::getNumberOfQuaterPlanes() const
    256 {
    257   return m_uiNumberOfQuaterPlanes;
    258 }
    259 
    260 template<class T>
    261 UInt TRenImage<T>::getNumberOfFullPlanes() const
    262 {
    263   return m_uiNumberOfFullPlanes;
    264 }
    265 
    266 template class TRenImage<Pel>;
    267 template class TRenImage<Int>;
    268 template class TRenImage<Double>;
    269 template class TRenImage<Bool>;
    270 
    271 
    272 template Void TRenImage<Pel>::assign<Pel>    (TRenImage<Pel>*   );
    273 
    274 #endif // H_3D
Note: See TracChangeset for help on using the changeset viewer.