HEVC Test Model (HM)  HM-16.18
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SEIread.h
Go to the documentation of this file.
1 /* The copyright in this software is being made available under the BSD
2  * License, included below. This software may be subject to other third party
3  * and contributor rights, including patent rights, and no such rights are
4  * granted under this license.
5  *
6  * Copyright (c) 2010-2017, 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 
39 #ifndef __SEIREAD__
40 #define __SEIREAD__
41 
42 #if _MSC_VER > 1000
43 #pragma once
44 #endif // _MSC_VER > 1000
45 
48 
49 #include "TLibCommon/SEI.h"
50 class TComInputBitstream;
51 
52 
54 {
55 public:
56  SEIReader() {};
57  virtual ~SEIReader() {};
58  Void parseSEImessage(TComInputBitstream* bs, SEIMessages& seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
59 
60 protected:
61  Void xReadSEImessage (SEIMessages& seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
62 #if RNSEI
63  Void xReadSEImessageHdrPayload (SEI* &sei, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
64 #endif
65  Void xParseSEIBufferingPeriod (SEIBufferingPeriod& sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
66  Void xParseSEIPictureTiming (SEIPictureTiming& sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
67  Void xParseSEIPanScanRect (SEIPanScanRect& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
68  Void xParseSEIFillerPayload (SEIFillerPayload& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
69  Void xParseSEIUserDataRegistered (SEIUserDataRegistered& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
70  Void xParseSEIUserDataUnregistered (SEIUserDataUnregistered &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
71  Void xParseSEIRecoveryPoint (SEIRecoveryPoint& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
72  Void xParseSEISceneInfo (SEISceneInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
73  Void xParseSEIPictureSnapshot (SEIPictureSnapshot& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
74  Void xParseSEIProgressiveRefinementSegmentStart(SEIProgressiveRefinementSegmentStart& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
75  Void xParseSEIProgressiveRefinementSegmentEnd(SEIProgressiveRefinementSegmentEnd& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
76  Void xParseSEIFilmGrainCharacteristics (SEIFilmGrainCharacteristics& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
77  Void xParseSEIPostFilterHint (SEIPostFilterHint& sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
78  Void xParseSEIToneMappingInfo (SEIToneMappingInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
79  Void xParseSEIFramePacking (SEIFramePacking& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
80  Void xParseSEIDisplayOrientation (SEIDisplayOrientation &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
81  Void xParseSEIGreenMetadataInfo (SEIGreenMetadataInfo& sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream);
82  Void xParseSEISOPDescription (SEISOPDescription &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
83  Void xParseSEIActiveParameterSets (SEIActiveParameterSets &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
84  Void xParseSEIDecodingUnitInfo (SEIDecodingUnitInfo& sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
85  Void xParseSEITemporalLevel0Index (SEITemporalLevel0Index &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
86  Void xParseSEIDecodedPictureHash (SEIDecodedPictureHash& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
87  Void xParseSEIScalableNesting (SEIScalableNesting& sei, const NalUnitType nalUnitType, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
88  Void xParseSEIRegionRefreshInfo (SEIRegionRefreshInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
89  Void xParseSEINoDisplay (SEINoDisplay &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
90  Void xParseSEITimeCode (SEITimeCode& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
91  Void xParseSEIMasteringDisplayColourVolume (SEIMasteringDisplayColourVolume& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
92  Void xParseSEISegmentedRectFramePacking (SEISegmentedRectFramePacking& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
93  Void xParseSEITempMotionConstraintsTileSets (SEITempMotionConstrainedTileSets& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
94  Void xParseSEIChromaResamplingFilterHint (SEIChromaResamplingFilterHint& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
95  Void xParseSEIKneeFunctionInfo (SEIKneeFunctionInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
96 #if CCV_SEI_MESSAGE
97  Void xParseSEIContentColourVolume (SEIContentColourVolume& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
98 #endif
99 #if ERP_SR_OV_SEI_MESSAGE
100  Void xParseSEIEquirectangularProjection (SEIEquirectangularProjection &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
101  Void xParseSEISphereRotation (SEISphereRotation &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
102  Void xParseSEIOmniViewport (SEIOmniViewport& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
103 #endif
104 #if CMP_SEI_MESSAGE
105  Void xParseSEICubemapProjection (SEICubemapProjection& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
106 #endif
107 #if RWP_SEI_MESSAGE
108  Void xParseSEIRegionWisePacking (SEIRegionWisePacking& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
109 #endif
110  Void xParseSEIColourRemappingInfo (SEIColourRemappingInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
111  Void xParseSEIDeinterlaceFieldIdentification(SEIDeinterlaceFieldIdentification& sei,UInt payLoadSize, std::ostream *pDecodedMessageOutputStream);
112  Void xParseSEIContentLightLevelInfo (SEIContentLightLevelInfo& sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream);
113  Void xParseSEIDependentRAPIndication (SEIDependentRAPIndication& sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream);
114  Void xParseSEICodedRegionCompletion (SEICodedRegionCompletion& sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream);
115  Void xParseSEIAlternativeTransferCharacteristics(SEIAlternativeTransferCharacteristics& sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream);
116  Void xParseSEIAmbientViewingEnvironment (SEIAmbientViewingEnvironment& sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream);
117 #if RNSEI
118  Void xParseSEIRegionalNesting ( SEIRegionalNesting& sei, UInt payloadSize, const TComSPS* sps, std::ostream *pDecodedMessageOutputStream );
119 #endif
120  Void sei_read_scode(std::ostream *pOS, UInt uiLength, Int& ruiCode, const TChar *pSymbolName);
121  Void sei_read_code(std::ostream *pOS, UInt uiLength, UInt& ruiCode, const TChar *pSymbolName);
122  Void sei_read_uvlc(std::ostream *pOS, UInt& ruiCode, const TChar *pSymbolName);
123  Void sei_read_svlc(std::ostream *pOS, Int& ruiCode, const TChar *pSymbolName);
124  Void sei_read_flag(std::ostream *pOS, UInt& ruiCode, const TChar *pSymbolName);
125 };
126 
127 
129 
130 #endif
Void xParseSEIFilmGrainCharacteristics(SEIFilmGrainCharacteristics &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:934
Void xParseSEIKneeFunctionInfo(SEIKneeFunctionInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1550
Void xParseSEIFramePacking(SEIFramePacking &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1093
Void xParseSEIRegionalNesting(SEIRegionalNesting &sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1919
Void xParseSEIRegionRefreshInfo(SEIRegionRefreshInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1332
Void xParseSEIAmbientViewingEnvironment(SEIAmbientViewingEnvironment &sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1909
Void xParseSEIBufferingPeriod(SEIBufferingPeriod &sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:662
Void xReadSEImessageHdrPayload(SEI *&sei, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:519
void Void
Definition: TypeDef.h:203
Void xParseSEIEquirectangularProjection(SEIEquirectangularProjection &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1619
Void xParseSEIAlternativeTransferCharacteristics(SEIAlternativeTransferCharacteristics &sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1900
Void xReadSEImessage(SEIMessages &seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:147
Void sei_read_scode(std::ostream *pOS, UInt uiLength, Int &ruiCode, const TChar *pSymbolName)
Definition: SEIread.cpp:65
Void sei_read_code(std::ostream *pOS, UInt uiLength, UInt &ruiCode, const TChar *pSymbolName)
Definition: SEIread.cpp:74
Void xParseSEIChromaResamplingFilterHint(SEIChromaResamplingFilterHint &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1501
Void xParseSEICubemapProjection(SEICubemapProjection &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1687
Void xParseSEIScalableNesting(SEIScalableNesting &sei, const NalUnitType nalUnitType, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1280
Void sei_read_svlc(std::ostream *pOS, Int &ruiCode, const TChar *pSymbolName)
Definition: SEIread.cpp:92
unsigned int UInt
Definition: TypeDef.h:212
Void xParseSEIGreenMetadataInfo(SEIGreenMetadataInfo &sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1146
Void sei_read_flag(std::ostream *pOS, UInt &ruiCode, const TChar *pSymbolName)
Definition: SEIread.cpp:101
Void xParseSEIDeinterlaceFieldIdentification(SEIDeinterlaceFieldIdentification &sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1858
Void xParseSEICodedRegionCompletion(SEICodedRegionCompletion &sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1883
Void xParseSEIRegionWisePacking(SEIRegionWisePacking &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1703
Void xParseSEIUserDataUnregistered(SEIUserDataUnregistered &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:846
char TChar
Definition: TypeDef.h:206
Void xParseSEISceneInfo(SEISceneInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:883
Void xParseSEIActiveParameterSets(SEIActiveParameterSets &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1186
Void xParseSEITempMotionConstraintsTileSets(SEITempMotionConstrainedTileSets &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1444
Void xParseSEIFillerPayload(SEIFillerPayload &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:801
Void xParseSEIPostFilterHint(SEIPostFilterHint &sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:986
Void xParseSEIUserDataRegistered(SEIUserDataRegistered &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:819
Void xParseSEIDecodedPictureHash(SEIDecodedPictureHash &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1239
Void xParseSEIContentColourVolume(SEIContentColourVolume &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1578
Definition: SEI.h:52
Void xParseSEITemporalLevel0Index(SEITemporalLevel0Index &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1230
Void xParseSEIProgressiveRefinementSegmentEnd(SEIProgressiveRefinementSegmentEnd &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:925
Void parseSEImessage(TComInputBitstream *bs, SEIMessages &seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:129
Void sei_read_uvlc(std::ostream *pOS, UInt &ruiCode, const TChar *pSymbolName)
Definition: SEIread.cpp:83
Void xParseSEIToneMappingInfo(SEIToneMappingInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1007
Void xParseSEINoDisplay(SEINoDisplay &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1340
SEIReader()
Definition: SEIread.h:56
Void xParseSEIRecoveryPoint(SEIRecoveryPoint &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:871
Void xParseSEIContentLightLevelInfo(SEIContentLightLevelInfo &sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1867
Void xParseSEIColourRemappingInfo(SEIColourRemappingInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1768
Definition: SEI.h:367
Void xParseSEIProgressiveRefinementSegmentStart(SEIProgressiveRefinementSegmentStart &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:915
Void xParseSEIMasteringDisplayColourVolume(SEIMasteringDisplayColourVolume &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1408
Void xParseSEISOPDescription(SEISOPDescription &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1162
std::list< SEI * > SEIMessages
Definition: SEI.h:123
int Int
Definition: TypeDef.h:211
Void xParseSEIDisplayOrientation(SEIDisplayOrientation &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1131
Void xParseSEIDecodingUnitInfo(SEIDecodingUnitInfo &sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1204
NalUnitType
Definition: TypeDef.h:664
Void xParseSEIPictureSnapshot(SEIPictureSnapshot &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:906
Void xParseSEISphereRotation(SEISphereRotation &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1639
virtual ~SEIReader()
Definition: SEIread.h:57
Void xParseSEISegmentedRectFramePacking(SEISegmentedRectFramePacking &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1431
Void xParseSEIOmniViewport(SEIOmniViewport &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1655
Void xParseSEIPictureTiming(SEIPictureTiming &sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:713
Void xParseSEIDependentRAPIndication(SEIDependentRAPIndication &sei, UInt payLoadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1877
Void xParseSEITimeCode(SEITimeCode &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1347
SPS class.
Definition: TComSlice.h:740
Void xParseSEIPanScanRect(SEIPanScanRect &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:771