Libavutil
The libavutil library is a utility library to aid portable multimediaprogramming. It contains safe portable string functions, random numbergenerators, data structures, additional mathematics functions, cryptography andmultimedia related functionality (like enumerations for pixel and sampleformats). It is not a library for code needed by both libavcodec andlibavformat.
Libswscale
The libswscale library performs highly optimized image scaling andcolorspace and pixel format conversion operations.
Specifically, this library performs the following conversions:
- Rescaling: is the process of changing the video size. Several rescaling options and algorithms are available. This is usually a lossy process.
- Pixel format conversion: is the process of converting the image format and colorspace of the image, for example from planar YUV420P to RGB24 packed. It also handles packing conversion, that is converts from packed layout (all pixels belonging to distinct planes interleaved in the same buffer), to planar layout (all samples belonging to the same plane stored in a dedicated buffer or "plane").
This is usually a lossy process in case the source anddestination colorspaces differ.
The libswresample library performs highly optimized audio resampling,rematrixing and sample format conversion operations.
Specifically, this library performs the following conversions:
- Resampling: is the process of changing the audio rate, for example from a high sample rate of 44100Hz to 8000Hz. Audio conversion from high to low sample rate is a lossy process. Several resampling options and algorithms are available.
- Format conversion: is the process of converting the type of samples, for example from 16-bit signed samples to unsigned 8-bit or float samples. It also handles packing conversion, when passing from packed layout (all samples belonging to distinct channels interleaved in the same buffer), to planar layout (all samples belonging to the same channel stored in a dedicated buffer or "plane").
- Rematrixing: is the process of changing the channel layout, for example from stereo to mono. When the input channels cannot be mapped to the output streams, the process is lossy, since it involves different gain factors and mixing.
Various other audio conversions (e.g. stretching and padding) are enabledthrough dedicated options.
Libavcodec
The libavcodec library provides a generic encoding/decoding framework andcontains multiple decoders and encoders for audio, video and subtitle streams,and several bitstream filters.
The shared architecture provides various services ranging from bit streamI/O to DSP optimizations, and makes it suitable for implementing robust andfast codecs as well as for experimentation.
Libavformat
The libavformat library provides a generic framework for multiplexing anddemultiplexing (muxing and demuxing) audio, video and subtitle streams. Itencompasses multiple muxers and demuxers for multimedia container formats.
It also supports several input and output protocols to access a mediaresource.
Libavdevice
The libavdevice library provides a generic framework for grabbing from andrendering to many common multimedia input/output devices, and supports severalinput and output devices, including Video4Linux2, VfW, DShow, and ALSA.
Libavfilter
The libavfilter library provides a generic audio/video filtering frameworkcontaining several filters, sources and sinks.