| commit | 4a7b0b350d5a5cbb45431e040b4723f90703fd9f | [log] [tgz] |
|---|---|---|
| author | Justin Green <greenjustin@google.com> | Wed Aug 20 16:30:35 2025 -0400 |
| committer | Justin Green <greenjustin@google.com> | Wed Aug 20 16:40:15 2025 -0400 |
| tree | f98c4feeca4ed31f6c613f6f9fdd78d1576c9430 | |
| parent | b5fc81af1327d34906cf4f319104965ff5bb89cd [diff] |
Enable universal bitrate control on VA-API platforms Original design doc: go/universal-bitrate-control Universal bitrate control is a prerequisite for temporal layer encoding. Running an experiment with and without the flag enable shows that universal bitrate control has comparable performance with the hardware bitrate controller on Brya. There is a slight regression on the 180P H264 test vector, but there is a substantial improvement on the other test vectors. There is also a slight regression in the 180P VP9 test vector, but the hardware bitrate controller seems to overshoot the target bitrate by nearly 12%, so IMO this regression is not meaningful. Full experiment results can be found here: go/ubc-experiment Bug: 439816020 Test: ccenc_vp9_test ccenc_h264_test CtsMediaEncoderTestCases CtsMediaV2TestCases Change-Id: I274335040478ac1bfeccf8b84d7f5772c4a787c3
A lightweight, simple, low-dependency, and hopefully safe crate for hardware-accelerated video decoding and encoding on Linux.
It is developed for use in ChromeOS (particularly crosvm), but has no dependency to ChromeOS and should be usable anywhere.
The ccdec example program can decode an encoded stream and write the decoded frames to a file. As such it can be used for testing purposes.
$ cargo build --examples $ ./target/debug/examples/ccdec --help Usage: ccdec <input> [--output <output>] --input-format <input-format> [--output-format <output-format>] [--compute-md5 <compute-md5>] Simple player using cros-codecs Positional Arguments: input input file Options: --output output file to write the decoded frames to --input-format input format to decode from. --output-format pixel format to decode into. Default: i420 --compute-md5 whether to display the MD5 of the decoded stream, and at which granularity (stream or frame) --help display usage information
Fluster can be used for testing, using the ccdec example program described above. This branch contains support for cros-codecs testing. Just make sure the ccdec binary is in your PATH, and run Fluster using one of the ccdec decoders, e.g.
python fluster.py run -d ccdec-H.264 -ts JVT-AVC_V1
The majority of the code in the initial commit has been written by Daniel Almeida as a VAAPI backend for crosvm, before being split into this crate.