Name Description Size
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