/src/vvdec/source/Lib/CommonLib/UnitTools.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) 2018-2026, Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. & The VVdeC 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 | | |
43 | | /** \file UnitTool.h |
44 | | * \brief defines operations for basic units |
45 | | */ |
46 | | |
47 | | #pragma once |
48 | | |
49 | | #include "Unit.h" |
50 | | #include "UnitPartitioner.h" |
51 | | #include "ContextModelling.h" |
52 | | #include "InterPrediction.h" |
53 | | |
54 | | namespace vvdec |
55 | | { |
56 | | |
57 | | UnitArea getArea( const Slice &slice, const UnitArea &area, const ChannelType chType, const TreeType treeType = TREE_D ); |
58 | | |
59 | | // CU tools |
60 | | namespace CU |
61 | | { |
62 | 0 | static inline bool isIntra (const CodingUnit &cu) { return cu.predMode() == MODE_INTRA; }Unexecuted instantiation: LoopFilter.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Rom.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: SampleAdaptiveOffset.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Slice.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Unit.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: UnitTools.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibParser.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibRecon.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: AdaptiveLoopFilter.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: CodingStructure.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: InterPrediction.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: IntraPrediction.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: MatrixIntraPrediction.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Quant.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Reshape.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: TrQuant.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: UnitPartitioner.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: CABACReader.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: DecCu.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) Unexecuted instantiation: ContextModelling.cpp:vvdec::CU::isIntra(vvdec::CodingUnit const&) |
63 | 0 | static inline bool isInter (const CodingUnit &cu) { return cu.predMode() == MODE_INTER; }Unexecuted instantiation: LoopFilter.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: Rom.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: SampleAdaptiveOffset.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: Slice.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: Unit.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: UnitTools.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibParser.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibRecon.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: AdaptiveLoopFilter.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: CodingStructure.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: InterPrediction.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: IntraPrediction.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: MatrixIntraPrediction.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: Quant.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: Reshape.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: TrQuant.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: UnitPartitioner.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: CABACReader.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: DecCu.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) Unexecuted instantiation: ContextModelling.cpp:vvdec::CU::isInter(vvdec::CodingUnit const&) |
64 | 0 | static inline bool isIBC (const CodingUnit &cu) { return cu.predMode() == MODE_IBC; }Unexecuted instantiation: LoopFilter.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: Rom.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: SampleAdaptiveOffset.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: Slice.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: Unit.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: UnitTools.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibParser.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibRecon.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: AdaptiveLoopFilter.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: CodingStructure.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: InterPrediction.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: IntraPrediction.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: MatrixIntraPrediction.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: Quant.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: Reshape.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: TrQuant.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: UnitPartitioner.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: CABACReader.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: DecCu.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) Unexecuted instantiation: ContextModelling.cpp:vvdec::CU::isIBC(vvdec::CodingUnit const&) |
65 | | |
66 | 0 | static inline bool isSepTree (const CodingUnit &cu) { return cu.treeType() != TREE_D; }Unexecuted instantiation: LoopFilter.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: Rom.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: SampleAdaptiveOffset.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: Slice.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: Unit.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: UnitTools.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibParser.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibRecon.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: AdaptiveLoopFilter.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: CodingStructure.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: InterPrediction.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: IntraPrediction.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: MatrixIntraPrediction.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: Quant.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: Reshape.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: TrQuant.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: UnitPartitioner.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: CABACReader.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: DecCu.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) Unexecuted instantiation: ContextModelling.cpp:vvdec::CU::isSepTree(vvdec::CodingUnit const&) |
67 | 0 | static inline bool isConsInter (const CodingUnit &cu) { return cu.modeType() == MODE_TYPE_INTER; }Unexecuted instantiation: LoopFilter.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: Rom.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: SampleAdaptiveOffset.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: Slice.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: Unit.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: UnitTools.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibParser.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibRecon.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: AdaptiveLoopFilter.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: CodingStructure.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: InterPrediction.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: IntraPrediction.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: MatrixIntraPrediction.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: Quant.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: Reshape.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: TrQuant.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: UnitPartitioner.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: CABACReader.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: DecCu.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) Unexecuted instantiation: ContextModelling.cpp:vvdec::CU::isConsInter(vvdec::CodingUnit const&) |
68 | 0 | static inline bool isConsIntra (const CodingUnit &cu) { return cu.modeType() == MODE_TYPE_INTRA; }Unexecuted instantiation: LoopFilter.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Rom.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: SampleAdaptiveOffset.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Slice.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Unit.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: UnitTools.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibParser.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: DecLibRecon.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: AdaptiveLoopFilter.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: CodingStructure.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: InterPrediction.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: IntraPrediction.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: MatrixIntraPrediction.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Quant.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: Reshape.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: TrQuant.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: UnitPartitioner.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: CABACReader.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: DecCu.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) Unexecuted instantiation: ContextModelling.cpp:vvdec::CU::isConsIntra(vvdec::CodingUnit const&) |
69 | | |
70 | | bool isDualITree (const CodingUnit &cu); |
71 | | |
72 | | bool isSameCtu (const CodingUnit &cu, const CodingUnit &cu2); |
73 | | bool isSameSlice (const CodingUnit &cu, const CodingUnit &cu2); |
74 | | bool isSameTile (const CodingUnit &cu, const CodingUnit &cu2); |
75 | | bool isSameSliceAndTile (const CodingUnit &cu, const CodingUnit &cu2); |
76 | | bool isSameSubPic (const CodingUnit &cu, const CodingUnit &cu2); |
77 | | bool isAvailable (const CodingUnit &cu, const CodingUnit &cu2, const bool bEnforceSliceRestriction, const bool bEnforceTileRestriction, const bool bEnforceSubPicRestriction); |
78 | | |
79 | | uint32_t getCtuAddr (const CodingUnit &cu); |
80 | | |
81 | | int predictQP (const CodingUnit& cu, const int prevQP ); |
82 | | bool isMIP (const CodingUnit &cu, const ChannelType &chType = CHANNEL_TYPE_LUMA); |
83 | | bool isPredRegDiffFromTB (const CodingUnit& cu, const ComponentID compID); |
84 | | bool isFirstTBInPredReg (const CodingUnit& cu, const ComponentID compID, const CompArea &area); |
85 | | void adjustPredArea (CompArea &area); |
86 | | bool isBcwIdxCoded (const CodingUnit& cu); |
87 | | void setBcwIdx (CodingUnit& cu, uint8_t uh); |
88 | | bool bdpcmAllowed (const CodingUnit& cu, const ComponentID compID); |
89 | | bool isMTSAllowed (const CodingUnit& cu, const ComponentID compID); |
90 | | |
91 | | |
92 | | bool divideTuInRows ( const CodingUnit &cu ); |
93 | | PartSplit getISPType ( const CodingUnit &cu, const ComponentID compID ); |
94 | | ISPType canUseISPSplit ( const CodingUnit &cu, const ComponentID compID ); |
95 | | ISPType canUseISPSplit ( const int width, const int height, const int maxTrSize = MAX_TB_SIZEY ); |
96 | | bool canUseLfnstWithISP ( const CompArea& cuArea, const ISPType ispSplitType ); |
97 | | bool canUseLfnstWithISP ( const CodingUnit& cu, const ChannelType chType ); |
98 | | uint32_t getISPSplitDim ( const int width, const int height, const PartSplit ispType ); |
99 | | |
100 | | bool hasSubCUNonZeroMVd (const CodingUnit& cu); |
101 | | bool hasSubCUNonZeroAffineMVd (const CodingUnit& cu); |
102 | | |
103 | | uint8_t getSbtIdx (const uint8_t sbtInfo); |
104 | | uint8_t getSbtPos (const uint8_t sbtInfo); |
105 | | uint8_t targetSbtAllowed (uint8_t idx, uint8_t sbtAllowed); |
106 | | |
107 | | |
108 | | uint8_t getSbtIdx (const CodingUnit& cu); |
109 | | uint8_t getSbtPos (const CodingUnit& cu); |
110 | | void setSbtIdx ( CodingUnit& cu, uint8_t idx); |
111 | | void setSbtPos ( CodingUnit& cu, uint8_t pos); |
112 | | uint8_t getSbtTuSplit (const CodingUnit& cu); |
113 | | uint8_t checkAllowedSbt (const CodingUnit& cu); |
114 | | PartSplit getSplitAtDepth (const CodingUnit& cu, const unsigned depth); |
115 | | bool checkCCLMAllowed (const CodingUnit &cu); |
116 | | bool getRprScaling ( const SPS* sps, const PPS* curPPS, const PPS* refPPS, int& xScale, int& yScale ); |
117 | | void checkConformanceILRP ( Slice *slice ); |
118 | | } |
119 | | // PU tools |
120 | | namespace PU |
121 | | { |
122 | | int getLMSymbolList (const CodingUnit &cu, int *pModeList); |
123 | | int getIntraMPMs (const CodingUnit &cu, unsigned *mpm, const ChannelType &channelType = CHANNEL_TYPE_LUMA); |
124 | | bool isDMChromaMIP (const CodingUnit &cu); |
125 | | int getMipSizeId (const CodingUnit &cu); |
126 | | uint32_t getIntraDirLuma (const CodingUnit &cu); |
127 | | void getIntraChromaCandModes (const CodingUnit &cu, unsigned modeList[NUM_CHROMA_MODE]); |
128 | | const CodingUnit& getCoLocatedLumaPU (const CodingUnit &cu); |
129 | | uint32_t getFinalIntraMode (const CodingUnit &cu, const ChannelType &chType); |
130 | | uint32_t getCoLocatedIntraLumaMode (const CodingUnit &cu); |
131 | | int getWideAngIntraMode (const TransformUnit &tu, const uint32_t dirMode, const ComponentID compID ); |
132 | | void getInterMergeCandidates (const CodingUnit &cu, MergeCtx& mrgCtx, MotionHist &hist, const int& mrgCandIdx = -1); |
133 | | void getIBCMergeCandidates (const CodingUnit &cu, MergeCtx& mrgCtx, MotionHist &hist, const int& mrgCandIdx = -1); |
134 | | void getInterMMVDMergeCandidates (const CodingUnit &cu, MergeCtx& mrgCtx, const int& mrgCandIdx = -1); |
135 | | int getDistScaleFactor (const int &currPOC, const int &currRefPOC, const int &colPOC, const int &colRefPOC); |
136 | | bool isDiffMER (const Position &pos1, const Position &pos2, const unsigned plevel); |
137 | | bool getColocatedMVP (const CodingUnit &cu, const RefPicList &eRefPicList, const Position &pos, Mv& rcMv, const int refIdx, bool sbFlag); |
138 | | void fillMvpCand ( CodingUnit &cu, const RefPicList &eRefPicList, const int &refIdx, AMVPInfo &amvpInfo, MotionHist& hist); |
139 | | void fillIBCMvpCand ( CodingUnit &cu, AMVPInfo &amvpInfo, MotionHist& hist); |
140 | | void fillAffineMvpCand ( CodingUnit &cu, const RefPicList &eRefPicList, const int &refIdx, AffineAMVPInfo &affiAMVPInfo); |
141 | | bool addMVPCandUnscaled (const CodingUnit &cu, const RefPicList &eRefPicList, const int &iRefIdx, const Position &pos, const MvpDir &eDir, AMVPInfo &amvpInfo); |
142 | | void xInheritedAffineMv (const CodingUnit &cu, bool is6param, const CodingUnit* puNeighbour, RefPicList eRefPicList, Mv rcMv[3] ); |
143 | | bool xCheckSimilarMotion (const int mergeCandIndex, const int prevCnt, const MergeCtx& mergeCandList, bool hasPruned[MRG_MAX_NUM_CANDS]); |
144 | | bool addMergeHMVPCand (const CodingStructure &cs, MergeCtx& mrgCtx, MotionHist& hist, bool canFastExit, const int& mrgCandIdx, const uint32_t maxNumMergeCandMin1, int &cnt, const int prevCnt, bool isAvailableSubPu, unsigned subPuMvpPos, bool ibcFlag, bool isGt4x4, bool isInterB ); |
145 | | void addAMVPHMVPCand (const CodingUnit &cu, MotionHist& hist, const RefPicList eRefPicList, const RefPicList eRefPicList2nd, const int currRefPOC, AMVPInfo &info, uint8_t imv); |
146 | | bool addAffineMVPCandUnscaled (const CodingUnit &cu, const RefPicList &refPicList, const int &refIdx, const Position &pos, const MvpDir &dir, AffineAMVPInfo &affiAmvpInfo ); |
147 | | bool isBipredRestriction (const CodingUnit &cu); |
148 | | void spanMotionInfo ( CodingUnit &cu ); |
149 | | void applyImv ( CodingUnit &cu, MotionHist& hist); |
150 | | void getAffineControlPointCand (const CodingUnit &cu, MotionInfo mi[4], bool isAvailable[4], int verIdx[4], int8_t gbiIdx, int modelIdx, int verNum, AffineMergeCtx& affMrgCtx); |
151 | | void getAffineMergeCand (const CodingUnit &cu, AffineMergeCtx& affMrgCtx, const int mrgCandIdx = -1 ); |
152 | | void setAllAffineMvField ( CodingUnit &cu, MvField *mvField, RefPicList eRefList ); |
153 | | void setAllAffineMv ( CodingUnit &cu, Mv affLT, Mv affRT, Mv affLB, RefPicList eRefList, bool clipCPMVs = false ); |
154 | | bool getInterMergeSubPuMvpCand (const CodingUnit &cu, AffineMergeCtx &mrgCtx, const int count); |
155 | | bool isBiPredFromDifferentDirEqDistPoc(const CodingUnit &cu); |
156 | | void restrictBiPredMergeCandsOne ( CodingUnit &cu); |
157 | | |
158 | | bool isLMCMode ( unsigned mode); |
159 | | void getGeoMergeCandidates (const CodingUnit &cu, MergeCtx &GeoMrgCtx, MotionHist& hist); |
160 | | void spanGeoMotionInfo ( CodingUnit &cu, MergeCtx &GeoMrgCtx, const uint8_t splitDir, const uint8_t candIdx0, const uint8_t candIdx1); |
161 | | bool checkDMVRCondition (const CodingUnit& cu); |
162 | | |
163 | | bool isRefPicSameSize (const CodingUnit& cu); |
164 | | } |
165 | | |
166 | | // TU tools |
167 | | namespace TU |
168 | | { |
169 | | bool getCbf (const TransformUnit &tu, const ComponentID &compID); |
170 | | void setCbf ( TransformUnit &tu, const ComponentID &compID, const bool &cbf); |
171 | | bool isTSAllowed (const TransformUnit &tu, const ComponentID compID); |
172 | | bool checkTuNoResidual ( TransformUnit &tu, unsigned idx ); |
173 | | |
174 | | bool needsSqrt2Scale (const TransformUnit &tu, const ComponentID &compID); |
175 | | bool needsBlockSizeTrafoScale (const TransformUnit &tu, const ComponentID &compID); |
176 | | const TransformUnit* getPrevTU (const TransformUnit &tu, const ComponentID compID); |
177 | | bool getPrevTUCbf (const TransformUnit &tu, const ComponentID compID); |
178 | | int getICTMode (const TransformUnit &tu, bool sign); |
179 | | int getTbAreaAfterCoefZeroOut (const TransformUnit &tu, const ComponentID compID); |
180 | | } |
181 | | |
182 | | uint32_t getCtuAddr (const Position& pos, const PreCalcValues &pcv); |
183 | | UnitArea getCtuArea (const CodingStructure& cs, unsigned col, unsigned line, bool clipToPic = false ); |
184 | | UnitArea getLineArea (const CodingStructure& cs, unsigned line, bool clipToPic = false ); |
185 | | |
186 | | int getNumModesMip (const Size& block); |
187 | | int getMipSizeId (const Size& block); |
188 | | bool allowLfnstWithMip(const Size& block); |
189 | | |
190 | | bool isCrossedByVirtualBoundaries( const PicHeader* picHeader, |
191 | | const Area& area, |
192 | | int& numHorVirBndry, |
193 | | int& numVerVirBndry, |
194 | | int horVirBndryPos[], |
195 | | int verVirBndryPos[] ); |
196 | | |
197 | | } |