HEVC Test Model (HM)
HM-16.18
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
Lib
TLibEncoder
TEncBinCoderCABACCounter.cpp
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
#include "
TEncBinCoderCABACCounter.h
"
39
#include "
TLibCommon/TComRom.h
"
40
#include "
TLibCommon/Debug.h
"
41
42
43
#if FAST_BIT_EST
44
47
48
49
TEncBinCABACCounter::TEncBinCABACCounter
()
50
{
51
}
52
53
TEncBinCABACCounter::~TEncBinCABACCounter
()
54
{
55
}
56
57
Void
TEncBinCABACCounter::finish
()
58
{
59
m_pcTComBitIf
->
write
(0,
UInt
(
m_fracBits
>> 15) );
60
m_fracBits
&= 32767;
61
}
62
63
UInt
TEncBinCABACCounter::getNumWrittenBits
()
64
{
65
return
m_pcTComBitIf
->
getNumberOfWrittenBits
() +
UInt
(
m_fracBits
>> 15 );
66
}
67
74
Void
TEncBinCABACCounter::encodeBin
(
UInt
binValue,
ContextModel
&rcCtxModel )
75
{
76
#if DEBUG_ENCODER_SEARCH_BINS
77
const
UInt64
startingFracBits =
m_fracBits
;
78
#endif
79
80
m_uiBinsCoded
+=
m_binCountIncrement
;
81
m_fracBits
+= rcCtxModel.
getEntropyBits
( binValue );
82
rcCtxModel.
update
( binValue );
83
84
#if DEBUG_ENCODER_SEARCH_BINS
85
if
((
g_debugCounter
+ debugEncoderSearchBinWindow) >= debugEncoderSearchBinTargetLine)
86
{
87
std::cout <<
g_debugCounter
<<
": coding bin value "
<< binValue <<
", fracBits = ["
<< startingFracBits <<
"->"
<<
m_fracBits
<<
"]\n"
;
88
}
89
90
if
(
g_debugCounter
>= debugEncoderSearchBinTargetLine)
91
{
92
UChar
breakPointThis;
93
breakPointThis = 7;
94
}
95
if
(
g_debugCounter
>= (debugEncoderSearchBinTargetLine + debugEncoderSearchBinWindow))
96
{
97
exit(0);
98
}
99
g_debugCounter
++;
100
#endif
101
}
102
108
Void
TEncBinCABACCounter::encodeBinEP
(
UInt
/*binValue*/
)
109
{
110
m_uiBinsCoded
+=
m_binCountIncrement
;
111
m_fracBits
+= 32768;
112
}
113
120
Void
TEncBinCABACCounter::encodeBinsEP
(
UInt
/*binValues*/
,
Int
numBins )
121
{
122
m_uiBinsCoded
+= numBins & -
m_binCountIncrement
;
123
m_fracBits
+= 32768 * numBins;
124
}
125
131
Void
TEncBinCABACCounter::encodeBinTrm
(
UInt
binValue )
132
{
133
m_uiBinsCoded
+=
m_binCountIncrement
;
134
m_fracBits
+=
ContextModel::getEntropyBitsTrm
( binValue );
135
}
136
137
Void
TEncBinCABACCounter::align
()
138
{
139
m_fracBits
= (
m_fracBits
+ 32767) & (~32767);
140
}
141
143
#endif
144
ContextModel::getEntropyBits
Int getEntropyBits(Short val)
Definition:
ContextModel.h:79
TEncBinCABAC::m_binCountIncrement
Int m_binCountIncrement
Definition:
TEncBinCoderCABAC.h:99
TEncBinCABACCounter::encodeBinTrm
Void encodeBinTrm(UInt binValue)
Encode terminating bin.
Definition:
TEncBinCoderCABACCounter.cpp:131
TEncBinCABACCounter::align
Void align()
Definition:
TEncBinCoderCABACCounter.cpp:137
ContextModel::getEntropyBitsTrm
static Int getEntropyBitsTrm(Int val)
Definition:
ContextModel.h:87
TComBitIf::write
virtual Void write(UInt uiBits, UInt uiNumberOfBits)=0
Void
void Void
Definition:
TypeDef.h:203
TEncBinCABAC::m_fracBits
UInt64 m_fracBits
Definition:
TEncBinCoderCABAC.h:101
TComRom.h
global variables & functions (header)
TEncBinCABACCounter::getNumWrittenBits
UInt getNumWrittenBits()
Definition:
TEncBinCoderCABACCounter.cpp:63
TEncBinCABAC::m_uiBinsCoded
UInt m_uiBinsCoded
Definition:
TEncBinCoderCABAC.h:98
UInt
unsigned int UInt
Definition:
TypeDef.h:212
TEncBinCABACCounter::encodeBinEP
Void encodeBinEP(UInt binValue)
Encode equiprobable bin.
Definition:
TEncBinCoderCABACCounter.cpp:108
TEncBinCABACCounter::TEncBinCABACCounter
TEncBinCABACCounter()
Definition:
TEncBinCoderCABACCounter.cpp:49
TEncBinCoderCABACCounter.h
ContextModel
context model class
Definition:
ContextModel.h:57
TEncBinCABACCounter::finish
Void finish()
Definition:
TEncBinCoderCABACCounter.cpp:57
UChar
unsigned char UChar
Definition:
TypeDef.h:208
TEncBinCABACCounter::~TEncBinCABACCounter
virtual ~TEncBinCABACCounter()
Definition:
TEncBinCoderCABACCounter.cpp:53
UInt64
unsigned long long UInt64
Definition:
TypeDef.h:233
TEncBinCABACCounter::encodeBin
Void encodeBin(UInt binValue, ContextModel &rcCtxModel)
Encode bin.
Definition:
TEncBinCoderCABACCounter.cpp:74
g_debugCounter
UInt g_debugCounter
Definition:
Debug.cpp:193
Int
int Int
Definition:
TypeDef.h:211
TEncBinCABACCounter::encodeBinsEP
Void encodeBinsEP(UInt binValues, Int numBins)
Encode equiprobable bins.
Definition:
TEncBinCoderCABACCounter.cpp:120
TEncBinCABAC::m_pcTComBitIf
TComBitIf * m_pcTComBitIf
Definition:
TEncBinCoderCABAC.h:92
ContextModel::update
Void update(Int binVal)
Definition:
ContextModel.h:82
Debug.h
Defines types and objects for environment-variable-based debugging and feature control.
TComBitIf::getNumberOfWrittenBits
virtual UInt getNumberOfWrittenBits() const =0
Generated on Wed Jun 6 2018 16:56:49 for HEVC Test Model (HM) by
1.8.5