HEVC Test Model (HM)  HM-16.18
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TEncCavlc.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 
38 #ifndef __TENCCAVLC__
39 #define __TENCCAVLC__
40 
41 #if _MSC_VER > 1000
42 #pragma once
43 #endif // _MSC_VER > 1000
44 
45 #include "TLibCommon/CommonDef.h"
47 #include "TLibCommon/TComRom.h"
48 #include "TEncEntropy.h"
49 #include "SyntaxElementWriter.h"
50 
53 
54 class TEncTop;
55 
56 // ====================================================================================================================
57 // Class definition
58 // ====================================================================================================================
59 
61 {
62 public:
63  AUDWriter() {};
64  virtual ~AUDWriter() {};
65 
66  Void codeAUD(TComBitIf& bs, const Int pictureType);
67 };
68 
71 {
72 public:
73  TEncCavlc();
74  virtual ~TEncCavlc();
75 
76 protected:
77  Void codeShortTermRefPicSet ( const TComReferencePictureSet* pcRPS, Bool calledFromSliceHeader, Int idx );
78  Bool findMatchingLTRP ( TComSlice* pcSlice, UInt *ltrpsIndex, Int ltrpPOC, Bool usedFlag );
79 
80 public:
81 
82  Void resetEntropy (const TComSlice *pSlice);
83  SliceType determineCabacInitIdx (const TComSlice* /*pSlice*/) { assert(0); return I_SLICE; };
84 
88  Void codeVPS ( const TComVPS* pcVPS );
89  Void codeVUI ( const TComVUI *pcVUI, const TComSPS* pcSPS );
90  Void codeSPS ( const TComSPS* pcSPS );
91  Void codePPS ( const TComPPS* pcPPS );
92  Void codeSliceHeader ( TComSlice* pcSlice );
93  Void codePTL ( const TComPTL* pcPTL, Bool profilePresentFlag, Int maxNumSubLayersMinus1);
94  Void codeProfileTier ( const ProfileTierLevel* ptl, const Bool bIsSubLayer );
95  Void codeHrdParameters ( const TComHRD *hrd, Bool commonInfPresentFlag, UInt maxNumSubLayersMinus1 );
97  Void codeTerminatingBit ( UInt uilsLast );
99 
100  Void codeMVPIdx ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefList );
101  Void codeSAOBlkParam(SAOBlkParam& /*saoBlkParam*/, const BitDepths& /*bitDepths*/, Bool* /*sliceEnabled*/, Bool /*leftMergeAvail*/, Bool /*aboveMergeAvail*/, Bool /*onlyEstMergeInfo*/ = false){printf("only supported in CABAC"); assert(0); exit(-1);}
102  Void codeCUTransquantBypassFlag( TComDataCU* pcCU, UInt uiAbsPartIdx );
103  Void codeSkipFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx );
104  Void codeMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx );
105  Void codeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx );
106 
107  Void codeAlfCtrlFlag ( ComponentID /*component*/, UInt /*code*/ ) {printf("Not supported\n"); assert(0);}
108  Void codeInterModeFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiEncMode );
109  Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
110 
111  Void codePartSize ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth );
112  Void codePredMode ( TComDataCU* pcCU, UInt uiAbsPartIdx );
113 
114  Void codeIPCMInfo ( TComDataCU* pcCU, UInt uiAbsPartIdx );
115 
116  Void codeTransformSubdivFlag( UInt uiSymbol, UInt uiCtx );
117  Void codeQtCbf ( TComTU &rTu, const ComponentID compID, const Bool lowestLevel );
118  Void codeQtRootCbf ( TComDataCU* pcCU, UInt uiAbsPartIdx );
119  Void codeQtCbfZero ( TComTU &rTu, const ChannelType chType );
121  Void codeIntraDirLumaAng( TComDataCU* pcCU, UInt absPartIdx, Bool isMultiple);
122  Void codeIntraDirChroma( TComDataCU* pcCU, UInt uiAbsPartIdx );
123  Void codeInterDir ( TComDataCU* pcCU, UInt uiAbsPartIdx );
124  Void codeRefFrmIdx ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefList );
125  Void codeMvd ( TComDataCU* pcCU, UInt uiAbsPartIdx, RefPicList eRefList );
126 
128 
129  Void codeDeltaQP ( TComDataCU* pcCU, UInt uiAbsPartIdx );
130  Void codeChromaQpAdjustment( TComDataCU* pcCU, UInt uiAbsPartIdx );
131 
132  Void codeCoeffNxN ( TComTU &rTu, TCoeff* pcCoef, const ComponentID compID );
133  Void codeTransformSkipFlags ( TComTU &rTu, ComponentID component );
134 
135  Void estBit ( estBitsSbacStruct* pcEstBitsSbac, Int width, Int height, ChannelType chType, COEFF_SCAN_TYPE scanType );
136 
137  Void xCodePredWeightTable ( TComSlice* pcSlice );
138 
139  Void codeScalingList ( const TComScalingList &scalingList );
140  Void xCodeScalingList ( const TComScalingList* scalingList, UInt sizeId, UInt listId);
141 
142  Void codeExplicitRdpcmMode( TComTU &rTu, const ComponentID compID );
143 };
144 
146 
147 #endif // !defined(AFX_TENCCAVLC_H__EE8A0B30_945B_4169_B290_24D3AD52296F__INCLUDED_)
148 
Void codeProfileTier(const ProfileTierLevel *ptl, const Bool bIsSubLayer)
Definition: TEncCavlc.cpp:1106
entropy encoder class (header)
Void codeTransformSubdivFlag(UInt uiSymbol, UInt uiCtx)
Definition: TEncCavlc.cpp:1252
UInt getNumberOfWrittenBits()
Definition: TEncCavlc.h:87
SliceType
supported slice type
Definition: TypeDef.h:283
Void setBitstream(TComBitIf *p)
Definition: TEncCavlc.h:85
CU data structure class.
Definition: TComDataCU.h:64
ChannelType
Definition: TypeDef.h:301
Void codeMvd(TComDataCU *pcCU, UInt uiAbsPartIdx, RefPicList eRefList)
Definition: TEncCavlc.cpp:1311
virtual Void resetBits()=0
Defines version information, constants and small in-line functions.
Void codeSplitFlag(TComDataCU *pcCU, UInt uiAbsPartIdx, UInt uiDepth)
Definition: TEncCavlc.cpp:1247
void Void
Definition: TypeDef.h:203
Void codeQtRootCbfZero()
Definition: TEncCavlc.cpp:1271
Void codeSPS(const TComSPS *pcSPS)
Definition: TEncCavlc.cpp:473
Void codeExplicitRdpcmMode(TComTU &rTu, const ComponentID compID)
Definition: TEncCavlc.cpp:1518
pure virtual class for basic bit handling
Definition: TComBitStream.h:58
Void xCodePredWeightTable(TComSlice *pcSlice)
Code weighted prediction tables.
Definition: TEncCavlc.cpp:1354
global variables & functions (header)
CAVLC encoder class.
Definition: TEncCavlc.h:70
unsigned int UInt
Definition: TypeDef.h:212
Void codeAUD(TComBitIf &bs, const Int pictureType)
Definition: TEncCavlc.cpp:74
Void codeSliceFinish()
Definition: TEncCavlc.cpp:1203
Void codeSAOBlkParam(SAOBlkParam &, const BitDepths &, Bool *, Bool, Bool, Bool=false)
Definition: TEncCavlc.h:101
virtual ~TEncCavlc()
Definition: TEncCavlc.cpp:95
Void resetEntropy(const TComSlice *pSlice)
Definition: TEncCavlc.cpp:104
Void codeIntraDirChroma(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1296
Void codePredMode(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1217
SCALING_LIST class.
Definition: TComSlice.h:150
Void xCodeScalingList(const TComScalingList *scalingList, UInt sizeId, UInt listId)
Definition: TEncCavlc.cpp:1474
Void codeSliceHeader(TComSlice *pcSlice)
Definition: TEncCavlc.cpp:720
Void codeChromaQpAdjustment(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1333
Void codeVPS(const TComVPS *pcVPS)
Definition: TEncCavlc.cpp:646
Void codeScalingList(const TComScalingList &scalingList)
Definition: TEncCavlc.cpp:1438
Void codeTilesWPPEntryPoint(TComSlice *pSlice)
Definition: TEncCavlc.cpp:1163
Void codeTerminatingBit(UInt uilsLast)
Definition: TEncCavlc.cpp:1199
bool Bool
Definition: TypeDef.h:204
Void codeIntraDirLumaAng(TComDataCU *pcCU, UInt absPartIdx, Bool isMultiple)
Definition: TEncCavlc.cpp:1291
Void codeCoeffNxN(TComTU &rTu, TCoeff *pcCoef, const ComponentID compID)
Definition: TEncCavlc.cpp:1338
PPS class.
Definition: TComSlice.h:1034
Int TCoeff
transform coefficient
Definition: TypeDef.h:250
Void codeInterDir(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1301
RefPicList
reference list index
Definition: TypeDef.h:370
Void codeShortTermRefPicSet(const TComReferencePictureSet *pcRPS, Bool calledFromSliceHeader, Int idx)
Definition: TEncCavlc.cpp:109
Void codeHrdParameters(const TComHRD *hrd, Bool commonInfPresentFlag, UInt maxNumSubLayersMinus1)
Definition: TEncCavlc.cpp:402
COEFF_SCAN_TYPE
coefficient scanning type used in ACS
Definition: TypeDef.h:473
class for handling bitstream (header)
Void codeInterModeFlag(TComDataCU *pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiEncMode)
Definition: TEncCavlc.cpp:1232
Void codePartSize(TComDataCU *pcCU, UInt uiAbsPartIdx, UInt uiDepth)
Definition: TEncCavlc.cpp:1212
virtual ~AUDWriter()
Definition: TEncCavlc.h:64
entropy encoder pure class
Definition: TEncEntropy.h:59
Void codePPS(const TComPPS *pcPPS)
Definition: TEncCavlc.cpp:166
Void codeRefFrmIdx(TComDataCU *pcCU, UInt uiAbsPartIdx, RefPicList eRefList)
Definition: TEncCavlc.cpp:1306
CAVLC encoder class (header)
SliceType determineCabacInitIdx(const TComSlice *)
Definition: TEncCavlc.h:83
Definition: TComTU.h:48
Void codeTransformSkipFlags(TComTU &rTu, ComponentID component)
Definition: TEncCavlc.cpp:1276
Void estBit(estBitsSbacStruct *pcEstBitsSbac, Int width, Int height, ChannelType chType, COEFF_SCAN_TYPE scanType)
Definition: TEncCavlc.cpp:1343
Void codeSkipFlag(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1242
Void codeDeltaQP(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1321
Void codeCrossComponentPrediction(TComTU &rTu, ComponentID compID)
Definition: TEncCavlc.cpp:1316
Void codeAlfCtrlFlag(ComponentID, UInt)
Definition: TEncCavlc.h:107
int Int
Definition: TypeDef.h:211
Void resetBits()
Definition: TEncCavlc.h:86
Void codeMVPIdx(TComDataCU *pcCU, UInt uiAbsPartIdx, RefPicList eRefList)
Definition: TEncCavlc.cpp:1207
Void codeVUI(const TComVUI *pcVUI, const TComSPS *pcSPS)
Definition: TEncCavlc.cpp:316
Void codeIPCMInfo(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1286
Void codeCUTransquantBypassFlag(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1237
encoder class
Definition: TEncTop.h:68
ComponentID
Definition: TypeDef.h:308
Void codeMergeFlag(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1222
AUDWriter()
Definition: TEncCavlc.h:63
Void codeQtRootCbf(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1262
Void codeQtCbf(TComTU &rTu, const ComponentID compID, const Bool lowestLevel)
Definition: TEncCavlc.cpp:1257
Reference Picture Set class.
Definition: TComSlice.h:65
slice header class
Definition: TComSlice.h:1225
Void codeMergeIndex(TComDataCU *pcCU, UInt uiAbsPartIdx)
Definition: TEncCavlc.cpp:1227
Void codePTL(const TComPTL *pcPTL, Bool profilePresentFlag, Int maxNumSubLayersMinus1)
Definition: TEncCavlc.cpp:1067
virtual UInt getNumberOfWrittenBits() const =0
Bool findMatchingLTRP(TComSlice *pcSlice, UInt *ltrpsIndex, Int ltrpPOC, Bool usedFlag)
Definition: TEncCavlc.cpp:1503
Void codeQtCbfZero(TComTU &rTu, const ChannelType chType)
Definition: TEncCavlc.cpp:1267
SPS class.
Definition: TComSlice.h:740