aom_convolve.c |
|
10044 |
aom_dsp.cmake |
|
23737 |
aom_dsp_common.h |
Left shifting a negative value became undefined behavior in C99 (downgraded
from merely implementation-defined in C89). This should still compile to the
correct thing on any two's-complement machine, but avoid ubsan warnings. |
3586 |
aom_dsp_rtcd.c |
|
703 |
aom_dsp_rtcd_defs.pl |
|
96532 |
aom_filter.h |
|
1773 |
aom_simd.h |
|
1196 |
aom_simd_inline.h |
|
864 |
arm |
|
|
avg.c |
|
18015 |
binary_codes_reader.c |
|
2042 |
binary_codes_reader.h |
|
1203 |
binary_codes_writer.c |
|
3207 |
binary_codes_writer.h |
|
1487 |
bitreader.c |
|
1398 |
bitreader.h |
|
7170 |
bitreader_buffer.c |
|
3750 |
bitreader_buffer.h |
|
1644 |
bitwriter.c |
|
1145 |
bitwriter.h |
|
2898 |
bitwriter_buffer.c |
|
4481 |
bitwriter_buffer.h |
|
1806 |
blend.h |
|
1801 |
blend_a64_hmask.c |
|
2366 |
blend_a64_mask.c |
|
13442 |
blend_a64_vmask.c |
|
2478 |
blk_sse_sum.c |
|
908 |
butteraugli.c |
|
4505 |
butteraugli.h |
|
1011 |
entcode.c |
Given the current total integer number of bits used and the current value of
rng, computes the fraction number of bits used to OD_BITRES precision.
This is used by od_ec_enc_tell_frac() and od_ec_dec_tell_frac().
nbits_total: The number of whole bits currently used, i.e., the value
returned by od_ec_enc_tell() or od_ec_dec_tell().
rng: The current value of rng from either the encoder or decoder state.
Return: The number of bits scaled by 2**OD_BITRES.
This will always be slightly larger than the exact value (e.g., all
rounding error is in the positive direction). |
2298 |
entcode.h |
OPT: od_ec_window must be at least 32 bits, but if you have fast arithmetic
on a larger type, you can speed up the decoder by using it here. |
1418 |
entdec.c |
A range decoder.
This is an entropy decoder based upon \cite{Mar79}, which is itself a
rediscovery of the FIFO arithmetic code introduced by \cite{Pas76}.
It is very similar to arithmetic encoding, except that encoding is done with
digits in any base, instead of with bits, and so it is faster when using
larger bases (i.e.: a byte).
The author claims an average waste of $\frac{1}{2}\log_b(2b)$ bits, where $b$
is the base, longer than the theoretical optimum, but to my knowledge there
is no published justification for this claim.
This only seems true when using near-infinite precision arithmetic so that
the process is carried out with no rounding errors.
An excellent description of implementation details is available at
http://www.arturocampos.com/ac_range.html
A recent work \cite{MNW98} which proposes several changes to arithmetic
encoding for efficiency actually re-discovers many of the principles
behind range encoding, and presents a good theoretical analysis of them.
End of stream is handled by writing out the smallest number of bits that
ensures that the stream will be correctly decoded regardless of the value of
any subsequent bits.
od_ec_dec_tell() can be used to determine how many bits were needed to decode
all the symbols thus far; other data can be packed in the remaining bits of
the input buffer.
@PHDTHESIS{Pas76,
author="Richard Clark Pasco",
title="Source coding algorithms for fast data compression",
school="Dept. of Electrical Engineering, Stanford University",
address="Stanford, CA",
month=May,
year=1976,
URL="http://www.richpasco.org/scaffdc.pdf"
}
@INPROCEEDINGS{Mar79,
author="Martin, G.N.N.",
title="Range encoding: an algorithm for removing redundancy from a digitised
message",
booktitle="Video & Data Recording Conference",
year=1979,
address="Southampton",
month=Jul,
URL="http://www.compressconsult.com/rangecoder/rngcod.pdf.gz"
}
@ARTICLE{MNW98,
author="Alistair Moffat and Radford Neal and Ian H. Witten",
title="Arithmetic Coding Revisited",
journal="{ACM} Transactions on Information Systems",
year=1998,
volume=16,
number=3,
pages="256--294",
month=Jul,
URL="http://researchcommons.waikato.ac.nz/bitstream/handle/10289/78/content.pdf"
} |
9431 |
entdec.h |
The entropy decoder context. |
2945 |
entenc.c |
A range encoder.
See entdec.c and the references for implementation details \cite{Mar79,MNW98}.
@INPROCEEDINGS{Mar79,
author="Martin, G.N.N.",
title="Range encoding: an algorithm for removing redundancy from a digitised
message",
booktitle="Video \& Data Recording Conference",
year=1979,
address="Southampton",
month=Jul,
URL="http://www.compressconsult.com/rangecoder/rngcod.pdf.gz"
}
@ARTICLE{MNW98,
author="Alistair Moffat and Radford Neal and Ian H. Witten",
title="Arithmetic Coding Revisited",
journal="{ACM} Transactions on Information Systems",
year=1998,
volume=16,
number=3,
pages="256--294",
month=Jul,
URL="http://researchcommons.waikato.ac.nz/bitstream/handle/10289/78/content.pdf"
} |
11333 |
entenc.h |
The entropy encoder context. |
3431 |
fastssim.c |
|
16361 |
fft.c |
|
8870 |
fft_common.h |
!\brief A function pointer for computing 1d fft and ifft.
The function will point to an implementation for a specific transform size,
and may perform the transforms using vectorized instructions.
For a non-vectorized forward transforms of size n, the input and output
buffers will be size n. The output takes advantage of conjugate symmetry and
packs the results as: [r_0, r_1, ..., r_{n/2}, i_1, ..., i_{n/2-1}], where
(r_{j}, i_{j}) is the complex output for index j.
An inverse transform will assume that the complex "input" is packed
similarly. Its output will be real.
Non-vectorized transforms (e.g., on a single row) would use a stride = 1.
Vectorized implementations are parallelized along the columns so that the fft
can be performed on multiple columns at a time. In such cases the data block
for input and output is typically square (n x n) and the stride will
correspond to the spacing between rows. At minimum, the input size must be
n x simd_vector_length.
\param[in] input Input buffer. See above for size restrictions.
\param[out] output Output buffer. See above for size restrictions.
\param[in] stride The spacing in number of elements between rows
(or elements)
|
78127 |
flow_estimation |
|
|
fwd_txfm.c |
|
8294 |
grain_params.h |
!\file
\brief Describes film grain parameters
|
4879 |
grain_table.c |
!\file
\brief This file has the implementation details of the grain table.
The file format is an ascii representation for readability and
editability. Array parameters are separated from the non-array
parameters and prefixed with a few characters to make for easy
localization with a parameter set. Each entry is prefixed with "E"
and the other parameters are only specified if "update-parms" is
non-zero.
filmgrn1
E <start-time> <end-time> <apply-grain> <random-seed> <update-parms>
p <ar_coeff_lag> <ar_coeff_shift> <grain_scale_shift> ...
sY <num_y_points> <point_0_x> <point_0_y> ...
sCb <num_cb_points> <point_0_x> <point_0_y> ...
sCr <num_cr_points> <point_0_x> <point_0_y> ...
cY <ar_coeff_y_0> ....
cCb <ar_coeff_cb_0> ....
cCr <ar_coeff_cr_0> ....
E <start-time> ...
|
13221 |
grain_table.h |
!\file
\brief A table mapping from time to corresponding film grain parameters.
In order to apply grain synthesis in the decoder, the film grain parameters
need to be signalled in the encoder. The film grain parameters are time
varying, and for two-pass encoding (and denoiser implementation flexibility)
it is common to denoise the video and do parameter estimation before encoding
the denoised video.
The film grain table is used to provide this flexibility and is used as a
parameter that is passed to the encoder.
Further, if regraining is to be done in say a single pass mode, or in two
pass within the encoder (before frames are added to the lookahead buffer),
this data structure can be used to keep track of on-the-fly estimated grain
parameters, that are then extracted from the table before the encoded frame
is written.
|
3788 |
intrapred.c |
|
30845 |
intrapred_common.h |
|
2520 |
loopfilter.c |
pitch |
42700 |
mathutils.h |
|
4630 |
noise_model.c |
|
68811 |
noise_model.h |
!\brief Wrapper of data required to represent linear system of eqns and soln.
|
13577 |
noise_util.c |
|
7000 |
noise_util.h |
|
3009 |
odintrin.c |
clang-format off |
27981 |
odintrin.h |
clang-format off |
2550 |
prob.h |
The value stored in an iCDF is CDF_PROB_TOP minus the actual cumulative
probability (an "inverse" CDF).
This function converts from one representation to the other (and is its own
inverse). |
6646 |
psnr.c |
|
16195 |
psnr.h |
!\brief Converts SSE to PSNR
Converts sum of squared errros (SSE) to peak signal-to-noise ratio (PSNR).
\param[in] samples Number of samples
\param[in] peak Max sample value
\param[in] sse Sum of squared errors
|
4825 |
psnrhvs.c |
Normalized inverse quantization matrix for 8x8 DCT at the point of
transparency. This is not the JPEG based matrix from the paper,
this one gives a slightly higher MOS agreement. |
12015 |
pyramid.c |
|
18549 |
pyramid.h |
|
5212 |
quantize.c |
|
21686 |
quantize.h |
|
6168 |
recenter.h |
|
1915 |
sad.c |
Sum the difference between every corresponding element of the buffers. |
13207 |
sad_av1.c |
clang-format off |
8159 |
simd |
|
|
sse.c |
Sum the square of the difference between every corresponding element of the
buffers.
|
1616 |
ssim.c |
|
17419 |
ssim.h |
|
3280 |
subtract.c |
|
1712 |
sum_squares.c |
|
2271 |
txfm_common.h |
|
6032 |
variance.c |
|
50030 |
variance.h |
|
5438 |
vmaf.c |
picture index= |
6512 |
vmaf.h |
|
1631 |
x86 |
|
|