📄 changes_detail.txt
字号:
Intra Coding Prediction Modes (Greg Conklin)
--------------------------------------------
As specified in the January, 2002 Geneva output document, 9 Intra
prediction modes have been implemented as described in VCEG-N54.DOC
as a configuable option. A compiler define USE_6_INTRA_MODES has
been used in the code so that one could revert the code back to the
old 6 intra modes. Simply define USE_6_INTRA_MODES and recompile
the code.
VLC Changes (Lois Kerofsky)
---------------------------
To implement the modifed VLC one functions in uvlc.c at the encoder
was modified. Also one function in uvlc.c at the decoder was modified.
I did not go to the effort of changing file and variable names to
replace UVLC with VLC. This could be considered.
Functions modified are included within a define _EXP_GOLOMB. This is
defined at the top of each uvlc.c file. The modified functions are:
ldecod\src\uvlc.c GetVLCSymbol
lencod\src\uvlc.c symbol2uvlc
I tested the code with an encode decode pair with _EXP_GOLOMB defined
and a second pair with them undefined and the reconstructed images at
the decoder are identical. Once satisfied it is easy to remove the prior
code.
I found two issues with the encoder. The encoder trace file trace_enc
does not contain correct bitstrings representing the codewords. The trace
of the original code gives many all zero codewords. The second issue I
found is in the use of the function symbol2uvlc. In some cases, this
function is called with a syntax element having more info bits than the
length of the code word. The original code used only the last bits of info
in building the codeword. In the modified code I mask out the last bits
before building the codeword. This bug could be traced further.
In my tests with doxygen I needed to disable the dot tool.
HAVE_DOT = NO
(KS) Note: dot is part of the ATT Graphviz tools available at
http://www.research.att.com/sw/tools/graphviz
Transform and Quantizer (Antti Hallapuro)
-----------------------------------------
In addition to transform changes, I have also extended quantization range
to [-8,39]. JVT decided that range should be extended, but the amount of
extension was not quite clear. I decided to follow Sony's proposal since
that is the only submission on QP range extension that I know. So, list
of changes includes:
- New transform and quantization
- Extension of QP range to [-8,39]
- Removal of some unused code
I had some trouble with RD-optimized mode decision and extended QP range.
Mode decision was not designed to work beyond QP range [0,33] so I had to
put in a hack that prevents performance drop when encoding beyond that range.
In fucntion vcalled RD_Mode_Decision lambda is now computed as
if (img->qp >= 0 && img->qp < 34)
rdopt->lambda_mode = 5.0 * exp (0.1 * qp) * (qp + 5.0) / (34.0 - qp);
else
rdopt->lambda_mode = 0.9*pow(2, qp/3.0);
"rdopt->lambda_mode = 0.9*pow(2, qp/3.0)" seems to works fine for whole QP
range although I did't test it extensively. I propose using that formula
exclusively.
There seems to be a bug in jm 1.2 decoder. If I encode mobile_cif at QP 0
and wihout RD-optimizations and decode resulting bitstream the decoder
crashes. It increased size of the decoding buffer, but this didn't fix the bug.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -