Name Description Size
aom_convolve.c 10425
aom_dsp.cmake 23001
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. 3252
aom_dsp_rtcd.c 702
aom_dsp_rtcd_defs.pl 106177
aom_filter.h 1772
aom_simd.h 1195
aom_simd_inline.h 856
arm
avg.c 18014
binary_codes_reader.c 1796
binary_codes_reader.h 1672
binary_codes_writer.c 4280
binary_codes_writer.h 2772
bitreader.c 1397
bitreader.h 7169
bitreader_buffer.c 3643
bitreader_buffer.h 1559
bitwriter.c 1144
bitwriter.h 2897
bitwriter_buffer.c 4491
bitwriter_buffer.h 1875
blend.h 1800
blend_a64_hmask.c 2365
blend_a64_mask.c 13441
blend_a64_vmask.c 2477
blk_sse_sum.c 907
butteraugli.c 4504
butteraugli.h 1010
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). 2297
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. 1417
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" } 9430
entdec.h The entropy decoder context. 2944
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" } 12911
entenc.h The entropy encoder context. 3597
fastssim.c 16360
fft.c 8834
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) 78488
flow_estimation
fwd_txfm.c 8293
grain_params.h !\file \brief Describes film grain parameters 4878
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> ... 13220
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. 3787
intrapred.c 29262
intrapred_common.h 2519
loopfilter.c pitch 42699
mathutils.h 4662
noise_model.c 68737
noise_model.h !\brief Wrapper of data required to represent linear system of eqns and soln. 13571
noise_util.c 6999
noise_util.h 3008
odintrin.c clang-format off 27980
odintrin.h clang-format off 2549
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). 6645
psnr.c 16038
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 4734
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. 12014
pyramid.c 16025
pyramid.h 4515
quantize.c 21685
quantize.h 6167
recenter.h 1914
rect.h 1261
sad.c Sum the difference between every corresponding element of the buffers. 13583
sad_av1.c clang-format off 9263
simd
sse.c Sum the square of the difference between every corresponding element of the buffers. 1615
ssim.c 17978
ssim.h 3279
subtract.c 1711
sum_squares.c 2176
txfm_common.h 6031
variance.c 58282
variance.h 5517
vmaf.c picture index= 6511
vmaf.h 1630
x86