HEVC Test Model (HM)  HM-16.3
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-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 
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 protected:
60  Void xReadSEImessage (SEIMessages& seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
61  Void xParseSEIuserDataUnregistered (SEIuserDataUnregistered &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
62  Void xParseSEIActiveParameterSets (SEIActiveParameterSets &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
63  Void xParseSEIDecodingUnitInfo (SEIDecodingUnitInfo& sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
64  Void xParseSEIDecodedPictureHash (SEIDecodedPictureHash& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
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 xParseSEIRecoveryPoint (SEIRecoveryPoint& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
68  Void xParseSEIFramePacking (SEIFramePacking& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
69  Void xParseSEISegmentedRectFramePacking (SEISegmentedRectFramePacking& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
70  Void xParseSEIDisplayOrientation (SEIDisplayOrientation &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
71  Void xParseSEITemporalLevel0Index (SEITemporalLevel0Index &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
72  Void xParseSEIRegionRefreshInfo (SEIGradualDecodingRefreshInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
73  Void xParseSEINoDisplay (SEINoDisplay &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
74  Void xParseSEIToneMappingInfo (SEIToneMappingInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
75  Void xParseSEISOPDescription (SEISOPDescription &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
76  Void xParseSEIScalableNesting (SEIScalableNesting& sei, const NalUnitType nalUnitType, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream);
77  Void xParseSEITempMotionConstraintsTileSets (SEITempMotionConstrainedTileSets& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
78  Void xParseSEITimeCode (SEITimeCode& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
79  Void xParseSEIChromaSamplingFilterHint (SEIChromaSamplingFilterHint& sei, UInt payloadSize/*,TComSPS* */, std::ostream *pDecodedMessageOutputStream);
80  Void xParseSEIKneeFunctionInfo (SEIKneeFunctionInfo& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
81  Void xParseSEIMasteringDisplayColourVolume (SEIMasteringDisplayColourVolume& sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream);
82 
83  Void sei_read_code(std::ostream *pOS, UInt uiLength, UInt& ruiCode, const Char *pSymbolName);
84  Void sei_read_uvlc(std::ostream *pOS, UInt& ruiCode, const Char *pSymbolName);
85  Void sei_read_svlc(std::ostream *pOS, Int& ruiCode, const Char *pSymbolName);
86  Void sei_read_flag(std::ostream *pOS, UInt& ruiCode, const Char *pSymbolName);
87 };
88 
89 
91 
92 #endif
Void xParseSEIKneeFunctionInfo(SEIKneeFunctionInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1031
Void xParseSEIFramePacking(SEIFramePacking &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:620
Void sei_read_code(std::ostream *pOS, UInt uiLength, UInt &ruiCode, const Char *pSymbolName)
Definition: SEIread.cpp:65
Void xParseSEIBufferingPeriod(SEIBufferingPeriod &sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:494
void Void
Definition: TypeDef.h:285
Void xReadSEImessage(SEIMessages &seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:139
Void sei_read_svlc(std::ostream *pOS, Int &ruiCode, const Char *pSymbolName)
Definition: SEIread.cpp:83
Void xParseSEIScalableNesting(SEIScalableNesting &sei, const NalUnitType nalUnitType, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:812
char Char
Definition: TypeDef.h:291
unsigned int UInt
Definition: TypeDef.h:297
Void xParseSEIActiveParameterSets(SEIActiveParameterSets &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:452
Void xParseSEITempMotionConstraintsTileSets(SEITempMotionConstrainedTileSets &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:865
Void sei_read_uvlc(std::ostream *pOS, UInt &ruiCode, const Char *pSymbolName)
Definition: SEIread.cpp:74
Void xParseSEIDecodedPictureHash(SEIDecodedPictureHash &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:412
Void xParseSEIRegionRefreshInfo(SEIGradualDecodingRefreshInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:691
Void sei_read_flag(std::ostream *pOS, UInt &ruiCode, const Char *pSymbolName)
Definition: SEIread.cpp:92
Void xParseSEITemporalLevel0Index(SEITemporalLevel0Index &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:683
Void xParseSEIChromaSamplingFilterHint(SEIChromaSamplingFilterHint &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:981
Void parseSEImessage(TComInputBitstream *bs, SEIMessages &seis, const NalUnitType nalUnitType, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:119
Void xParseSEIToneMappingInfo(SEIToneMappingInfo &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:704
Void xParseSEINoDisplay(SEINoDisplay &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:698
SEIReader()
Definition: SEIread.h:56
Void xParseSEIRecoveryPoint(SEIRecoveryPoint &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:609
Void xParseSEIuserDataUnregistered(SEIuserDataUnregistered &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:377
Void xParseSEIMasteringDisplayColourVolume(SEIMasteringDisplayColourVolume &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:1058
Void xParseSEISOPDescription(SEISOPDescription &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:789
std::list< SEI * > SEIMessages
Definition: SEI.h:479
int Int
Definition: TypeDef.h:296
Void xParseSEIDisplayOrientation(SEIDisplayOrientation &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:669
Void xParseSEIDecodingUnitInfo(SEIDecodingUnitInfo &sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:469
NalUnitType
Definition: CommonDef.h:218
virtual ~SEIReader()
Definition: SEIread.h:57
Void xParseSEISegmentedRectFramePacking(SEISegmentedRectFramePacking &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:657
Void xParseSEIPictureTiming(SEIPictureTiming &sei, UInt payloadSize, const TComSPS *sps, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:544
Void xParseSEITimeCode(SEITimeCode &sei, UInt payloadSize, std::ostream *pDecodedMessageOutputStream)
Definition: SEIread.cpp:921
SPS class.
Definition: TComSlice.h:722