File Structure of rav1e 0.4.0

May 8, 2021 ยท View on GitHub

Table of Content

High-level directory structure

Image

Source: draw.io

Overview of src/*

The below table gives a brief overview of design of src/*

FilenameFunctionality
activity.rsImplementation of Activity masking functions for planes
api/*.rsContains public API of rav1e, for more information check documentation
arm/32/*.SARM optimised functions for different encoding tools imported from dav1d by release
arm/64/*.SAArch64 optimised functions for different encoding tools imported from dav1d by release
arm/asm.SCommon functions used for Assembly implementation
arm/tables.STables for various ARM optimised functions
asm/*/*.rsHigh-level functions for binding rust and assembly functions for x86 and AArch64 Architecture
bin/common.rsFunctions, enums, structures used command-line tool and debugging
bin/rav1e.rsCLI Interface for encoding from y4m files with rav1e
bin/stats.rsFunctions for displaying Frame summary, progress info, metrics of the encoding process
bin/kv.rsSerialisation configuration of Key-value strings
bin/error.rsFunctions and enums to parse various errors and displaying
bin/muxer/*.rsContains IVF Muxer functions for header definition, writing frames and flushing
bin/decoder/*.rsDecoder related structures and functions
capi.rsC Compatible API for using rav1e as a library
cdef.rsCDEF Filter implementation for the encoder
context/*.rsHigh-level functions that write symbols to the bitstream, and maintain context
cpu_features/*.rsFunctions to toggle CPU optimisations for different architectures
deblock.rsDeblocking loop filter implementation for addressing blocking artifacts
dist.rsSAD and SATD functions and implementation for various encoder functions
ec.rsLow-level implementation of the entropy coder, which directly writes the bitstream
encoder.rsLow-level implementation of the AV1 encoder tools functions and structures
entropymode.rsLow-level implementation of entropy mode
ext/x86/x86inc.asmX86 Assembly header providing an easier way between different calling conventions (x86_32, win64, linux64)
frame/*.rsMisc encoder specific frame and plane enums apart
fuzzing.rsFunctions to initialise fuzz targets for encoder process
header.rsThe enums and structs of bitstream headers for writing
lib.rsThe top level library, contains code to write headers, manage buffers, and iterate through each superblock
lrf.rsLow-level implementation of Loop restoration filter
mc.rsLow-level implementation of Motion Compensation of the encoding process
me.rsMotion Estimation related structures and functions of the encoding process
partition.rsFunctions and enums to manage partitions (subdivisions of a superblock)
predict.rsIntra and inter prediction implementations
quantize.rsQuantization and dequantization functions for coefficients
rate.rsLow-level implementation of rate control API (Constant Quantizer)
rdo.rsRDO-related structures and distortion computation functions
rdo_tables.rsSet of RDO rate values used for RDO related calculation
recon_intra.rsFunctions used for directional intra-prediction modes
scan_order.rsFunctions definitions for various block-level scan orders
scenechange/*.rsLow-level implementation of fast screen-cut detection b/w frames for adaptive keyframe selection
segmentation.rsTop-level implementation of segmentation index coding
test_encode_decode/*.rsVarious encoder-decoder tests using dav1d and aom
tiling/*.rsImplementation of tiling during encoding
token_cdfs.rsToken cdf header for entropy mode
transform/*.rsImplementations of DCT and ADST transforms
util/*.rsMisc utility code
x86/*.rsX86 optimised functions for various encoder functions along with functions imported from dav1d by release