source: 3DVCSoftware/branches/HTM-16.1-dev/source/Lib/TLibCommon/SEI.h @ 1402

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

Initial merge of HM-16.9.

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