Expand description
A ffmpeg-based software decoder backend for crosvm. Since it does not require any particular harware, it can provide fake hardware acceleration decoding to any guest and is mostly useful in order to work on the virtio-video specification, or to implement guest decoder code from the comfort of a workstation.
This backend is supposed to serve as the reference implementation for decoding backends in crosvm. As such it is fairly complete and exposes all the features and memory types that crosvm support.
The code in this main module provides the actual implementation and is free of unsafe code. Safe abstractions over the ffmpeg libraries are provided in sub-modules, one per ffmpeg library we want to support.
Structsยง
- Ffmpeg
Decoder - Ffmpeg
Decoder Session - A decoder session for the ffmpeg backend.
- Input
Buffer ๐ - Structure maintaining a mapping for an encoded input buffer that can be used as a libavcodec
buffer source. It also sends a
NotifyEndOfBitstreamBufferevent when dropped.
Enumsยง
- Change
Resolution ๐Error - Codec
Job ๐ - Types of input job we can receive from the crosvm decoder code.
- Session
State ๐ - A crosvm decoder needs to go through a number if setup stages before being able to decode, and can require some setup to be redone when a dynamic resolution change occurs. This enum ensures that the data associated with a given state only exists when we actually are in this state.
- TryDecode
Error ๐ - TryReceive
Frame ๐Error - TrySend
Frame ๐Error - TrySend
Packet ๐Error