media: cros-codecs: h264: make max_dpb_frames a method of Sps

Move `max_dpb_frames` from Decoder to Sps, where it can be more useful.
This requires moving the Profile and Level enums to the parser module,
which is also a better place for them since they are part of the Sps.

This allows us to validate the Level during parsing and not every time
it is queried. Profile unfortunately is more tricky so let's leave it
untouched for now.

BUG=b:214478588
TEST=cargo test --features vaapi -p cros-codecs

Change-Id: I9ca908ef1f646c26e312449c76c2062ecb45af20
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4123658
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.corp-partner.google.com>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
3 files changed
tree: be4926674bd2913f6489ff08bc8e3a7d0f0477c8
  1. src/
  2. .gitignore
  3. Cargo.lock
  4. Cargo.toml
  5. CONTRIBUTING.md
  6. LICENSE
  7. README.md
README.md

Cros-codecs

A lightweight, simple, low-dependencies, and hopefully safe crate for using hardware-accelerated decoding and encoding on Linux.

It is developed for use in ChromeOS (particularly crosvm), but has no ChromeOS dependencies and should this be usable anywhere.

This crate is still under heavy development. Currently implemented features are:

  • Stateless decoder support.
  • VAAPI decoder support (using cros-libva) for H.264, VP8 and VP9.

Future features:

  • Stateful V4L2 decoder support.
  • Stateless V4L2 decoder support.
  • Vaapi encoder support.
  • V4L2 encoder support.
  • Support for stateless H.265 and AV1.
  • C API to be used in non-Rust projects.