cros_codecs/encoder/
av1.rs

1// Copyright 2024 The ChromiumOS Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use crate::codec::av1::parser::BitDepth;
6use crate::codec::av1::parser::Profile;
7use crate::encoder::PredictionStructure;
8use crate::encoder::Tunings;
9use crate::Resolution;
10
11pub struct AV1;
12
13#[derive(Clone)]
14pub struct EncoderConfig {
15    pub profile: Profile,
16    pub bit_depth: BitDepth,
17    pub resolution: Resolution,
18    pub pred_structure: PredictionStructure,
19    /// Initial tunings values
20    pub initial_tunings: Tunings,
21}
22
23impl Default for EncoderConfig {
24    fn default() -> Self {
25        // Artificially encoder configuration with intent to be widely supported.
26        Self {
27            profile: Profile::Profile0,
28            bit_depth: BitDepth::Depth8,
29            resolution: Resolution {
30                width: 320,
31                height: 240,
32            },
33            pred_structure: PredictionStructure::LowDelay { limit: 1024 },
34            initial_tunings: Default::default(),
35        }
36    }
37}