/src/vvenc/source/Lib/CommonLib/CodingStructure.h
Line | Count | Source |
1 | | /* ----------------------------------------------------------------------------- |
2 | | The copyright in this software is being made available under the Clear BSD |
3 | | License, included below. No patent rights, trademark rights and/or |
4 | | other Intellectual Property Rights other than the copyrights concerning |
5 | | the Software are granted under this license. |
6 | | |
7 | | The Clear BSD License |
8 | | |
9 | | Copyright (c) 2019-2026, Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. & The VVenC Authors. |
10 | | All rights reserved. |
11 | | |
12 | | Redistribution and use in source and binary forms, with or without modification, |
13 | | are permitted (subject to the limitations in the disclaimer below) provided that |
14 | | the following conditions are met: |
15 | | |
16 | | * Redistributions of source code must retain the above copyright notice, |
17 | | this list of conditions and the following disclaimer. |
18 | | |
19 | | * Redistributions in binary form must reproduce the above copyright |
20 | | notice, this list of conditions and the following disclaimer in the |
21 | | documentation and/or other materials provided with the distribution. |
22 | | |
23 | | * Neither the name of the copyright holder nor the names of its |
24 | | contributors may be used to endorse or promote products derived from this |
25 | | software without specific prior written permission. |
26 | | |
27 | | NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY |
28 | | THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
29 | | CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
30 | | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
31 | | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR |
32 | | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
33 | | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
34 | | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR |
35 | | BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER |
36 | | IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
37 | | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
38 | | POSSIBILITY OF SUCH DAMAGE. |
39 | | |
40 | | |
41 | | ------------------------------------------------------------------------------------------- */ |
42 | | /** \file CodingStructure.h |
43 | | * \brief A class managing the coding information for a specific image part |
44 | | */ |
45 | | |
46 | | #pragma once |
47 | | |
48 | | #include "Unit.h" |
49 | | #include "CommonDef.h" |
50 | | #include "UnitPartitioner.h" |
51 | | #include "Slice.h" |
52 | | |
53 | | #include <vector> |
54 | | #include <mutex> |
55 | | |
56 | | //! \ingroup CommonLib |
57 | | //! \{ |
58 | | |
59 | | namespace vvenc { |
60 | | |
61 | | struct Picture; |
62 | | |
63 | | |
64 | | enum PictureType |
65 | | { |
66 | | PIC_RECONSTRUCTION = 0, |
67 | | PIC_ORIGINAL, |
68 | | PIC_ORIGINAL_RSP, |
69 | | PIC_PREDICTION, |
70 | | PIC_RESIDUAL, |
71 | | PIC_SAO_TEMP, |
72 | | NUM_PIC_TYPES, |
73 | | PIC_ORIGINAL_RSP_REC, |
74 | | }; |
75 | | |
76 | | // --------------------------------------------------------------------------- |
77 | | // coding structure |
78 | | // --------------------------------------------------------------------------- |
79 | | |
80 | | class CodingStructure |
81 | | { |
82 | | public: |
83 | | |
84 | | UnitArea area; |
85 | | UnitArea _maxArea; |
86 | | |
87 | | Picture* picture; |
88 | | CodingStructure* parent; |
89 | | CodingStructure* lumaCS; |
90 | | Slice* slice; |
91 | | |
92 | | UnitScale unitScale[MAX_NUM_COMP]; |
93 | | |
94 | | int baseQP; |
95 | | int prevQP[MAX_NUM_CH]; |
96 | | int currQP[MAX_NUM_CH]; |
97 | | int chromaQpAdj; //th this seems to belong to CUCtx rather than to cs |
98 | | const SPS* sps; |
99 | | const PPS* pps; |
100 | | PicHeader* picHeader; |
101 | | APS* alfAps[ALF_CTB_MAX_NUM_APS]; |
102 | | APS* lmcsAps; |
103 | | APS* scalinglistAps; |
104 | | const VPS* vps; |
105 | | const PreCalcValues* pcv; |
106 | | |
107 | | CodingStructure( XUCache& unitCache, std::mutex* mutex ); |
108 | | void createPicLevel( const UnitArea& _unit, const PreCalcValues* _pcv ); |
109 | | void createForSearch( const ChromaFormat _chromaFormat, const Area& _area ); |
110 | | void destroy(); |
111 | | void releaseIntermediateData(); |
112 | | |
113 | | void rebindPicBufs(); |
114 | | void createCoeffs(); |
115 | | void destroyCoeffs(); |
116 | | |
117 | | void allocateVectorsAtPicLevel(); |
118 | | |
119 | | // --------------------------------------------------------------------------- |
120 | | // global accessors |
121 | | // --------------------------------------------------------------------------- |
122 | | |
123 | | const CodingUnit* getCU(const Position& pos, const ChannelType _chType, const TreeType _treeType) const; |
124 | | const TransformUnit* getTU(const Position& pos, const ChannelType _chType, const int subTuIdx = -1) const; |
125 | | |
126 | | CodingUnit* getCU(const Position& pos, const ChannelType _chType, const TreeType _treeType); |
127 | | CodingUnit* getLumaCU( const Position& pos ); |
128 | | TransformUnit* getTU(const Position& pos, const ChannelType _chType, const int subTuIdx = -1); |
129 | | |
130 | 0 | const CodingUnit* getCU(const ChannelType& _chType, const TreeType _treeType) const { return getCU(area.blocks[_chType].pos(), _chType, _treeType); } |
131 | 0 | const TransformUnit* getTU(const ChannelType& _chType) const { return getTU(area.blocks[_chType].pos(), _chType); } |
132 | | |
133 | 0 | CodingUnit* getCU(const ChannelType& _chType, const TreeType _treeType ) { return getCU(area.blocks[_chType].pos(), _chType, _treeType); } |
134 | 0 | TransformUnit* getTU(const ChannelType& _chType ) { return getTU(area.blocks[_chType].pos(), _chType); } |
135 | | |
136 | | const CodingUnit* getCURestricted(const Position& pos, const Position curPos, const unsigned curSliceIdx, const unsigned curTileIdx, const ChannelType _chType, const TreeType treeType) const; |
137 | | const CodingUnit* getCURestricted(const Position& pos, const CodingUnit& curCu, const ChannelType _chType) const; |
138 | | const TransformUnit* getTURestricted(const Position& pos, const TransformUnit& curTu, const ChannelType _chType) const; |
139 | | |
140 | | CodingUnit& addCU(const UnitArea& unit, const ChannelType _chType, CodingUnit* cuInit = nullptr); |
141 | | TransformUnit& addTU(const UnitArea& unit, const ChannelType _chType, CodingUnit* cu, TransformUnit* tuInit = nullptr); |
142 | | void addEmptyTUs( Partitioner &partitioner, CodingUnit* cu ); |
143 | | |
144 | | CUTraverser traverseCUs(const UnitArea& _unit, const ChannelType _chType); |
145 | | TUTraverser traverseTUs(const UnitArea& _unit, const ChannelType _chType); |
146 | | |
147 | | cCUTraverser traverseCUs(const UnitArea& _unit, const ChannelType _chType) const; |
148 | | cTUTraverser traverseTUs(const UnitArea& _unit, const ChannelType _chType) const; |
149 | | // --------------------------------------------------------------------------- |
150 | | // encoding search utilities |
151 | | // --------------------------------------------------------------------------- |
152 | | |
153 | | double cost; |
154 | | double costDbOffset; |
155 | | double lumaCost; |
156 | | uint64_t fracBits; |
157 | | Distortion dist; |
158 | | Distortion interHad; |
159 | | |
160 | | void initStructData ( const int QP = MAX_INT, const bool skipMotBuf = true, const UnitArea* area = nullptr ); |
161 | | void initSubStructure( CodingStructure& cs, const ChannelType chType, const UnitArea& subArea, const bool isTuEnc, PelStorage* pOrgBuffer = nullptr, PelStorage* pRspBuffer = nullptr); |
162 | | void compactResize ( const UnitArea& area ); |
163 | | |
164 | | void copyStructure (const CodingStructure& cs, const ChannelType chType, const TreeType treeType, const bool copyTUs = false, const bool copyRecoBuffer = false); |
165 | | void useSubStructure ( CodingStructure& cs, const ChannelType chType, const TreeType treeType, const UnitArea& subArea, const bool cpyRecoToPic = true); |
166 | | |
167 | | void clearTUs( bool force = false ); |
168 | | void clearCUs( bool force = false ); |
169 | | |
170 | | void createTempBuffers( const bool isTopLayer ); |
171 | | void destroyTempBuffers(); |
172 | | private: |
173 | | void createInternals(const UnitArea& _unit, const bool isTopLayer); |
174 | | |
175 | | public: |
176 | | |
177 | | |
178 | | std::vector< CodingUnit*> cus; |
179 | | std::vector< TransformUnit*> tus; |
180 | | |
181 | | LutMotionCand motionLut; |
182 | | std::vector<LutMotionCand> motionLutBuf; |
183 | | void addMiToLut(static_vector<HPMVInfo, MAX_NUM_HMVP_CANDS>& lut, const HPMVInfo &mi); |
184 | | |
185 | | private: |
186 | | |
187 | | // needed for TU encoding |
188 | | bool m_isTuEnc; |
189 | | |
190 | | CodingUnit** m_cuPtr [MAX_NUM_CH]; |
191 | | |
192 | | unsigned m_numCUs; |
193 | | unsigned m_numTUs; |
194 | | |
195 | | CUCache& m_cuCache; |
196 | | TUCache& m_tuCache; |
197 | | std::mutex* m_unitCacheMutex; |
198 | | |
199 | | std::vector<SAOBlkParam> m_sao; |
200 | | |
201 | | PelStorage m_pred; |
202 | | PelStorage m_resi; |
203 | | PelStorage m_reco; |
204 | | PelStorage m_rspreco; |
205 | | PelStorage* m_org; |
206 | | PelStorage* m_rsporg; |
207 | | |
208 | | TCoeffSig* m_coeffs [MAX_NUM_COMP]; |
209 | | int m_offsets[MAX_NUM_COMP]; |
210 | | |
211 | | std::vector<Mv> m_dmvrMvCache; |
212 | | int m_dmvrMvCacheOffset; |
213 | | |
214 | | MotionInfo* m_motionBuf; |
215 | | |
216 | | LoopFilterParam* m_lfParam[NUM_EDGE_DIR]; |
217 | | |
218 | | Size m_mapSize[MAX_NUM_CH]; |
219 | | |
220 | | |
221 | | public: |
222 | | CodingStructure* bestParent; |
223 | | bool resetIBCBuffer; |
224 | | |
225 | | MotionBuf getMotionBuf( const Area& _area ); |
226 | 0 | MotionBuf getMotionBuf( const UnitArea& _area ) { return getMotionBuf( _area.Y() ); } |
227 | 0 | MotionBuf getMotionBuf() { return getMotionBuf( area.Y() ); } |
228 | | |
229 | | const CMotionBuf getMotionBuf( const Area& _area ) const; |
230 | 0 | const CMotionBuf getMotionBuf( const UnitArea& _area ) const { return getMotionBuf( _area.Y() ); } |
231 | 0 | const CMotionBuf getMotionBuf() const { return getMotionBuf( area.Y() ); } |
232 | | |
233 | | MotionInfo& getMotionInfo( const Position& pos ); |
234 | | const MotionInfo& getMotionInfo( const Position& pos ) const; |
235 | | |
236 | 0 | MotionInfo const* getMiMapPtr() const { return m_motionBuf; } |
237 | 0 | MotionInfo * getMiMapPtr() { return m_motionBuf; } |
238 | 0 | ptrdiff_t getMiMapStride() const { return ( ptrdiff_t ) g_miScaling.scaleHor( area.Y().width ); } |
239 | | |
240 | | LFPBuf getLoopFilterParamBuf(const DeblockEdgeDir& edgeDir); |
241 | | const CLFPBuf getLoopFilterParamBuf(const DeblockEdgeDir& edgeDir) const; |
242 | | |
243 | 0 | LoopFilterParam const* getLFPMapPtr ( const DeblockEdgeDir edgeDir ) const { return m_lfParam[edgeDir]; } |
244 | 0 | LoopFilterParam * getLFPMapPtr ( const DeblockEdgeDir edgeDir ) { return m_lfParam[edgeDir]; } |
245 | 0 | ptrdiff_t getLFPMapStride() const { return ( ptrdiff_t ) m_mapSize[CH_L].width; } |
246 | | |
247 | | UnitScale getScaling(const UnitScale::ScaliningType type, const ChannelType chType = CH_L) const |
248 | 0 | { |
249 | 0 | return type == UnitScale::MI_MAP ? g_miScaling : unitScale[chType]; |
250 | 0 | } |
251 | | |
252 | | public: |
253 | | // --------------------------------------------------------------------------- |
254 | | // temporary (shadowed) data accessors |
255 | | // --------------------------------------------------------------------------- |
256 | 0 | PelBuf getPredBuf(const CompArea& blk) { return getBuf(blk, PIC_PREDICTION); } |
257 | 0 | const CPelBuf getPredBuf(const CompArea& blk) const { return getBuf(blk, PIC_PREDICTION); } |
258 | 0 | PelUnitBuf getPredBuf(const UnitArea& unit) { return getBuf(unit, PIC_PREDICTION); } |
259 | 0 | const CPelUnitBuf getPredBuf(const UnitArea& unit) const { return getBuf(unit, PIC_PREDICTION); } |
260 | | |
261 | 0 | PelBuf getResiBuf(const CompArea& blk) { return getBuf(blk, PIC_RESIDUAL); } |
262 | 0 | const CPelBuf getResiBuf(const CompArea& blk) const { return getBuf(blk, PIC_RESIDUAL); } |
263 | 0 | PelUnitBuf getResiBuf(const UnitArea& unit) { return getBuf(unit, PIC_RESIDUAL); } |
264 | 0 | const CPelUnitBuf getResiBuf(const UnitArea& unit) const { return getBuf(unit, PIC_RESIDUAL); } |
265 | | |
266 | 0 | PelBuf getRecoBuf(const CompArea& blk) { return getBuf(blk, PIC_RECONSTRUCTION); } |
267 | 0 | const CPelBuf getRecoBuf(const CompArea& blk) const { return getBuf(blk, PIC_RECONSTRUCTION); } |
268 | 0 | PelUnitBuf getRecoBuf(const UnitArea& unit) { return getBuf(unit, PIC_RECONSTRUCTION); } |
269 | 0 | const CPelUnitBuf getRecoBuf(const UnitArea& unit) const { return getBuf(unit, PIC_RECONSTRUCTION); } |
270 | | |
271 | 0 | PelBuf getOrgBuf(const CompArea& blk) { return getBuf(blk, PIC_ORIGINAL); } |
272 | 0 | const CPelBuf getOrgBuf(const CompArea& blk) const { return getBuf(blk, PIC_ORIGINAL); } |
273 | 0 | PelUnitBuf getOrgBuf(const UnitArea& unit) { return getBuf(unit, PIC_ORIGINAL); } |
274 | 0 | const CPelUnitBuf getOrgBuf(const UnitArea& unit) const { return getBuf(unit, PIC_ORIGINAL); } |
275 | | |
276 | 0 | PelBuf getRspOrgBuf(const CompArea& blk) { return getBuf(blk, PIC_ORIGINAL_RSP); } |
277 | 0 | const CPelBuf getRspOrgBuf(const CompArea& blk) const { return getBuf(blk, PIC_ORIGINAL_RSP); } |
278 | | |
279 | 0 | PelBuf getRspRecoBuf(const CompArea &blk) { return getBuf(blk, PIC_ORIGINAL_RSP_REC); } |
280 | 0 | const CPelBuf getRspRecoBuf(const CompArea &blk) const { return getBuf(blk, PIC_ORIGINAL_RSP_REC); } |
281 | | |
282 | 0 | PelUnitBuf& getRecoBufRef() { return m_reco; } |
283 | 0 | PelBuf& getRspRecoBuf() { return m_rspreco.Y(); } |
284 | 0 | const CPelBuf getRspRecoBuf() const { return m_rspreco.Y(); } |
285 | | |
286 | 0 | PelBuf& getRspOrgBuf() { return m_rsporg->Y(); } |
287 | 0 | const CPelBuf getRspOrgBuf() const { return m_rsporg->Y(); } |
288 | | |
289 | 0 | PelBuf getOrgBuf(const ComponentID compID) { return m_org->get(compID); } |
290 | 0 | const CPelBuf getOrgBuf(const ComponentID compID) const { return m_org->get(compID); } |
291 | 0 | PelUnitBuf& getOrgBuf() { return *m_org; } |
292 | 0 | const CPelUnitBuf getOrgBuf() const { return *m_org; } |
293 | | |
294 | | // pred buffer |
295 | 0 | PelBuf getPredBuf(const ComponentID compID) { return m_pred.get(compID); } |
296 | 0 | const CPelBuf getPredBuf(const ComponentID compID)const { return m_pred.get(compID); } |
297 | 0 | PelUnitBuf& getPredBuf() { return m_pred; } |
298 | 0 | const CPelUnitBuf getPredBuf() const { return m_pred; } |
299 | | |
300 | | // resi buffer |
301 | 0 | PelBuf getResiBuf(const ComponentID compID) { return m_resi.get(compID); } |
302 | 0 | const CPelBuf getResiBuf(const ComponentID compID)const { return m_resi.get(compID); } |
303 | 0 | PelUnitBuf& getResiBuf() { return m_resi; } |
304 | 0 | const CPelUnitBuf getResiBuf() const { return m_resi; } |
305 | | |
306 | | // reco buffer |
307 | 0 | const CPelBuf getRecoBuf(const ComponentID compID)const { return m_reco.get(compID); } |
308 | 0 | PelBuf getRecoBuf(const ComponentID compID) { return m_reco.get(compID); } |
309 | 0 | PelUnitBuf& getRecoBuf() { return m_reco; } |
310 | 0 | const CPelUnitBuf getRecoBuf() const { return m_reco; } |
311 | | |
312 | | private: |
313 | | |
314 | | PelBuf getBuf(const CompArea& blk, const PictureType type); |
315 | | const CPelBuf getBuf(const CompArea& blk, const PictureType type) const; |
316 | | PelUnitBuf getBuf(const UnitArea& unit, const PictureType type); |
317 | | const CPelUnitBuf getBuf(const UnitArea& unit, const PictureType type) const; |
318 | | }; |
319 | | |
320 | | |
321 | 0 | static inline uint32_t getNumberValidTBlocks(const PreCalcValues& pcv) { return (pcv.chrFormat==CHROMA_400) ? 1 : MAX_NUM_COMP; }Unexecuted instantiation: vvencimpl.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: InitX86.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: AdaptiveLoopFilter_sse41.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: FGA_sse41.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: InterPred_sse41.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: IntraPred_sse41.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: LoopFilter_sse41.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: MCTF_avx41.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: AdaptiveLoopFilter_avx2.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: FGA_avx2.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: InterPred_avx2.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: IntraPred_avx2.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: LoopFilter_avx2.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: MCTF_avx2.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: AdaptiveLoopFilter.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: CodingStructure.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: ContextModelling.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: DepQuant.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: Picture.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: Quant.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: QuantRDOQ2.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: Rom.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: Slice.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: Unit.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: UnitPartitioner.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: UnitTools.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncLib.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: PreProcess.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: RateCtrl.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: InterPrediction.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: MCTF.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: Mv.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: QuantRDOQ.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: BitAllocation.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncGOP.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncPicture.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncReshape.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncSlice.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: GOPCfg.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: InterSearch.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: SEIFilmGrainAnalyzer.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: SEIwrite.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: VLCWriter.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: LoopFilter.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: PicYuvMD5.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: Reshape.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: SampleAdaptiveOffset.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: TrQuant.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: CABACWriter.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncAdaptiveLoopFilter.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncCu.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncModeCtrl.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: EncSampleAdaptiveOffset.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: IntraSearch.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: IntraPrediction.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: MatrixIntraPrediction.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) Unexecuted instantiation: DecCu.cpp:vvenc::getNumberValidTBlocks(vvenc::PreCalcValues const&) |
322 | | |
323 | | } // namespace vvenc |
324 | | |
325 | | //! \} |
326 | | |