HEVC Test Model (HM)  HM-16.3
TComMv.h
Go to the documentation of this file.
1 /* The copyright in this software is being made available under the BSD
2  * License, included below. This software may be subject to other third party
3  * and contributor rights, including patent rights, and no such rights are
4  * granted under this license.
5  *
6  * Copyright (c) 2010-2015, ITU/ISO/IEC
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions are met:
11  *
12  * * Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above copyright notice,
15  * this list of conditions and the following disclaimer in the documentation
16  * and/or other materials provided with the distribution.
17  * * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
18  * be used to endorse or promote products derived from this software without
19  * specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
25  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31  * THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
38 #ifndef __TCOMMV__
39 #define __TCOMMV__
40 
41 #include "CommonDef.h"
42 
45 
46 // ====================================================================================================================
47 // Class definition
48 // ====================================================================================================================
49 
51 class TComMv
52 {
53 private:
56 
57 public:
58 
59  // ------------------------------------------------------------------------------------------------------------------
60  // constructors
61  // ------------------------------------------------------------------------------------------------------------------
62 
63  TComMv() :
64  m_iHor(0),
65  m_iVer(0)
66  {
67  }
68 
69  TComMv( Short iHor, Short iVer ) :
70  m_iHor(iHor),
71  m_iVer(iVer)
72  {
73  }
74 
75  // ------------------------------------------------------------------------------------------------------------------
76  // set
77  // ------------------------------------------------------------------------------------------------------------------
78 
79  Void set ( Short iHor, Short iVer) { m_iHor = iHor; m_iVer = iVer; }
80  Void setHor ( Short i ) { m_iHor = i; }
81  Void setVer ( Short i ) { m_iVer = i; }
82  Void setZero () { m_iHor = m_iVer = 0; }
83 
84  // ------------------------------------------------------------------------------------------------------------------
85  // get
86  // ------------------------------------------------------------------------------------------------------------------
87 
88  Int getHor () const { return m_iHor; }
89  Int getVer () const { return m_iVer; }
90  Int getAbsHor () const { return abs( m_iHor ); }
91  Int getAbsVer () const { return abs( m_iVer ); }
92 
93  // ------------------------------------------------------------------------------------------------------------------
94  // operations
95  // ------------------------------------------------------------------------------------------------------------------
96 
97  const TComMv& operator += (const TComMv& rcMv)
98  {
99  m_iHor += rcMv.m_iHor;
100  m_iVer += rcMv.m_iVer;
101  return *this;
102  }
103 
104  const TComMv& operator-= (const TComMv& rcMv)
105  {
106  m_iHor -= rcMv.m_iHor;
107  m_iVer -= rcMv.m_iVer;
108  return *this;
109  }
110 
111  const TComMv& operator>>= (const Int i)
112  {
113  m_iHor >>= i;
114  m_iVer >>= i;
115  return *this;
116  }
117 
118  const TComMv& operator<<= (const Int i)
119  {
120  m_iHor <<= i;
121  m_iVer <<= i;
122  return *this;
123  }
124 
125  const TComMv operator - ( const TComMv& rcMv ) const
126  {
127  return TComMv( m_iHor - rcMv.m_iHor, m_iVer - rcMv.m_iVer );
128  }
129 
130  const TComMv operator + ( const TComMv& rcMv ) const
131  {
132  return TComMv( m_iHor + rcMv.m_iHor, m_iVer + rcMv.m_iVer );
133  }
134 
135  Bool operator== ( const TComMv& rcMv ) const
136  {
137  return (m_iHor==rcMv.m_iHor && m_iVer==rcMv.m_iVer);
138  }
139 
140  Bool operator!= ( const TComMv& rcMv ) const
141  {
142  return (m_iHor!=rcMv.m_iHor || m_iVer!=rcMv.m_iVer);
143  }
144 
145  const TComMv scaleMv( Int iScale ) const
146  {
147  Int mvx = Clip3( -32768, 32767, (iScale * getHor() + 127 + (iScale * getHor() < 0)) >> 8 );
148  Int mvy = Clip3( -32768, 32767, (iScale * getVer() + 127 + (iScale * getVer() < 0)) >> 8 );
149  return TComMv( mvx, mvy );
150  }
151 };// END CLASS DEFINITION TComMV
152 
154 
155 #endif // __TCOMMV__
Bool operator!=(const TComMv &rcMv) const
Definition: TComMv.h:140
Bool operator==(const TComMv &rcMv) const
Definition: TComMv.h:135
const TComMv & operator+=(const TComMv &rcMv)
Definition: TComMv.h:97
Int getHor() const
Definition: TComMv.h:88
Defines constants, macros and tool parameters.
void Void
Definition: TypeDef.h:285
const TComMv operator-(const TComMv &rcMv) const
Definition: TComMv.h:125
Int getAbsHor() const
Definition: TComMv.h:90
const TComMv & operator<<=(const Int i)
Definition: TComMv.h:118
const TComMv operator+(const TComMv &rcMv) const
Definition: TComMv.h:130
const TComMv & operator>>=(const Int i)
Definition: TComMv.h:111
short Short
Definition: TypeDef.h:294
Int getAbsVer() const
Definition: TComMv.h:91
Void setHor(Short i)
Definition: TComMv.h:80
Void setZero()
Definition: TComMv.h:82
bool Bool
Definition: TypeDef.h:286
Void setVer(Short i)
Definition: TComMv.h:81
TComMv(Short iHor, Short iVer)
Definition: TComMv.h:69
T Clip3(const T minVal, const T maxVal, const T a)
general min/max clip
Definition: CommonDef.h:137
TComMv()
Definition: TComMv.h:63
const TComMv & operator-=(const TComMv &rcMv)
Definition: TComMv.h:104
Int getVer() const
Definition: TComMv.h:89
Short m_iVer
vertical component of motion vector
Definition: TComMv.h:55
Short m_iHor
horizontal component of motion vector
Definition: TComMv.h:54
int Int
Definition: TypeDef.h:296
basic motion vector class
Definition: TComMv.h:51
const TComMv scaleMv(Int iScale) const
Definition: TComMv.h:145
Void set(Short iHor, Short iVer)
Definition: TComMv.h:79