source: 3DVCSoftware/branches/HTM-15.2-dev/source/Lib/TLibCommon/SEI.h @ 1374

Last change on this file since 1374 was 1374, checked in by tech, 8 years ago

Macro cleanups.

  • Property svn:eol-style set to native
File size: 41.5 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-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
34#ifndef __SEI__
35#define __SEI__
36
37#pragma once
38#include <list>
39#include <vector>
40#include <cstring>
41
42#include "CommonDef.h"
43#include "libmd5/MD5.h"
44
45
46#if NH_MV
47#include "TAppCommon/program_options_lite.h"
48using namespace std;
49namespace po = df::program_options_lite;
50#endif
51
52//! \ingroup TLibCommon
53//! \{
54class TComSPS;
55#if NH_MV
56class TComSlice;
57class SEIScalableNesting;
58#endif
59
60/**
61 * Abstract class representing an SEI message with lightweight RTTI.
62 */
63class SEI
64{
65public:
66  enum PayloadType
67  {
68    BUFFERING_PERIOD                     = 0,
69    PICTURE_TIMING                       = 1,
70    PAN_SCAN_RECT                        = 2,
71    FILLER_PAYLOAD                       = 3,
72    USER_DATA_REGISTERED_ITU_T_T35       = 4,
73    USER_DATA_UNREGISTERED               = 5,
74    RECOVERY_POINT                       = 6,
75    SCENE_INFO                           = 9,
76    FULL_FRAME_SNAPSHOT                  = 15,
77    PROGRESSIVE_REFINEMENT_SEGMENT_START = 16,
78    PROGRESSIVE_REFINEMENT_SEGMENT_END   = 17,
79    FILM_GRAIN_CHARACTERISTICS           = 19,
80    POST_FILTER_HINT                     = 22,
81    TONE_MAPPING_INFO                    = 23,
82    FRAME_PACKING                        = 45,
83    DISPLAY_ORIENTATION                  = 47,
84    SOP_DESCRIPTION                      = 128,
85    ACTIVE_PARAMETER_SETS                = 129,
86    DECODING_UNIT_INFO                   = 130,
87    TEMPORAL_LEVEL0_INDEX                = 131,
88    DECODED_PICTURE_HASH                 = 132,
89    SCALABLE_NESTING                     = 133,
90    REGION_REFRESH_INFO                  = 134,
91    NO_DISPLAY                           = 135,
92    TIME_CODE                            = 136,
93    MASTERING_DISPLAY_COLOUR_VOLUME      = 137,
94    SEGM_RECT_FRAME_PACKING              = 138,
95    TEMP_MOTION_CONSTRAINED_TILE_SETS    = 139,
96    CHROMA_RESAMPLING_FILTER_HINT        = 140,
97    KNEE_FUNCTION_INFO                   = 141,
98    COLOUR_REMAPPING_INFO                = 142,
99    DEINTERLACED_FIELD_IDENTIFICATION         = 143,
100    LAYERS_NOT_PRESENT                        = 160,
101    INTER_LAYER_CONSTRAINED_TILE_SETS         = 161,
102    BSP_NESTING                               = 162,
103    BSP_INITIAL_ARRIVAL_TIME                  = 163,
104    SUB_BITSTREAM_PROPERTY                    = 164,
105    ALPHA_CHANNEL_INFO                        = 165,
106    OVERLAY_INFO                              = 166,
107    TEMPORAL_MV_PREDICTION_CONSTRAINTS        = 167,
108    FRAME_FIELD_INFO                          = 168,
109    THREE_DIMENSIONAL_REFERENCE_DISPLAYS_INFO = 176,
110    DEPTH_REPRESENTATION_INFO                 = 177,
111    MULTIVIEW_SCENE_INFO                      = 178,
112    MULTIVIEW_ACQUISITION_INFO                = 179,
113    MULTIVIEW_VIEW_POSITION                   = 180
114#if NH_3D
115    ,ALTERNATIVE_DEPTH_INFO                    = 181
116#endif
117
118  };
119
120#if NH_MV
121  SEI();
122#else
123  SEI() {}
124#endif
125
126
127  virtual ~SEI() {}
128
129  static const TChar *getSEIMessageString(SEI::PayloadType payloadType);
130
131  virtual PayloadType payloadType() const = 0;
132
133#if NH_MV
134  virtual SEI*       getCopy( ) const;
135  static SEI*        getNewSEIMessage         ( SEI::PayloadType payloadType );
136  Bool               insertSei                ( Int curLayerId, Int curPoc, Int curTid, Int curNaluType ) const;
137
138
139  virtual Void       setupFromSlice           ( const TComSlice* slice );
140  virtual Void       setupFromCfgFile         ( const TChar*   cfgFile );
141  virtual Bool       checkCfg                 ( const TComSlice* slice   );
142
143  Void               xPrintCfgErrorIntro();
144  Void               xCheckCfgRange           ( Bool& wrongConfig, Int val, Int minVal, Int maxVal, const TChar* seName );
145  Void               xCheckCfg                ( Bool& wrongConfig, Bool cond, const TChar* errStr );
146  Void               xAddGeneralOpts          ( po::Options &opts, IntAry1d defAppLayerIds, IntAry1d defAppPocs, IntAry1d defAppTids, IntAry1d defAppVclNaluTypes,
147                                                Int defSeiNaluId, Int defPositionInSeiNalu, Bool defModifyByEncoder );
148    // Filters where to insert SEI in the bitstream.
149  // When the respected vector is empty, all layersIds, POCs, Tids, and Nalu types are used.
150  IntAry1d                       m_applicableLayerIds;
151  IntAry1d                       m_applicablePocs;
152  IntAry1d                       m_applicableTids;
153  IntAry1d                       m_applicableVclNaluTypes;
154
155  Int                            m_payloadType;              // Payload type
156  Int                            m_seiNaluId;                // Identifies to which NAL unit  the SEI is added.
157  Int                            m_positionInSeiNalu;        // Identifies the order within the NAL unit
158  Bool                           m_modifyByEncoder;          // Don't use the SEI cfg-file, but let let the encoder setup the NALU.
159
160  SEIScalableNesting*            m_scalNestSeiContThisSei;   // Pointer to scalable nesting SEI containing the SEI. When NULL, the SEI is not nested.
161#endif
162};
163
164static const UInt ISO_IEC_11578_LEN=16;
165
166class SEIuserDataUnregistered : public SEI
167{
168public:
169  PayloadType payloadType() const { return USER_DATA_UNREGISTERED; }
170
171  SEIuserDataUnregistered()
172    : userData(0)
173    {}
174
175  virtual ~SEIuserDataUnregistered()
176  {
177    delete userData;
178  }
179
180  UChar uuid_iso_iec_11578[ISO_IEC_11578_LEN];
181  UInt  userDataLength;
182  UChar *userData;
183};
184
185class SEIDecodedPictureHash : public SEI
186{
187public:
188  PayloadType payloadType() const { return DECODED_PICTURE_HASH; }
189
190  SEIDecodedPictureHash() {}
191  virtual ~SEIDecodedPictureHash() {}
192
193  HashType method;
194
195  TComPictureHash m_pictureHash;
196};
197
198class SEIActiveParameterSets : public SEI
199{
200public:
201  PayloadType payloadType() const { return ACTIVE_PARAMETER_SETS; }
202
203  SEIActiveParameterSets()
204    : activeVPSId            (0)
205    , m_selfContainedCvsFlag (false)
206    , m_noParameterSetUpdateFlag (false)
207    , numSpsIdsMinus1        (0)
208  {}
209  virtual ~SEIActiveParameterSets() {}
210
211  Int activeVPSId;
212  Bool m_selfContainedCvsFlag;
213  Bool m_noParameterSetUpdateFlag;
214  Int numSpsIdsMinus1;
215  std::vector<Int> activeSeqParameterSetId;
216};
217
218class SEIBufferingPeriod : public SEI
219{
220public:
221  PayloadType payloadType() const { return BUFFERING_PERIOD; }
222  void copyTo (SEIBufferingPeriod& target);
223
224  SEIBufferingPeriod()
225  : m_bpSeqParameterSetId (0)
226  , m_rapCpbParamsPresentFlag (false)
227  , m_cpbDelayOffset      (0)
228  , m_dpbDelayOffset      (0)
229  {
230    ::memset(m_initialCpbRemovalDelay, 0, sizeof(m_initialCpbRemovalDelay));
231    ::memset(m_initialCpbRemovalDelayOffset, 0, sizeof(m_initialCpbRemovalDelayOffset));
232    ::memset(m_initialAltCpbRemovalDelay, 0, sizeof(m_initialAltCpbRemovalDelay));
233    ::memset(m_initialAltCpbRemovalDelayOffset, 0, sizeof(m_initialAltCpbRemovalDelayOffset));
234  }
235  virtual ~SEIBufferingPeriod() {}
236
237  UInt m_bpSeqParameterSetId;
238  Bool m_rapCpbParamsPresentFlag;
239  UInt m_cpbDelayOffset;
240  UInt m_dpbDelayOffset;
241  UInt m_initialCpbRemovalDelay         [MAX_CPB_CNT][2];
242  UInt m_initialCpbRemovalDelayOffset   [MAX_CPB_CNT][2];
243  UInt m_initialAltCpbRemovalDelay      [MAX_CPB_CNT][2];
244  UInt m_initialAltCpbRemovalDelayOffset[MAX_CPB_CNT][2];
245  Bool m_concatenationFlag;
246  UInt m_auCpbRemovalDelayDelta;
247};
248class SEIPictureTiming : public SEI
249{
250public:
251  PayloadType payloadType() const { return PICTURE_TIMING; }
252  void copyTo (SEIPictureTiming& target);
253
254  SEIPictureTiming()
255  : m_picStruct               (0)
256  , m_sourceScanType          (0)
257  , m_duplicateFlag           (false)
258  , m_picDpbOutputDuDelay     (0)
259  {}
260  virtual ~SEIPictureTiming()
261  {
262  }
263
264  UInt  m_picStruct;
265  UInt  m_sourceScanType;
266  Bool  m_duplicateFlag;
267
268  UInt  m_auCpbRemovalDelay;
269  UInt  m_picDpbOutputDelay;
270  UInt  m_picDpbOutputDuDelay;
271  UInt  m_numDecodingUnitsMinus1;
272  Bool  m_duCommonCpbRemovalDelayFlag;
273  UInt  m_duCommonCpbRemovalDelayMinus1;
274  std::vector<UInt> m_numNalusInDuMinus1;
275  std::vector<UInt> m_duCpbRemovalDelayMinus1;
276};
277
278class SEIDecodingUnitInfo : public SEI
279{
280public:
281  PayloadType payloadType() const { return DECODING_UNIT_INFO; }
282
283  SEIDecodingUnitInfo()
284    : m_decodingUnitIdx(0)
285    , m_duSptCpbRemovalDelay(0)
286    , m_dpbOutputDuDelayPresentFlag(false)
287    , m_picSptDpbOutputDuDelay(0)
288  {}
289  virtual ~SEIDecodingUnitInfo() {}
290  Int m_decodingUnitIdx;
291  Int m_duSptCpbRemovalDelay;
292  Bool m_dpbOutputDuDelayPresentFlag;
293  Int m_picSptDpbOutputDuDelay;
294};
295
296class SEIRecoveryPoint : public SEI
297{
298public:
299  PayloadType payloadType() const { return RECOVERY_POINT; }
300
301  SEIRecoveryPoint() {}
302  virtual ~SEIRecoveryPoint() {}
303
304  Int  m_recoveryPocCnt;
305  Bool m_exactMatchingFlag;
306  Bool m_brokenLinkFlag;
307};
308
309class SEIFramePacking : public SEI
310{
311public:
312  PayloadType payloadType() const { return FRAME_PACKING; }
313
314  SEIFramePacking() {}
315  virtual ~SEIFramePacking() {}
316
317  Int  m_arrangementId;
318  Bool m_arrangementCancelFlag;
319  Int  m_arrangementType;
320  Bool m_quincunxSamplingFlag;
321  Int  m_contentInterpretationType;
322  Bool m_spatialFlippingFlag;
323  Bool m_frame0FlippedFlag;
324  Bool m_fieldViewsFlag;
325  Bool m_currentFrameIsFrame0Flag;
326  Bool m_frame0SelfContainedFlag;
327  Bool m_frame1SelfContainedFlag;
328  Int  m_frame0GridPositionX;
329  Int  m_frame0GridPositionY;
330  Int  m_frame1GridPositionX;
331  Int  m_frame1GridPositionY;
332  Int  m_arrangementReservedByte;
333  Bool m_arrangementPersistenceFlag;
334  Bool m_upsampledAspectRatio;
335};
336
337class SEISegmentedRectFramePacking : public SEI
338{
339public:
340  PayloadType payloadType() const { return SEGM_RECT_FRAME_PACKING; }
341
342  SEISegmentedRectFramePacking() {}
343  virtual ~SEISegmentedRectFramePacking() {}
344
345  Bool m_arrangementCancelFlag;
346  Int  m_contentInterpretationType;
347  Bool m_arrangementPersistenceFlag;
348};
349
350class SEIDisplayOrientation : public SEI
351{
352public:
353  PayloadType payloadType() const { return DISPLAY_ORIENTATION; }
354
355  SEIDisplayOrientation()
356    : cancelFlag(true)
357    , persistenceFlag(0)
358    , extensionFlag(false)
359    {}
360  virtual ~SEIDisplayOrientation() {}
361
362  Bool cancelFlag;
363  Bool horFlip;
364  Bool verFlip;
365
366  UInt anticlockwiseRotation;
367  Bool persistenceFlag;
368  Bool extensionFlag;
369};
370
371class SEITemporalLevel0Index : public SEI
372{
373public:
374  PayloadType payloadType() const { return TEMPORAL_LEVEL0_INDEX; }
375
376  SEITemporalLevel0Index()
377    : tl0Idx(0)
378    , rapIdx(0)
379    {}
380  virtual ~SEITemporalLevel0Index() {}
381
382  UInt tl0Idx;
383  UInt rapIdx;
384};
385
386class SEIGradualDecodingRefreshInfo : public SEI
387{
388public:
389  PayloadType payloadType() const { return REGION_REFRESH_INFO; }
390
391  SEIGradualDecodingRefreshInfo()
392    : m_gdrForegroundFlag(0)
393  {}
394  virtual ~SEIGradualDecodingRefreshInfo() {}
395
396  Bool m_gdrForegroundFlag;
397};
398
399class SEINoDisplay : public SEI
400{
401public:
402  PayloadType payloadType() const { return NO_DISPLAY; }
403
404  SEINoDisplay()
405    : m_noDisplay(false)
406  {}
407  virtual ~SEINoDisplay() {}
408
409  Bool m_noDisplay;
410};
411
412class SEISOPDescription : public SEI
413{
414public:
415  PayloadType payloadType() const { return SOP_DESCRIPTION; }
416
417  SEISOPDescription() {}
418  virtual ~SEISOPDescription() {}
419
420  UInt m_sopSeqParameterSetId;
421  UInt m_numPicsInSopMinus1;
422
423  UInt m_sopDescVclNaluType[MAX_NUM_PICS_IN_SOP];
424  UInt m_sopDescTemporalId[MAX_NUM_PICS_IN_SOP];
425  UInt m_sopDescStRpsIdx[MAX_NUM_PICS_IN_SOP];
426  Int m_sopDescPocDelta[MAX_NUM_PICS_IN_SOP];
427};
428
429class SEIToneMappingInfo : public SEI
430{
431public:
432  PayloadType payloadType() const { return TONE_MAPPING_INFO; }
433  SEIToneMappingInfo() {}
434  virtual ~SEIToneMappingInfo() {}
435
436  Int    m_toneMapId;
437  Bool   m_toneMapCancelFlag;
438  Bool   m_toneMapPersistenceFlag;
439  Int    m_codedDataBitDepth;
440  Int    m_targetBitDepth;
441  Int    m_modelId;
442  Int    m_minValue;
443  Int    m_maxValue;
444  Int    m_sigmoidMidpoint;
445  Int    m_sigmoidWidth;
446  std::vector<Int> m_startOfCodedInterval;
447  Int    m_numPivots;
448  std::vector<Int> m_codedPivotValue;
449  std::vector<Int> m_targetPivotValue;
450  Int    m_cameraIsoSpeedIdc;
451  Int    m_cameraIsoSpeedValue;
452  Int    m_exposureIndexIdc;
453  Int    m_exposureIndexValue;
454  Bool   m_exposureCompensationValueSignFlag;
455  Int    m_exposureCompensationValueNumerator;
456  Int    m_exposureCompensationValueDenomIdc;
457  Int    m_refScreenLuminanceWhite;
458  Int    m_extendedRangeWhiteLevel;
459  Int    m_nominalBlackLevelLumaCodeValue;
460  Int    m_nominalWhiteLevelLumaCodeValue;
461  Int    m_extendedWhiteLevelLumaCodeValue;
462};
463
464class SEIKneeFunctionInfo : public SEI
465{
466public:
467  PayloadType payloadType() const { return KNEE_FUNCTION_INFO; }
468  SEIKneeFunctionInfo() {}
469  virtual ~SEIKneeFunctionInfo() {}
470
471  Int   m_kneeId;
472  Bool  m_kneeCancelFlag;
473  Bool  m_kneePersistenceFlag;
474  Int   m_kneeInputDrange;
475  Int   m_kneeInputDispLuminance;
476  Int   m_kneeOutputDrange;
477  Int   m_kneeOutputDispLuminance;
478  Int   m_kneeNumKneePointsMinus1;
479  std::vector<Int> m_kneeInputKneePoint;
480  std::vector<Int> m_kneeOutputKneePoint;
481};
482
483class SEIColourRemappingInfo : public SEI
484{
485public:
486
487  struct CRIlut
488  {
489    Int codedValue;
490    Int targetValue;
491    bool operator < (const CRIlut& a) const
492    {
493      return codedValue < a.codedValue;
494    }
495  };
496
497  PayloadType payloadType() const { return COLOUR_REMAPPING_INFO; }
498  SEIColourRemappingInfo() {}
499  ~SEIColourRemappingInfo() {}
500
501  Void copyFrom( const SEIColourRemappingInfo &seiCriInput)
502      {
503    (*this) = seiCriInput;
504  }
505
506  UInt                m_colourRemapId;
507  Bool                m_colourRemapCancelFlag;
508  Bool                m_colourRemapPersistenceFlag;
509  Bool                m_colourRemapVideoSignalInfoPresentFlag;
510  Bool                m_colourRemapFullRangeFlag;
511  Int                 m_colourRemapPrimaries;
512  Int                 m_colourRemapTransferFunction;
513  Int                 m_colourRemapMatrixCoefficients;
514  Int                 m_colourRemapInputBitDepth;
515  Int                 m_colourRemapBitDepth;
516  Int                 m_preLutNumValMinus1[3];
517  std::vector<CRIlut> m_preLut[3];
518  Bool                m_colourRemapMatrixPresentFlag;
519  Int                 m_log2MatrixDenom;
520  Int                 m_colourRemapCoeffs[3][3];
521  Int                 m_postLutNumValMinus1[3];
522  std::vector<CRIlut> m_postLut[3];
523};
524
525class SEIChromaResamplingFilterHint : public SEI
526{
527public:
528  PayloadType payloadType() const {return CHROMA_RESAMPLING_FILTER_HINT;}
529  SEIChromaResamplingFilterHint() {}
530  virtual ~SEIChromaResamplingFilterHint() {}
531
532  Int   m_verChromaFilterIdc;
533  Int   m_horChromaFilterIdc;
534  Bool                           m_verFilteringFieldProcessingFlag;
535  Int   m_targetFormatIdc;
536  Bool  m_perfectReconstructionFlag;
537  std::vector<std::vector<Int> > m_verFilterCoeff;
538  std::vector<std::vector<Int> > m_horFilterCoeff;
539};
540
541class SEIMasteringDisplayColourVolume : public SEI
542{
543public:
544    PayloadType payloadType() const { return MASTERING_DISPLAY_COLOUR_VOLUME; }
545    SEIMasteringDisplayColourVolume() {}
546    virtual ~SEIMasteringDisplayColourVolume(){}
547
548    TComSEIMasteringDisplay values;
549};
550
551typedef std::list<SEI*> SEIMessages;
552
553/// output a selection of SEI messages by payload type. Ownership stays in original message list.
554SEIMessages getSeisByType(SEIMessages &seiList, SEI::PayloadType seiType);
555
556/// remove a selection of SEI messages by payload type from the original list and return them in a new list.
557SEIMessages extractSeisByType(SEIMessages &seiList, SEI::PayloadType seiType);
558
559/// delete list of SEI messages (freeing the referenced objects)
560Void deleteSEIs (SEIMessages &seiList);
561
562class SEIScalableNesting : public SEI
563{
564public:
565  PayloadType payloadType() const { return SCALABLE_NESTING; }
566
567  SEIScalableNesting() {}
568
569  virtual ~SEIScalableNesting()
570  {
571    deleteSEIs(m_nestedSEIs);
572  }
573
574  Bool  m_bitStreamSubsetFlag;
575  Bool  m_nestingOpFlag;
576  Bool  m_defaultOpFlag;                             //value valid if m_nestingOpFlag != 0
577  UInt  m_nestingNumOpsMinus1;                       // -"-
578  UInt  m_nestingMaxTemporalIdPlus1[MAX_TLAYER];     // -"-
579  UInt  m_nestingOpIdx[MAX_NESTING_NUM_OPS];         // -"-
580
581  Bool  m_allLayersFlag;                             //value valid if m_nestingOpFlag == 0
582  UInt  m_nestingNoOpMaxTemporalIdPlus1;             //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0
583  UInt  m_nestingNumLayersMinus1;                    //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0
584  UChar m_nestingLayerId[MAX_NESTING_NUM_LAYER];     //value valid if m_nestingOpFlag == 0 and m_allLayersFlag == 0. This can e.g. be a static array of 64 UChar values
585
586  SEIMessages m_nestedSEIs;
587};
588
589class SEITimeCode : public SEI
590{
591public:
592  PayloadType payloadType() const { return TIME_CODE; }
593  SEITimeCode() {}
594  virtual ~SEITimeCode(){}
595
596  UInt numClockTs;
597  TComSEITimeSet timeSetArray[MAX_TIMECODE_SEI_SETS];
598};
599
600//definition according to P1005_v1;
601class SEITempMotionConstrainedTileSets: public SEI
602{
603  struct TileSetData
604  {
605    protected:
606      std::vector<Int> m_top_left_tile_index;  //[tileSetIdx][tileIdx];
607      std::vector<Int> m_bottom_right_tile_index;
608
609    public:
610      Int     m_mcts_id;
611      Bool    m_display_tile_set_flag;
612      Int     m_num_tile_rects_in_set; //_minus1;
613      Bool    m_exact_sample_value_match_flag;
614      Bool    m_mcts_tier_level_idc_present_flag;
615      Bool    m_mcts_tier_flag;
616      Int     m_mcts_level_idc;
617
618      Void setNumberOfTileRects(const Int number)
619      {
620        m_top_left_tile_index    .resize(number);
621        m_bottom_right_tile_index.resize(number);
622      }
623
624      Int  getNumberOfTileRects() const
625      {
626        assert(m_top_left_tile_index.size() == m_bottom_right_tile_index.size());
627        return Int(m_top_left_tile_index.size());
628      }
629
630            Int &topLeftTileIndex    (const Int tileRectIndex)       { return m_top_left_tile_index    [tileRectIndex]; }
631            Int &bottomRightTileIndex(const Int tileRectIndex)       { return m_bottom_right_tile_index[tileRectIndex]; }
632      const Int &topLeftTileIndex    (const Int tileRectIndex) const { return m_top_left_tile_index    [tileRectIndex]; }
633      const Int &bottomRightTileIndex(const Int tileRectIndex) const { return m_bottom_right_tile_index[tileRectIndex]; }
634  };
635
636protected:
637  std::vector<TileSetData> m_tile_set_data;
638
639public:
640
641  Bool    m_mc_all_tiles_exact_sample_value_match_flag;
642  Bool    m_each_tile_one_tile_set_flag;
643  Bool    m_limited_tile_set_display_flag;
644  Bool    m_max_mcs_tier_level_idc_present_flag;
645  Bool    m_max_mcts_tier_flag;
646  Int     m_max_mcts_level_idc;
647
648  PayloadType payloadType() const { return TEMP_MOTION_CONSTRAINED_TILE_SETS; }
649
650  Void setNumberOfTileSets(const Int number)       { m_tile_set_data.resize(number);     }
651  Int  getNumberOfTileSets()                 const { return Int(m_tile_set_data.size()); }
652
653        TileSetData &tileSetData (const Int index)       { return m_tile_set_data[index]; }
654  const TileSetData &tileSetData (const Int index) const { return m_tile_set_data[index]; }
655
656};
657#if NH_MV
658class SEILayersNotPresent : public SEI
659{
660public:
661  PayloadType payloadType( ) const { return LAYERS_NOT_PRESENT; }
662  SEILayersNotPresent ( ) { };
663  ~SEILayersNotPresent( ) { };
664  SEI* getCopy( ) const { return new SEILayersNotPresent(*this); };
665
666  Void setupFromCfgFile( const TChar*     cfgFile );
667  Bool checkCfg        ( const TComSlice* slice   );
668
669  Int       m_lnpSeiActiveVpsId;
670  UInt      m_lnpSeiMaxLayers;
671  BoolAry1d m_layerNotPresentFlag;
672
673  Void resizeDimI( Int sizeDimI )
674  {
675    m_layerNotPresentFlag.resize( sizeDimI );
676  }
677};
678
679class SEIInterLayerConstrainedTileSets : public SEI
680{
681public:
682  PayloadType payloadType( ) const { return INTER_LAYER_CONSTRAINED_TILE_SETS; }
683  SEIInterLayerConstrainedTileSets ( ) { };
684  ~SEIInterLayerConstrainedTileSets( ) { };
685  SEI* getCopy( ) const { return new SEIInterLayerConstrainedTileSets(*this); };
686
687  Void setupFromCfgFile( const TChar*     cfgFile );
688  Bool checkCfg        ( const TComSlice* slice   );
689
690  Bool      m_ilAllTilesExactSampleValueMatchFlag;
691  Bool      m_ilOneTilePerTileSetFlag;
692  Int       m_ilNumSetsInMessageMinus1;
693  Bool      m_skippedTileSetPresentFlag;
694  IntAry1d  m_ilctsId;
695  IntAry1d  m_ilNumTileRectsInSetMinus1;
696  IntAry2d  m_ilTopLeftTileIndex;
697  IntAry2d  m_ilBottomRightTileIndex;
698  IntAry1d  m_ilcIdc;
699  BoolAry1d m_ilExactSampleValueMatchFlag;
700  Int       m_allTilesIlcIdc;
701
702  Void      resizeDimI( Int sizeDimI )
703  {
704    m_ilctsId                    .resize( sizeDimI );
705    m_ilNumTileRectsInSetMinus1  .resize( sizeDimI );
706    m_ilTopLeftTileIndex         .resize( sizeDimI );
707    m_ilBottomRightTileIndex     .resize( sizeDimI );
708    m_ilcIdc                     .resize( sizeDimI );
709    m_ilExactSampleValueMatchFlag.resize( sizeDimI );
710  }
711
712  Void      resizeDimJ( Int i, Int sizeDimJ )
713  {
714    m_ilTopLeftTileIndex    [i].resize( sizeDimJ );
715    m_ilBottomRightTileIndex[i].resize( sizeDimJ );
716  }
717
718};
719
720#if NH_MV_TBD
721class SEIBspNesting : public SEI
722{
723public:
724  PayloadType payloadType( ) const { return BSP_NESTING; }
725  SEIBspNesting ( ) { };
726  ~SEIBspNesting( ) { };
727  SEI* getCopy( ) const { return new SEIBspNesting(*this); };
728
729  Void setupFromCfgFile( const TChar*      cfgFile );
730  Void setupFromSlice  ( const TComSlice* slice   );
731  Bool checkCfg        ( const TComSlice* slice   );
732
733  Int       m_seiOlsIdx;
734  Int       m_seiPartitioningSchemeIdx;
735  Int       m_bspIdx;
736  Int       m_bspNestingZeroBit;
737  Int       m_numSeisInBspMinus1;
738};
739
740class SEIBspInitialArrivalTime : public SEI
741{
742public:
743  PayloadType payloadType( ) const { return BSP_INITIAL_ARRIVAL_TIME; }
744  SEIBspInitialArrivalTime ( ) { };
745  ~SEIBspInitialArrivalTime( ) { };
746  SEI* getCopy( ) const { return new SEIBspInitialArrivalTime(*this); };
747
748  Void setupFromCfgFile( const TChar*      cfgFile );
749  Void setupFromSlice  ( const TComSlice* slice   );
750  Bool checkCfg        ( const TComSlice* slice   );
751
752  IntAry1d  m_nalInitialArrivalDelay;
753  IntAry1d  m_vclInitialArrivalDelay;
754};
755#endif
756
757class SEISubBitstreamProperty : public SEI
758{
759public:
760  PayloadType payloadType( ) const { return SUB_BITSTREAM_PROPERTY; }
761  SEISubBitstreamProperty ( ) { };
762  ~SEISubBitstreamProperty( ) { };
763  SEI* getCopy( ) const { return new SEISubBitstreamProperty(*this); };
764
765  Void setupFromCfgFile( const TChar*     cfgFile );
766  Bool checkCfg        ( const TComSlice* slice   );
767  Void resizeArrays    ( );
768
769  Int       m_sbPropertyActiveVpsId;
770  Int       m_numAdditionalSubStreamsMinus1;
771  IntAry1d  m_subBitstreamMode;
772  IntAry1d  m_olsIdxToVps;
773  IntAry1d  m_highestSublayerId;
774  IntAry1d  m_avgSbPropertyBitRate;
775  IntAry1d  m_maxSbPropertyBitRate;
776};
777
778class SEIAlphaChannelInfo : public SEI
779{
780public:
781  PayloadType payloadType( ) const { return ALPHA_CHANNEL_INFO; }
782  SEIAlphaChannelInfo ( ) { };
783  ~SEIAlphaChannelInfo( ) { };
784  SEI* getCopy( ) const { return new SEIAlphaChannelInfo(*this); };
785
786  Void setupFromCfgFile( const TChar*     cfgFile );
787  Bool checkCfg        ( const TComSlice* slice   );
788
789  Bool      m_alphaChannelCancelFlag;
790  Int       m_alphaChannelUseIdc;
791  Int       m_alphaChannelBitDepthMinus8;
792  Int       m_alphaTransparentValue;
793  Int       m_alphaOpaqueValue;
794  Bool      m_alphaChannelIncrFlag;
795  Bool      m_alphaChannelClipFlag;
796  Bool      m_alphaChannelClipTypeFlag;
797};
798
799class SEIOverlayInfo : public SEI
800{
801public:
802  PayloadType payloadType( ) const { return OVERLAY_INFO; }
803  SEIOverlayInfo ( );
804  ~SEIOverlayInfo( ) { };
805  SEI* getCopy( ) const { return new SEIOverlayInfo(*this); };
806
807  Void setupFromCfgFile( const TChar*     cfgFile );
808  Bool checkCfg        ( const TComSlice* slice   );
809
810  const Int m_numOverlaysMax;
811  const Int m_numOverlayElementsMax;
812  const Int m_numStringBytesMax;  //incl. null termination byte
813
814  Bool      m_overlayInfoCancelFlag;
815  Int       m_overlayContentAuxIdMinus128;
816  Int       m_overlayLabelAuxIdMinus128;
817  Int       m_overlayAlphaAuxIdMinus128;
818  Int       m_overlayElementLabelValueLengthMinus8;
819  Int       m_numOverlaysMinus1;
820  IntAry1d  m_overlayIdx;
821  BoolAry1d m_languageOverlayPresentFlag;
822  IntAry1d  m_overlayContentLayerId;
823  BoolAry1d m_overlayLabelPresentFlag;
824  IntAry1d  m_overlayLabelLayerId;
825  BoolAry1d m_overlayAlphaPresentFlag;
826  IntAry1d  m_overlayAlphaLayerId;
827  IntAry1d  m_numOverlayElementsMinus1;
828  IntAry2d  m_overlayElementLabelMin;
829  IntAry2d  m_overlayElementLabelMax;
830  StringAry1d  m_overlayLanguage;
831  StringAry1d  m_overlayName;
832  StringAry2d  m_overlayElementName;
833  Bool      m_overlayInfoPersistenceFlag;
834};
835
836class SEITemporalMvPredictionConstraints : public SEI
837{
838public:
839  PayloadType payloadType( ) const { return TEMPORAL_MV_PREDICTION_CONSTRAINTS; }
840  SEITemporalMvPredictionConstraints ( ) { };
841  ~SEITemporalMvPredictionConstraints( ) { };
842  SEI* getCopy( ) const { return new SEITemporalMvPredictionConstraints(*this); };
843
844  Void setupFromCfgFile( const TChar*     cfgFile );
845  Bool checkCfg        ( const TComSlice* slice   );
846
847  Bool      m_prevPicsNotUsedFlag;
848  Bool      m_noIntraLayerColPicFlag;
849};
850
851#if NH_MV_SEI_TBD
852class SEIFrameFieldInfo : public SEI
853{
854public:
855  PayloadType payloadType( ) const { return FRAME_FIELD_INFO; }
856  SEIFrameFieldInfo ( ) { };
857  ~SEIFrameFieldInfo( ) { };
858  SEI* getCopy( ) const { return new SEIFrameFieldInfo(*this); };
859
860  Void setupFromCfgFile( const TChar*     cfgFile );
861  Void setupFromSlice  ( const TComSlice* slice   );
862  Bool checkCfg        ( const TComSlice* slice   );
863
864  Int       m_ffinfoPicStruct;
865  Int       m_ffinfoSourceScanType;
866  Bool      m_ffinfoDuplicateFlag;
867};
868#endif
869
870class SEIThreeDimensionalReferenceDisplaysInfo : public SEI
871{
872public:
873  PayloadType payloadType( ) const { return THREE_DIMENSIONAL_REFERENCE_DISPLAYS_INFO; }
874  SEIThreeDimensionalReferenceDisplaysInfo ( ) { };
875  ~SEIThreeDimensionalReferenceDisplaysInfo( ) { };
876  SEI* getCopy( ) const { return new SEIThreeDimensionalReferenceDisplaysInfo(*this); };
877
878  Void setupFromCfgFile( const TChar*     cfgFile );
879  Bool checkCfg        ( const TComSlice* slice   );
880
881  Int getNumRefDisplaysMinus1( ) const
882  {
883    return m_numRefDisplaysMinus1;
884  }
885
886  Int       m_precRefDisplayWidth;
887  Bool      m_refViewingDistanceFlag;
888  Int       m_precRefViewingDist;
889  Int       m_numRefDisplaysMinus1;
890  IntAry1d  m_leftViewId;
891  IntAry1d  m_rightViewId;
892  IntAry1d  m_exponentRefDisplayWidth;
893  IntAry1d  m_mantissaRefDisplayWidth;
894  IntAry1d  m_exponentRefViewingDistance;
895  IntAry1d  m_mantissaRefViewingDistance;
896  BoolAry1d m_additionalShiftPresentFlag;
897  IntAry1d  m_numSampleShiftPlus512;
898  Bool      m_threeDimensionalReferenceDisplaysExtensionFlag;
899
900  Void resizeArrays( )
901  {
902    Int numReferenceDiaplays = getNumRefDisplaysMinus1() + 1;
903
904    m_leftViewId    .resize( numReferenceDiaplays );
905    m_rightViewId   .resize( numReferenceDiaplays );
906    m_exponentRefDisplayWidth      .resize( numReferenceDiaplays );
907    m_mantissaRefDisplayWidth      .resize( numReferenceDiaplays );
908    m_exponentRefViewingDistance   .resize( numReferenceDiaplays );
909    m_mantissaRefViewingDistance   .resize( numReferenceDiaplays );
910    m_additionalShiftPresentFlag   .resize( numReferenceDiaplays );
911    m_numSampleShiftPlus512        .resize( numReferenceDiaplays );
912  }
913
914  UInt getMantissaReferenceDisplayWidthLen  ( Int i ) const ;
915  UInt getMantissaReferenceViewingDistanceLen  ( Int i ) const ;
916private:
917  UInt xGetSyntaxElementLen( Int expo, Int prec, Int val ) const;
918};
919
920class SEIDepthRepresentationInfo : public SEI
921{
922    public:
923        PayloadType payloadType( ) const { return DEPTH_REPRESENTATION_INFO; }
924        SEIDepthRepresentationInfo ( )
925        {
926            m_currLayerID=-1;
927        };
928        ~SEIDepthRepresentationInfo( ) { };
929        SEI* getCopy( ) const { return new SEIDepthRepresentationInfo(*this); };
930
931        Void setupFromCfgFile( const TChar*     cfgFile );
932        Void setupFromSlice  ( const TComSlice* slice   );
933        Bool checkCfg        ( const TComSlice* slice   );
934        Void clear()
935        {
936            int i;
937            m_zNearFlag.clear();
938            m_zFarFlag.clear();
939            m_dMinFlag.clear();
940            m_dMaxFlag.clear();
941
942            for(i=0;i<m_zNear.size();i++)
943                m_zNear[i].clear();
944            m_zNear.clear();
945
946            for(i=0;i<m_zFar.size();i++)
947                m_zFar[i].clear();
948            m_zFar.clear();
949
950            for(i=0;i<m_dMin.size();i++)
951                m_dMin[i].clear();
952            m_dMin.clear();
953
954            for(i=0;i<m_dMax.size();i++)
955                m_dMax[i].clear();
956            m_dMax.clear();
957
958            for(i=0;i<m_depthRepresentationType.size();i++)
959                m_depthRepresentationType[i].clear();
960            m_depthRepresentationType.clear();
961
962            for(i=0;i<m_disparityRefViewId.size();i++)
963                m_disparityRefViewId[i].clear();
964            m_disparityRefViewId.clear();
965
966            for(i=0;i<m_depthNonlinearRepresentationNumMinus1.size();i++)
967                m_depthNonlinearRepresentationNumMinus1[i].clear();
968            m_depthNonlinearRepresentationNumMinus1.clear();
969
970            for(i=0;i<m_depth_nonlinear_representation_model.size();i++)
971                m_depth_nonlinear_representation_model[i].clear();
972            m_depth_nonlinear_representation_model.clear();
973
974        }
975        Int m_currLayerID;
976        BoolAry1d      m_zNearFlag;
977        BoolAry1d      m_zFarFlag;
978        BoolAry1d      m_dMinFlag;
979        BoolAry1d      m_dMaxFlag;
980        BoolAry2d      m_depthRepresentationInfoSeiPresentFlag;
981        std::vector< std::vector<Double> > m_zNear,m_zFar,m_dMin,m_dMax;
982
983        IntAry2d       m_depthRepresentationType;
984        IntAry2d       m_disparityRefViewId;
985        IntAry2d       m_depthNonlinearRepresentationNumMinus1;
986        IntAry2d       m_depth_nonlinear_representation_model;
987};
988
989
990class SEIMultiviewSceneInfo : public SEI
991{
992public:
993  PayloadType payloadType( ) const { return MULTIVIEW_SCENE_INFO; }
994  SEIMultiviewSceneInfo ( ) { };
995  ~SEIMultiviewSceneInfo( ) { };
996  SEI* getCopy( ) const { return new SEIMultiviewSceneInfo(*this); };
997
998  Void setupFromCfgFile( const TChar*     cfgFile );
999  Bool checkCfg        ( const TComSlice* slice   );
1000
1001  Int       m_minDisparity;
1002  Int       m_maxDisparityRange;
1003};
1004
1005
1006class SEIMultiviewAcquisitionInfo : public SEI
1007{
1008public:
1009  PayloadType payloadType( ) const { return MULTIVIEW_ACQUISITION_INFO; }
1010  SEIMultiviewAcquisitionInfo ( ) { };
1011  ~SEIMultiviewAcquisitionInfo( ) { };
1012  SEI* getCopy( ) const { return new SEIMultiviewAcquisitionInfo(*this); };
1013
1014  Void setupFromCfgFile( const TChar*     cfgFile );
1015  Bool checkCfg        ( const TComSlice* slice   );
1016
1017  Int getNumViewsMinus1( ) const
1018  {
1019    Int numViewsMinus1;
1020    if( m_scalNestSeiContThisSei != NULL )
1021    {
1022      numViewsMinus1 = m_scalNestSeiContThisSei->m_nestingNumLayersMinus1;
1023    }
1024    else
1025    {
1026      numViewsMinus1 = 0;
1027    }
1028    return numViewsMinus1;
1029  }
1030
1031  Void resizeArrays( )
1032  {
1033    Int numViews = getNumViewsMinus1() + 1;
1034    m_signFocalLengthX       .resize( numViews );
1035    m_exponentFocalLengthX   .resize( numViews );
1036    m_mantissaFocalLengthX   .resize( numViews );
1037    m_signFocalLengthY       .resize( numViews );
1038    m_exponentFocalLengthY   .resize( numViews );
1039    m_mantissaFocalLengthY   .resize( numViews );
1040    m_signPrincipalPointX    .resize( numViews );
1041    m_exponentPrincipalPointX.resize( numViews );
1042    m_mantissaPrincipalPointX.resize( numViews );
1043    m_signPrincipalPointY    .resize( numViews );
1044    m_exponentPrincipalPointY.resize( numViews );
1045    m_mantissaPrincipalPointY.resize( numViews );
1046    m_signSkewFactor         .resize( numViews );
1047    m_exponentSkewFactor     .resize( numViews );
1048    m_mantissaSkewFactor     .resize( numViews );
1049
1050    m_signR                  .resize( numViews );
1051    m_exponentR              .resize( numViews );
1052    m_mantissaR              .resize( numViews );
1053    m_signT                  .resize( numViews );
1054    m_exponentT              .resize( numViews );
1055    m_mantissaT              .resize( numViews );
1056
1057    for( Int i = 0; i  < numViews ; i++ )
1058    {
1059      m_signR    [i].resize( 3 );
1060      m_exponentR[i].resize( 3 );
1061      m_mantissaR[i].resize( 3 );
1062      m_signT    [i].resize( 3 );
1063      m_exponentT[i].resize( 3 );
1064      m_mantissaT[i].resize( 3 );
1065
1066      for (Int j = 0; j < 3; j++)
1067      {
1068        m_signR    [i][j].resize( 3 );
1069        m_exponentR[i][j].resize( 3 );
1070        m_mantissaR[i][j].resize( 3 );
1071      }
1072    }
1073  }
1074
1075  UInt getMantissaFocalLengthXLen   ( Int i ) const ;
1076  UInt getMantissaFocalLengthYLen   ( Int i ) const ;
1077  UInt getMantissaPrincipalPointXLen( Int i ) const ;
1078  UInt getMantissaPrincipalPointYLen( Int i ) const ;
1079  UInt getMantissaSkewFactorLen     ( Int i ) const ;
1080  UInt getMantissaRLen              ( Int i, Int j, Int k ) const ;
1081  UInt getMantissaTLen              ( Int i, Int j )        const ;
1082
1083  Bool      m_intrinsicParamFlag;
1084  Bool      m_extrinsicParamFlag;
1085  Bool      m_intrinsicParamsEqualFlag;
1086  Int       m_precFocalLength;
1087  Int       m_precPrincipalPoint;
1088  Int       m_precSkewFactor;
1089  BoolAry1d m_signFocalLengthX;
1090  IntAry1d  m_exponentFocalLengthX;
1091  IntAry1d  m_mantissaFocalLengthX;
1092  BoolAry1d m_signFocalLengthY;
1093  IntAry1d  m_exponentFocalLengthY;
1094  IntAry1d  m_mantissaFocalLengthY;
1095  BoolAry1d m_signPrincipalPointX;
1096  IntAry1d  m_exponentPrincipalPointX;
1097  IntAry1d  m_mantissaPrincipalPointX;
1098  BoolAry1d m_signPrincipalPointY;
1099  IntAry1d  m_exponentPrincipalPointY;
1100  IntAry1d  m_mantissaPrincipalPointY;
1101  BoolAry1d m_signSkewFactor;
1102  IntAry1d  m_exponentSkewFactor;
1103  IntAry1d  m_mantissaSkewFactor;
1104  Int       m_precRotationParam;
1105  Int       m_precTranslationParam;
1106  BoolAry3d m_signR;
1107  IntAry3d  m_exponentR;
1108  IntAry3d  m_mantissaR;
1109  BoolAry2d m_signT;
1110  IntAry2d  m_exponentT;
1111  IntAry2d  m_mantissaT;
1112private:
1113  UInt xGetSyntaxElementLen( Int expo, Int prec, Int val ) const;
1114};
1115
1116
1117
1118class SEIMultiviewViewPosition : public SEI
1119{
1120public:
1121  PayloadType payloadType( ) const { return MULTIVIEW_VIEW_POSITION; }
1122  SEIMultiviewViewPosition ( ) { };
1123  ~SEIMultiviewViewPosition( ) { };
1124  SEI* getCopy( ) const { return new SEIMultiviewViewPosition(*this); };
1125
1126  Void setupFromCfgFile( const TChar*     cfgFile );
1127  Void setupFromSlice  ( const TComSlice* slice   );
1128  Bool checkCfg        ( const TComSlice* slice   );
1129
1130  Int       m_numViewsMinus1;
1131  IntAry1d  m_viewPosition;
1132};
1133
1134#if NH_3D
1135class SEIAlternativeDepthInfo : public SEI
1136{
1137public:
1138  PayloadType payloadType( ) const { return ALTERNATIVE_DEPTH_INFO; }
1139  SEIAlternativeDepthInfo ( ) { };
1140  ~SEIAlternativeDepthInfo( ) { };
1141  SEI* getCopy( ) const { return new SEIAlternativeDepthInfo(*this); };
1142
1143  Void setupFromCfgFile( const TChar*     cfgFile );
1144  Bool checkCfg        ( const TComSlice* slice   );
1145
1146  UInt getManGvdFocalLengthXLen       ( Int i, Int j ) const;
1147  UInt getManGvdFocalLengthYLen       ( Int i, Int j ) const;
1148  UInt getManGvdPrincipalPointXLen    ( Int i, Int j ) const;
1149  UInt getManGvdPrincipalPointYLen    ( Int i, Int j ) const;
1150  //UInt getManGvdRLen                  ( Int i, int j ) const;
1151  UInt getManGvdTXLen                 ( Int i, Int j ) const;
1152  UInt xGetSyntaxElementLen           ( Int expo, Int prec, Int val ) const;
1153
1154  Void resizeArrays( )
1155  {
1156    const Int numViews = 3; // getNumConstituentViewsGvdMinus1() + 1;
1157
1158    m_signGvdZNearFlag.resize(3);
1159    m_expGvdZNear.resize(3);
1160    m_manLenGvdZNearMinus1.resize(3);
1161    m_manGvdZNear.resize(3);
1162    m_signGvdZFarFlag.resize(3);
1163    m_expGvdZFar.resize(3);
1164    m_manLenGvdZFarMinus1.resize(3);
1165    m_manGvdZFar.resize(3);
1166
1167    m_signGvdFocalLengthX.resize(3);
1168    m_expGvdFocalLengthX.resize(3);
1169    m_manGvdFocalLengthX.resize(3);
1170    m_signGvdFocalLengthY.resize(3);
1171    m_expGvdFocalLengthY.resize(3);
1172    m_manGvdFocalLengthY.resize(3);
1173    m_signGvdPrincipalPointX.resize(3);
1174    m_expGvdPrincipalPointX.resize(3);
1175    m_manGvdPrincipalPointX.resize(3);
1176    m_signGvdPrincipalPointY.resize(3);
1177    m_expGvdPrincipalPointY.resize(3);
1178    m_manGvdPrincipalPointY.resize(3);
1179
1180    m_signGvdR00.resize(3);
1181    m_expGvdR00.resize(3);
1182    m_manGvdR00.resize(3);
1183    m_signGvdR01.resize(3);
1184    m_expGvdR01.resize(3);
1185    m_manGvdR01.resize(3);
1186    m_signGvdR02.resize(3);
1187    m_expGvdR02.resize(3);
1188    m_manGvdR02.resize(3);
1189    m_signGvdR10.resize(3);
1190    m_expGvdR10.resize(3);
1191    m_manGvdR10.resize(3);
1192    m_signGvdR11.resize(3);
1193    m_expGvdR11.resize(3);
1194    m_manGvdR11.resize(3);
1195    m_signGvdR12.resize(3);
1196    m_expGvdR12.resize(3);
1197    m_manGvdR12.resize(3);
1198    m_signGvdR20.resize(3);
1199    m_expGvdR20.resize(3);
1200    m_manGvdR20.resize(3);
1201    m_signGvdR21.resize(3);
1202    m_expGvdR21.resize(3);
1203    m_manGvdR21.resize(3);
1204    m_signGvdR22.resize(3);
1205    m_expGvdR22.resize(3);
1206    m_manGvdR22.resize(3);
1207
1208    m_signGvdTX.resize(3);
1209    m_expGvdTX.resize(3);
1210    m_manGvdTX.resize(3);
1211
1212    for( Int i = 0; i < numViews; i++ )
1213    {
1214      m_signGvdZNearFlag[i].resize(3);
1215      m_expGvdZNear[i].resize(3);
1216      m_manLenGvdZNearMinus1[i].resize(3);
1217      m_manGvdZNear[i].resize(3);
1218      m_signGvdZFarFlag[i].resize(3);
1219      m_expGvdZFar[i].resize(3);
1220      m_manLenGvdZFarMinus1[i].resize(3);
1221      m_manGvdZFar[i].resize(3);
1222
1223      m_signGvdFocalLengthX[i].resize(3);
1224      m_expGvdFocalLengthX[i].resize(3);
1225      m_manGvdFocalLengthX[i].resize(3);
1226      m_signGvdFocalLengthY[i].resize(3);
1227      m_expGvdFocalLengthY[i].resize(3);
1228      m_manGvdFocalLengthY[i].resize(3);
1229      m_signGvdPrincipalPointX[i].resize(3);
1230      m_expGvdPrincipalPointX[i].resize(3);
1231      m_manGvdPrincipalPointX[i].resize(3);
1232      m_signGvdPrincipalPointY[i].resize(3);
1233      m_expGvdPrincipalPointY[i].resize(3);
1234      m_manGvdPrincipalPointY[i].resize(3);
1235
1236      m_signGvdR00[i].resize(3);
1237      m_expGvdR00[i].resize(3);
1238      m_manGvdR00[i].resize(3);
1239      m_signGvdR01[i].resize(3);
1240      m_expGvdR01[i].resize(3);
1241      m_manGvdR01[i].resize(3);
1242      m_signGvdR02[i].resize(3);
1243      m_expGvdR02[i].resize(3);
1244      m_manGvdR02[i].resize(3);
1245      m_signGvdR10[i].resize(3);
1246      m_expGvdR10[i].resize(3);
1247      m_manGvdR10[i].resize(3);
1248      m_signGvdR11[i].resize(3);
1249      m_expGvdR11[i].resize(3);
1250      m_manGvdR11[i].resize(3);
1251      m_signGvdR12[i].resize(3);
1252      m_expGvdR12[i].resize(3);
1253      m_manGvdR12[i].resize(3);
1254      m_signGvdR20[i].resize(3);
1255      m_expGvdR20[i].resize(3);
1256      m_manGvdR20[i].resize(3);
1257      m_signGvdR21[i].resize(3);
1258      m_expGvdR21[i].resize(3);
1259      m_manGvdR21[i].resize(3);
1260      m_signGvdR22[i].resize(3);
1261      m_expGvdR22[i].resize(3);
1262      m_manGvdR22[i].resize(3);
1263
1264      m_signGvdTX[i].resize(3);
1265      m_expGvdTX[i].resize(3);
1266      m_manGvdTX[i].resize(3);
1267    }
1268
1269  }
1270
1271  Bool      m_alternativeDepthInfoCancelFlag;
1272  Int       m_depthType;
1273  Int       m_numConstituentViewsGvdMinus1;
1274  Bool      m_depthPresentGvdFlag;
1275  Bool      m_zGvdFlag;
1276  Bool      m_intrinsicParamGvdFlag;
1277  Bool      m_rotationGvdFlag;
1278  Bool      m_translationGvdFlag;
1279  BoolAry2d m_signGvdZNearFlag;
1280  IntAry2d  m_expGvdZNear;
1281  IntAry2d  m_manLenGvdZNearMinus1;
1282  IntAry2d  m_manGvdZNear;
1283  BoolAry2d m_signGvdZFarFlag;
1284  IntAry2d  m_expGvdZFar;
1285  IntAry2d  m_manLenGvdZFarMinus1;
1286  IntAry2d  m_manGvdZFar;
1287  Int       m_precGvdFocalLength;
1288  Int       m_precGvdPrincipalPoint;
1289  Int       m_precGvdRotationParam;
1290  Int       m_precGvdTranslationParam;
1291  BoolAry2d m_signGvdFocalLengthX;
1292  IntAry2d  m_expGvdFocalLengthX;
1293  IntAry2d  m_manGvdFocalLengthX;
1294  BoolAry2d m_signGvdFocalLengthY;
1295  IntAry2d  m_expGvdFocalLengthY;
1296  IntAry2d  m_manGvdFocalLengthY;
1297  BoolAry2d m_signGvdPrincipalPointX;
1298  IntAry2d  m_expGvdPrincipalPointX;
1299  IntAry2d  m_manGvdPrincipalPointX;
1300  BoolAry2d m_signGvdPrincipalPointY;
1301  IntAry2d  m_expGvdPrincipalPointY;
1302  IntAry2d  m_manGvdPrincipalPointY;
1303
1304  BoolAry2d m_signGvdR00;
1305  IntAry2d  m_expGvdR00;
1306  IntAry2d  m_manGvdR00;
1307  BoolAry2d m_signGvdR01;
1308  IntAry2d  m_expGvdR01;
1309  IntAry2d  m_manGvdR01;
1310  BoolAry2d m_signGvdR02;
1311  IntAry2d  m_expGvdR02;
1312  IntAry2d  m_manGvdR02;
1313  BoolAry2d m_signGvdR10;
1314  IntAry2d  m_expGvdR10;
1315  IntAry2d  m_manGvdR10;
1316  BoolAry2d m_signGvdR11;
1317  IntAry2d  m_expGvdR11;
1318  IntAry2d  m_manGvdR11;
1319  BoolAry2d m_signGvdR12;
1320  IntAry2d  m_expGvdR12;
1321  IntAry2d  m_manGvdR12;
1322  BoolAry2d m_signGvdR20;
1323  IntAry2d  m_expGvdR20;
1324  IntAry2d  m_manGvdR20;
1325  BoolAry2d m_signGvdR21;
1326  IntAry2d  m_expGvdR21;
1327  IntAry2d  m_manGvdR21;
1328  BoolAry2d m_signGvdR22;
1329  IntAry2d  m_expGvdR22;
1330  IntAry2d  m_manGvdR22;
1331
1332  BoolAry2d m_signGvdTX;
1333  IntAry2d  m_expGvdTX;
1334  IntAry2d  m_manGvdTX;
1335
1336  Int       m_minOffsetXInt;
1337  Int       m_minOffsetXFrac;
1338  Int       m_maxOffsetXInt;
1339  Int       m_maxOffsetXFrac;
1340  Bool      m_offsetYPresentFlag;
1341  Int       m_minOffsetYInt;
1342  Int       m_minOffsetYFrac;
1343  Int       m_maxOffsetYInt;
1344  Int       m_maxOffsetYFrac;
1345  Bool      m_warpMapSizePresentFlag;
1346  Int       m_warpMapWidthMinus2;
1347  Int       m_warpMapHeightMinus2;
1348};
1349
1350#endif
1351#endif
1352#endif
1353
1354//! \}
Note: See TracBrowser for help on using the repository browser.