source: 3DVCSoftware/trunk/source/Lib/TLibRenderer/TRenSingleModel.h

Last change on this file was 1413, checked in by tech, 7 years ago

Merged HTM-16.2-dev@1412

  • Property svn:eol-style set to native
File size: 18.2 KB
Line 
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-2016, 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 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
34
35#ifndef __TRENSINGLEMODEL__
36#define __TRENSINGLEMODEL__
37
38#include "TRenImage.h"
39#include "../TLibCommon/CommonDef.h"
40#include "../TLibCommon/TComPicYuv.h"
41#include "../TLibCommon/TypeDef.h"
42#include "../TAppCommon/TAppComCamPara.h"
43
44
45#include <math.h>
46#include <errno.h>
47#include <iostream>
48
49#include <string>
50#include <cstdio>
51#include <cstring>
52
53#if NH_3D_VSO
54using namespace std;
55
56#if H_3D_VSO_RM_ASSERTIONS
57#define RM_AOT( exp ) AOT ( exp )
58#define RM_AOF( exp ) AOF ( exp )
59#else
60#define RM_AOT( exp ) ((void)0)
61#define RM_AOF( exp ) ((void)0)
62#endif
63
64#define RenModRemoveBitInc( exp ) bBitInc ? ( RemoveBitIncrement( exp ) ) : ( exp )
65
66class TRenSingleModel
67{
68public: 
69
70  virtual ~TRenSingleModel() { } 
71#if H_3D_VSO_EARLY_SKIP
72  virtual Void   create    ( Int iMode, Int iWidth, Int iHeight, Int iShiftPrec, Int*** aaaiSubPelShiftTable, Int iHoleMargin, Bool bUseOrgRef, Int iBlendMode, Bool bLimOutput, Bool bEarlySkip ) = 0;
73#else
74  virtual Void   create    ( Int iMode, Int iWidth, Int iHeight, Int iShiftPrec, Int*** aaaiSubPelShiftTable, Int iHoleMargin, Bool bUseOrgRef, Int iBlendMode, Bool bLimOutput ) = 0;
75#endif
76
77  // Setup
78  virtual Void   setLRView         ( Int iViewPos, Pel** apiCurVideoPel, Int* aiCurVideoStride, Pel* piCurDepthPel, Int iCurDepthStride ) = 0;
79  virtual Void   setupPart         ( UInt uiHorOffset,       Int iUsedHeight ) = 0;
80
81  virtual Void   setupLut          ( Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight, Int** ppiBaseShiftLutRight, Int iDistToLeft ) = 0;
82  virtual Void   setupRefView      ( TComPicYuv* pcOrgVideo ) = 0;
83
84  virtual Void   renderAll                   ()                     = 0;
85  virtual Void   setStructSynthViewAsRefView ()                     = 0;
86  virtual Void   resetStructError            ()                     = 0;
87  virtual Void   setLimOutStruct             ( Int iSourceViewPos ) = 0; 
88
89  // Set Data
90#if H_3D_VSO_EARLY_SKIP
91  virtual Void   setDepth  ( Int iViewPos,                 Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData, const Pel* piOrgData, Int iOrgStride )  = 0;
92#else
93  virtual Void   setDepth  ( Int iViewPos,                 Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData )  = 0;
94#endif
95  virtual Void   setVideo  ( Int iViewPos,     Int iPlane, Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData ) = 0;
96
97  // Get Distortion
98#if H_3D_VSO_EARLY_SKIP
99  virtual RMDist getDistDepth  ( Int iViewPos,             Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData, const Pel * piOrgData , Int iOrgStride)=0;
100#else
101  virtual RMDist getDistDepth  ( Int iViewPos,             Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData ) = 0;
102#endif
103  virtual RMDist getDistVideo  ( Int iViewPos, Int iPlane, Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData ) = 0;
104
105  virtual Void   getSynthVideo  ( Int iViewPos, TComPicYuv* pcPicYuv ) = 0; 
106  virtual Void   getSynthDepth  ( Int iViewPos, TComPicYuv* pcPicYuv ) = 0;
107  virtual Void   getRefVideo    ( Int iViewPos, TComPicYuv* pcPicYuv ) = 0;
108};
109
110template < BlenMod iBM, Bool bBitInc >
111class TRenSingleModelC : public TRenSingleModel
112{
113  struct RenModelInPels
114  {
115    // video
116    Pel aiY[5]    ; // y-value
117#if H_3D_VSO_COLOR_PLANES
118    Pel aiU[5]    ; // u-value
119    Pel aiV[5]    ; // v-value
120#endif
121    // depth
122    Pel iD        ; // depth
123   Int aiOccludedPos; // Occluded
124
125  };
126
127  struct RenModelLimOutPels
128  {
129    Pel iDOther;
130    Int iFilledOther; 
131    // video
132    Pel iYOther; 
133    Pel iYRef  ; 
134#if H_3D_VSO_COLOR_PLANES
135    Pel iUOther; 
136    Pel iURef  ; 
137    Pel iVOther;
138    Pel iVRef  ; 
139#endif 
140    Int iError ;
141  };
142
143  struct RenModelOutPels
144  {
145    // video
146    Pel iYLeft    ; 
147    Pel iYRight   ; 
148    Pel iYBlended ; 
149#if H_3D_VSO_COLOR_PLANES
150    Pel iULeft    ; 
151    Pel iURight   ; 
152    Pel iUBlended ; 
153    Pel iVLeft    ; 
154    Pel iVRight   ; 
155    Pel iVBlended ; 
156#endif
157    // depth
158    Pel iDLeft    ;
159    Pel iDRight   ; 
160    Pel iDBlended ; 
161
162    // state
163    Int iFilledLeft ; 
164    Int iFilledRight; 
165
166    // error
167    Int  iError   ;
168
169    // reference
170    Pel iYRef    ; 
171#if H_3D_VSO_COLOR_PLANES
172    Pel iURef    ; 
173    Pel iVRef    ; 
174#endif       
175  };
176
177
178
179public:
180  TRenSingleModelC();
181  ~TRenSingleModelC();
182
183  // Create Model
184#if H_3D_VSO_EARLY_SKIP
185  Void   create    ( Int iMode, Int iWidth, Int iHeight, Int iShiftPrec, Int*** aaaiSubPelShiftTable, Int iHoleMargin, Bool bUseOrgRef, Int iBlendMode, Bool bLimOutput, Bool bEarlySkip  );
186#else
187  Void   create    ( Int iMode, Int iWidth, Int iHeight, Int iShiftPrec, Int*** aaaiSubPelShiftTable, Int iHoleMargin, Bool bUseOrgRef, Int iBlendMode, Bool bLimOutput );
188#endif
189
190  // Setup
191  Void   setLRView         ( Int iViewPos, Pel** apiCurVideoPel, Int* aiCurVideoStride, Pel* piCurDepthPel, Int iCurDepthStride ); 
192  Void   setupPart         ( UInt uiHorOffset,       Int uiUsedHeight ); 
193
194  Void   setupLut          (  Int** ppiShiftLutLeft, Int** ppiBaseShiftLutLeft, Int** ppiShiftLutRight, Int** ppiBaseShiftLutRight, Int iDistToLeft);
195  Void   setupRefView      ( TComPicYuv* pcOrgVideo );
196 
197  __inline   Void   renderAll( );
198  Void              setStructSynthViewAsRefView ();
199  Void              resetStructError            ();
200  Void              setLimOutStruct             ( Int iSourceViewPos ); 
201
202
203#if H_3D_VSO_EARLY_SKIP
204  Void   setDepth  ( Int iViewPos,                 Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData, const Pel* piOrgData, Int iOrgStride );
205#else
206  Void   setDepth  ( Int iViewPos,                 Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData );
207#endif
208  Void   setVideo  ( Int iViewPos,     Int iPlane, Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData );
209
210  // Get Distortion
211#if H_3D_VSO_EARLY_SKIP
212  RMDist getDistDepth  ( Int iViewPos,             Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData, const Pel * piOrgData , Int iOrgStride);
213#else
214  RMDist getDistDepth  ( Int iViewPos,             Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData );
215#endif
216  RMDist getDistVideo  ( Int iViewPos, Int iPlane, Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData );
217
218  Void   getSynthVideo  ( Int iViewPos, TComPicYuv* pcPicYuv ); 
219  Void   getSynthDepth  ( Int iViewPos, TComPicYuv* pcPicYuv );
220  Void   getRefVideo    ( Int iViewPos, TComPicYuv* pcPicYuv );
221
222private:
223
224
225#if H_3D_VSO_EARLY_SKIP
226    template < Bool bL, SetMod iSM > RMDist xSetOrGet( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData, Pel* piOrgData, Int iOrgStride );     
227#else
228    template < Bool bL, SetMod iSM > RMDist xSetOrGet( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData );
229#endif
230
231  // Set and inc Current Row
232  template< SetMod bSM  > __inline Void   xSetViewRow(  Int iPosY );
233  template< SetMod bSM  > __inline Void   xIncViewRow();
234
235  /////  Rendering /////
236  template< typename T, Bool bL > __inline T    xPlus   ( T arg1, T arg2 ) { return bL ? (arg1 + arg2) : (arg1 - arg2); };
237  template< typename T, Bool bL > __inline T    xMin    ( T arg1, T arg2 ) { return bL ? std::min(arg1, arg2) : std::max(arg1, arg2) ;};
238  template< typename T, Bool bL > __inline T    xMax    ( T arg1, T arg2 ) { return bL ? std::max(arg1, arg2) : std::min(arg1, arg2) ;};
239  template< typename T, Bool bL > __inline Void xInc    ( T& arg1        ) { bL ? arg1++ : arg1-- ;};
240  template< typename T, Bool bL > __inline Void xDec    ( T& arg1        ) { bL ? arg1-- : arg1++ ;};
241  template< typename T, Bool bL > __inline Bool xLess   ( T arg1, T arg2 ) { return bL ? arg1 <  arg2 : arg1 >  arg2; }; 
242  template< typename T, Bool bL > __inline Bool xGeQ    ( T arg1, T arg2 ) { return bL ? arg1 >= arg2 : arg1 <= arg2; };
243  template<             Bool bL > __inline Int  xZero   (                ) { return bL ? 0 : m_iWidth - 1; };
244  template<             Bool bL > __inline Int  xWidthMinus1(            ) { return bL ? m_iWidth - 1 : 0; };
245#if H_3D_VSO_EARLY_SKIP
246  template<             Bool bL > __inline Bool   xDetectEarlySkip    ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData,const Pel* piOrgData, Int iOrgStride );
247  template< Bool bL, SetMod bSM > __inline RMDist xRender             ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData, Bool bFast );
248  template< SetMod bSM >            __inline RMDist xGetSSE             ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData, Bool bFast );
249#else       
250  template< Bool bL, SetMod bSM  > __inline RMDist xRender             ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData );
251  template<          SetMod bSM  > __inline RMDist xGetSSE             ( Int iStartPosX, Int iStartPosY, Int iWidth, Int iHeight, Int iStride, const Pel* piNewData );
252#endif                         
253  template< Bool bL              > __inline Void   xInitRenderPart    ( Int iEndChangePos, Int iLastSPos  );
254  template< Bool bL, SetMod bSM  > __inline Void   xRenderRange       ( Int iCurSPos, Int iLastSPos, Int iCurPos, RMDist& riError );
255  template< Bool bL, SetMod bSM  > __inline Void   xRenderShiftedRange( Int iCurSPos, Int iLastSPos, Int iCurPos, RMDist& riError );
256  template< Bool bL, SetMod bSM  > __inline Void   xFillHole          ( Int iCurSPos, Int iLastSPos, Int iCurPos, RMDist& riError );
257  template< Bool bL, SetMod bSM  > __inline Void   xExtrapolateMargin ( Int iCurSPos,                Int iCurPos, RMDist& riError );
258  template< Bool bL              > __inline Int    xRangeLeft         ( Int iPos );
259  template< Bool bL              > __inline Int    xRangeRight        ( Int iPos );
260  template< Bool bL              > __inline Int    xRound             ( Int iPos );
261
262#if H_3D_VSO_COLOR_PLANES 
263  template< Bool bL, SetMod bSM > __inline Void   xGetBlendedValue    ( Pel& riY, Pel iYL,  Pel iYR, Pel& riU, Pel iUL,  Pel iUR,  Pel& riV, Pel iVL,  Pel iVR, Int iFilledL,  Int iFilledR, Pel iDepthL,  Pel iDepthR );
264  template< Bool bL, SetMod bSM > __inline Void   xGetBlendedValueBM1 ( Pel& riY, Pel iYL,  Pel iYR, Pel& riU, Pel iUL,  Pel iUR,  Pel& riV, Pel iVL,  Pel iVR, Int iFilledL,  Int iFilledR, Pel iDepthL,  Pel iDepthR );
265  template< Bool bL, SetMod bSM > __inline Void   xGetBlendedValueBM2 ( Pel& riY, Pel iYL,  Pel iYR, Pel& riU, Pel iUL,  Pel iUR,  Pel& riV, Pel iVL,  Pel iVR, Int iFilledL,  Int iFilledR, Pel iDepthL,  Pel iDepthR );
266#else
267  template< Bool bL, SetMod bSM > __inline Void   xGetBlendedValue    ( Pel& riY, Pel iYL,  Pel iYR, Int iFilledL,  Int iFilledR, Pel iDepthL,  Pel iDepthR  );
268  template< Bool bL, SetMod bSM > __inline Void   xGetBlendedValueBM1 ( Pel& riY, Pel iYL,  Pel iYR, Int iFilledL,  Int iFilledR, Pel iDepthL,  Pel iDepthR  );
269  template< Bool bL, SetMod bSM > __inline Void   xGetBlendedValueBM2 ( Pel& riY, Pel iYL,  Pel iYR, Int iFilledL,  Int iFilledR, Pel iDepthL,  Pel iDepthR  );
270#endif
271  __inline Pel    xBlend              ( Pel pVal1, Pel pVal2, Int iWeightVal2 );
272
273  // General
274  template<Bool bL, SetMod bSM> __inline Void xSetShiftedPel       (Int iSourcePos, Int iSubSourcePos, Int iTargetSPos, Pel iFilled, RMDist& riError );
275 
276  template <Bool bL>           __inline Int  xShiftNewData        ( Int iPos, Int iPosInNewData );
277  template <Bool bL>           __inline Int  xShift               ( Int iPos );
278  template <Bool bL>           __inline Int  xShift               ( Int iPos, Int iPosInNewData );
279
280  __inline Int    xShiftDept         ( Int iPosXinSubPel, Int iDepth ); 
281
282  __inline Int    xGetDist           ( Int iDiffY, Int iDiffU, Int iDiffV );
283  __inline Int    xGetDist           ( Int iDiffY );
284
285  // Utilities
286  __inline Void   xSetPels   ( Pel*  piPelSource , Int iSourceStride, Int iWidth, Int iHeight, Pel iVal );
287  __inline Void   xSetBools  ( Bool* pbSource    , Int iSourceStride, Int iWidth, Int iHeight, Bool bVal );
288  __inline Void   xSetInts   ( Int*  piPelSource , Int iSourceStride, Int iWidth, Int iHeight, Int iVal );
289
290#if H_3D_VSO_COLOR_PLANES
291  Void            xGetSampleStrTextPtrs ( Int iViewNum, Pel RenModelOutPels::*& rpiSrcY, Pel RenModelOutPels::*& rpiSrcU, Pel RenModelOutPels::*& rpiSrcV );
292#else 
293  Void            xGetSampleStrTextPtrs ( Int iViewNum, Pel RenModelOutPels::*& rpiSrcY );
294#endif
295  Void            xGetSampleStrDepthPtrs ( Int iViewNum, Pel RenModelOutPels::*& rpiSrcD      );
296  Void            xGetSampleStrFilledPtrs( Int iViewNum, Int RenModelOutPels::*& rpiSrcFilled );
297
298       
299  Void            xSetStructRefView            ();
300  Void            xInitSampleStructs           ();
301  Void            xCopy2PicYuv                ( Pel** ppiSrcVideoPel, Int* piStrides, TComPicYuv* rpcPicYuvTarget );
302
303  template< typename S, typename T> 
304  Void   xCopyFromSampleStruct ( S* ptSource , Int iSourceStride, T S::* ptSourceElement, T* ptTarget, Int iTargetStride, Int iWidth, Int iHeight )
305  {
306    AOT( iWidth != m_iWidth ); 
307    for (Int iPosY = 0; iPosY < iHeight; iPosY++)
308    {
309      for (Int iPosX = 0; iPosX < m_iWidth; iPosX++)
310      {
311        ptTarget[iPosX] = ptSource[iPosX].*ptSourceElement;
312      }
313      ptSource += iSourceStride;
314      ptTarget += iTargetStride;
315    }   
316  } 
317
318  template< typename S, typename T> 
319  Void   xCopyToSampleStruct ( T* ptSource , Int iSourceStride, S* ptTarget, Int iTargetStride, T S::* ptSourceElement, Int iWidth, Int iHeight )
320  {
321    AOT( iWidth != m_iWidth ); 
322    for (Int iPosY = 0; iPosY < iHeight; iPosY++)
323    {
324      for (Int iPosX = 0; iPosX < m_iWidth; iPosX++)
325      {
326        ptTarget[iPosX] = ptSource[iPosX].*ptSourceElement;
327      }
328      ptSource += iSourceStride;
329      ptTarget += iTargetStride;
330    }   
331  }   
332
333private:
334
335  // Image sizes
336  Int   m_iWidth;
337  Int   m_iHeight;
338  Int   m_iStride;
339  Int   m_iPad;
340  Int   m_iUsedHeight;
341  Int   m_iHorOffset; 
342
343  Int   m_iSampledWidth;
344  Int   m_iSampledStride;
345
346  RenModelInPels* m_pcInputSamples[2];
347  Int             m_iInputSamplesStride;
348
349  // Base
350  Pel** m_aapiBaseVideoPel     [2]; // Dim1: ViewPosition 0->Left, 1->Right; Dim2: Plane  0-> Y, 1->U, 2->V
351  Int*  m_aaiBaseVideoStrides  [2]; // Dim1: ViewPosition 0->Left, 1->Right; Dim2: Plane  0-> Y, 1->U, 2->V
352
353  Pel*  m_apiBaseDepthPel      [2]; // Dim1: ViewPosition
354  Int   m_aiBaseDepthStrides   [2]; // Dim1: ViewPosition
355
356
357  // LUT
358  Int** m_appiShiftLut         [2];
359  Int** m_ppiCurLUT;
360  Int** m_aaiSubPelShiftL;
361  Int** m_aaiSubPelShiftR;
362
363  Int*  m_piInvZLUTLeft;
364  Int*  m_piInvZLUTRight;
365
366
367  //// Reference Data  ////
368  TComPicYuv* m_pcPicYuvRef       ;    // Reference PIcYuv
369
370  //// Output Samples
371  RenModelOutPels*      m_pcOutputSamples;
372  RenModelLimOutPels*   m_pcLimOutputSamples; 
373
374  Int                   m_iOutputSamplesStride;
375
376  Pel*  m_aapiRefVideoPel      [3];    // Dim1: Plane  0-> Y, 1->U, 2->V
377  Int   m_aiRefVideoStrides    [3];    // Dim1: Plane  0-> Y, 1->U, 2->V
378
379  // Rendering State
380  Bool  m_bInOcclusion;                // Currently rendering in occluded area
381  Int   m_iLastOccludedSPos;           // Position of last topmost shifted position
382
383  Int   m_curRangeStart; 
384  Int   m_lastRangeStart; 
385
386  const Pel*  m_piNewDepthData;              // Pointer to new depth data
387  Int   m_iStartChangePosX;            // Start Position of new data
388  Int   m_iNewDataWidth;               // Width of new data
389  Pel   m_iCurDepth;                   // Current Depth Value
390  Pel   m_iLastDepth;                  // Last Depth Value
391  Pel   m_iThisDepth;                  // Depth value to use for setting
392
393  //// Settings ////
394  // Input
395  Int   m_iMode;                       // 0: Left to Right, 1: Right to Left, 2: Merge
396  Bool  m_bUseOrgRef;
397  Int   m_iShiftPrec;
398  Int   m_iHoleMargin;
399#if H_3D_VSO_EARLY_SKIP
400  Bool  m_bEarlySkip; 
401#endif
402
403  // Derived settings
404  Int   m_iGapTolerance;
405  Int   m_iBlendZThres;
406  Int   m_iBlendDistWeight;
407
408  //// Current Pointers ////
409
410  RenModelInPels*     m_pcInputSamplesRow [2];
411  RenModelOutPels*    m_pcOutputSamplesRow;
412  RenModelLimOutPels* m_pcLimOutputSamplesRow;
413
414  //// MISC ////
415  const Int m_iDistShift;            // Shift in Distortion computation
416  Bool      m_bLimOutput;            // Save distortion only
417
418  //// Early Skip
419#if H_3D_VSO_EARLY_SKIP
420  Bool* m_pbHorSkip;
421#endif
422};
423
424#endif // H_3D
425#endif //__TRENSINGLEMODEL__
426
427
Note: See TracBrowser for help on using the repository browser.