Changeset 1390 in 3DVCSoftware for branches/HTM-16.0-MV-draft-5/source/Lib/TLibCommon/TComWedgelet.h
- Timestamp:
- 13 Nov 2015, 17:00:20 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-16.0-MV-draft-5/source/Lib/TLibCommon/TComWedgelet.h
r1313 r1390 43 43 #include <vector> 44 44 45 #if NH_3D_DMM46 #define DMM_OFFSET (NUM_INTRA_MODE+1) // offset for DMM and RBC mode numbers47 #define DMM_MIN_SIZE 4 // min. block size for DMM and RBC modes48 #define DMM_MAX_SIZE 32 // max. block size for DMM and RBC modes49 50 enum DmmID51 {52 DMM1_IDX = 0,53 DMM4_IDX = 1,54 NUM_DMM = 2,55 DMM_NO_IDX = MAX_UINT56 };57 58 __inline DmmID getDmmType( Int intraMode )59 {60 Int dmmType = intraMode-DMM_OFFSET;61 return (dmmType >= 0 && dmmType < NUM_DMM) ? (DmmID)dmmType : DMM_NO_IDX;62 }63 __inline Bool isDmmMode( Int intraMode ) { return ((UInt)getDmmType( intraMode ) < NUM_DMM); }64 65 66 // Wedgelets67 #define DMM_NO_WEDGE_IDX MAX_UINT68 #define DMM_NUM_WEDGE_REFINES 869 70 enum WedgeResolution71 {72 FULL_PEL,73 HALF_PEL74 };75 76 77 // ====================================================================================================================78 // Class definition TComWedgelet79 // ====================================================================================================================80 class TComWedgelet81 {82 private:83 UChar m_uhXs; // line start X pos84 UChar m_uhYs; // line start Y pos85 UChar m_uhXe; // line end X pos86 UChar m_uhYe; // line end Y pos87 UChar m_uhOri; // orientation index88 WedgeResolution m_eWedgeRes; // start/end pos resolution89 Bool m_bIsCoarse;90 91 UInt m_uiWidth;92 UInt m_uiHeight;93 94 Bool* m_pbPattern;95 Bool* m_pbScaledPattern;96 97 Void xGenerateWedgePattern();98 Void xDrawEdgeLine( UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe, Bool* pbPattern, Int iPatternStride );99 100 public:101 TComWedgelet( UInt uiWidth, UInt uiHeight );102 TComWedgelet( const TComWedgelet &rcWedge );103 virtual ~TComWedgelet();104 105 Void create ( UInt iWidth, UInt iHeight ); ///< create wedgelet pattern106 Void destroy(); ///< destroy wedgelet pattern107 Void clear (); ///< clear wedgelet pattern108 109 UInt getWidth () { return m_uiWidth; }110 UInt getStride () { return m_uiWidth; }111 UInt getHeight () { return m_uiHeight; }112 WedgeResolution getWedgeRes() { return m_eWedgeRes; }113 Bool* getPattern () { return m_pbPattern; }114 UChar getStartX () { return m_uhXs; }115 UChar getStartY () { return m_uhYs; }116 UChar getEndX () { return m_uhXe; }117 UChar getEndY () { return m_uhYe; }118 UChar getOri () { return m_uhOri; }119 Bool getIsCoarse() { return m_bIsCoarse; }120 121 Void generateWedgePatternByRotate(const TComWedgelet &rcWedge, Int rotate);122 Void setWedgelet( UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe, UChar uhOri, WedgeResolution eWedgeRes, Bool bIsCoarse = false );123 124 Bool checkNotPlain();125 Bool checkIdentical( Bool* pbRefPattern );126 Bool checkInvIdentical( Bool* pbRefPattern );127 128 Bool* getPatternScaled ( UInt dstSize );129 Void getPatternScaledCopy( UInt dstSize, Bool* dstBuf );130 131 }; // END CLASS DEFINITION TComWedgelet132 133 // type definition wedgelet pattern list134 typedef std::vector<TComWedgelet> WedgeList;135 136 // ====================================================================================================================137 // Class definition TComWedgeRef138 // ====================================================================================================================139 class TComWedgeRef140 {141 private:142 UChar m_uhXs; // line start X pos143 UChar m_uhYs; // line start Y pos144 UChar m_uhXe; // line end X pos145 UChar m_uhYe; // line end Y pos146 UInt m_uiRefIdx; // index of corresponding pattern of TComWedgelet object in wedge list147 148 public:149 TComWedgeRef() {}150 virtual ~TComWedgeRef() {}151 152 UChar getStartX () { return m_uhXs; }153 UChar getStartY () { return m_uhYs; }154 UChar getEndX () { return m_uhXe; }155 UChar getEndY () { return m_uhYe; }156 UInt getRefIdx () { return m_uiRefIdx; }157 158 Void setWedgeRef( UChar uhXs, UChar uhYs, UChar uhXe, UChar uhYe, UInt uiRefIdx ) { m_uhXs = uhXs; m_uhYs = uhYs; m_uhXe = uhXe; m_uhYe = uhYe; m_uiRefIdx = uiRefIdx; }159 }; // END CLASS DEFINITION TComWedgeRef160 161 162 // ====================================================================================================================163 // Class definition TComWedgeNode164 // ====================================================================================================================165 class TComWedgeNode166 {167 private:168 UInt m_uiPatternIdx;169 UInt m_uiRefineIdx[DMM_NUM_WEDGE_REFINES];170 171 public:172 TComWedgeNode();173 virtual ~TComWedgeNode() {}174 175 UInt getPatternIdx();176 UInt getRefineIdx ( UInt uiPos );177 178 Void setPatternIdx( UInt uiIdx );179 Void setRefineIdx ( UInt uiIdx, UInt uiPos );180 }; // END CLASS DEFINITION TComWedgeNode181 182 // type definition wedgelet node list183 typedef std::vector<TComWedgeNode> WedgeNodeList;184 #endif //NH_3D_DMM185 45 186 46 #endif // __TCOMWEDGELET__
Note: See TracChangeset for help on using the changeset viewer.