Skip to content

Commit 111d772

Browse files
committed
Make Config fully opaque
The fields are `pub(crate)` since the C-API setters would use them.
1 parent 493395b commit 111d772

File tree

6 files changed

+45
-33
lines changed

6 files changed

+45
-33
lines changed

examples/simple_encoding.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ use rav1e::config::SpeedSettings;
1212
use rav1e::*;
1313

1414
fn main() {
15-
let mut cfg = Config::default();
15+
let mut enc = EncoderConfig::default();
1616

17-
cfg.enc.width = 64;
18-
cfg.enc.height = 96;
17+
enc.width = 64;
18+
enc.height = 96;
1919

20-
cfg.enc.speed_settings = SpeedSettings::from_preset(9);
20+
enc.speed_settings = SpeedSettings::from_preset(9);
21+
22+
let cfg = Config::new().with_encoder_config(enc);
2123

2224
let mut ctx: Context<u16> = cfg.new_context().unwrap();
2325

src/api/config/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,9 @@ pub enum InvalidConfig {
9393
#[derive(Clone, Debug, Default)]
9494
pub struct Config {
9595
/// Settings which impact the produced bitstream.
96-
pub enc: EncoderConfig,
96+
pub(crate) enc: EncoderConfig,
9797
/// The number of threads in the threadpool.
98-
pub threads: usize,
99-
_guard: (),
98+
pub(crate) threads: usize,
10099
}
101100

102101
impl Config {

src/api/context.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,10 +265,11 @@ impl<T: Pixel> Context<T> {
265265
/// Ok(())
266266
/// }
267267
/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
268-
/// # let mut cfg = Config::default();
268+
/// # let mut enc = EncoderConfig::default();
269269
/// # // So it runs faster.
270-
/// # cfg.enc.width = 16;
271-
/// # cfg.enc.height = 16;
270+
/// # enc.width = 16;
271+
/// # enc.height = 16;
272+
/// # let cfg = Config::new().with_encoder_config(enc);
272273
/// # let mut ctx: Context<u8> = cfg.new_context()?;
273274
/// #
274275
/// # let frames = vec![ctx.new_frame(); 4].into_iter();

src/api/test.rs

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1662,62 +1662,70 @@ fn zero_frames() {
16621662

16631663
#[test]
16641664
fn tile_cols_overflow() {
1665-
let mut config = Config::default();
1666-
config.enc.tile_cols = usize::max_value();
1665+
let mut enc = EncoderConfig::default();
1666+
enc.tile_cols = usize::max_value();
1667+
let config = Config::new().with_encoder_config(enc);
16671668
let _: Result<Context<u8>, _> = config.new_context();
16681669
}
16691670

16701671
#[test]
16711672
fn max_key_frame_interval_overflow() {
1672-
let mut config = Config::default();
1673-
config.enc.max_key_frame_interval = i32::max_value() as u64;
1674-
config.enc.reservoir_frame_delay = None;
1673+
let mut enc = EncoderConfig::default();
1674+
enc.max_key_frame_interval = i32::max_value() as u64;
1675+
enc.reservoir_frame_delay = None;
1676+
let config = Config::new().with_encoder_config(enc);
16751677
let _: Result<Context<u8>, _> = config.new_context();
16761678
}
16771679

16781680
#[test]
16791681
fn target_bitrate_overflow() {
1680-
let mut config = Config::default();
1681-
config.enc.bitrate = i32::max_value();
1682-
config.enc.time_base = Rational::new(i64::max_value() as u64, 1);
1682+
let mut enc = EncoderConfig::default();
1683+
enc.bitrate = i32::max_value();
1684+
enc.time_base = Rational::new(i64::max_value() as u64, 1);
1685+
let config = Config::new().with_encoder_config(enc);
16831686
let _: Result<Context<u8>, _> = config.new_context();
16841687
}
16851688

16861689
#[test]
16871690
fn time_base_den_divide_by_zero() {
1688-
let mut config = Config::default();
1689-
config.enc.time_base = Rational::new(1, 0);
1691+
let mut enc = EncoderConfig::default();
1692+
enc.time_base = Rational::new(1, 0);
1693+
let config = Config::new().with_encoder_config(enc);
16901694
let _: Result<Context<u8>, _> = config.new_context();
16911695
}
16921696

16931697
#[test]
16941698
fn large_width_assert() {
1695-
let mut config = Config::default();
1696-
config.enc.width = u32::max_value() as usize;
1699+
let mut enc = EncoderConfig::default();
1700+
enc.width = u32::max_value() as usize;
1701+
let config = Config::new().with_encoder_config(enc);
16971702
let _: Result<Context<u8>, _> = config.new_context();
16981703
}
16991704

17001705
#[test]
17011706
fn reservoir_max_overflow() {
1702-
let mut config = Config::default();
1703-
config.enc.reservoir_frame_delay = Some(i32::max_value());
1704-
config.enc.bitrate = i32::max_value();
1705-
config.enc.time_base = Rational::new(i32::max_value() as u64 * 2, 1);
1707+
let mut enc = EncoderConfig::default();
1708+
enc.reservoir_frame_delay = Some(i32::max_value());
1709+
enc.bitrate = i32::max_value();
1710+
enc.time_base = Rational::new(i32::max_value() as u64 * 2, 1);
1711+
let config = Config::new().with_encoder_config(enc);
17061712
let _: Result<Context<u8>, _> = config.new_context();
17071713
}
17081714

17091715
#[test]
17101716
fn zero_width() {
1711-
let mut config = Config::default();
1712-
config.enc.width = 0;
1717+
let mut enc = EncoderConfig::default();
1718+
enc.width = 0;
1719+
let config = Config::new().with_encoder_config(enc);
17131720
let res: Result<Context<u8>, _> = config.new_context();
17141721
assert!(res.is_err());
17151722
}
17161723

17171724
#[test]
17181725
fn rdo_lookahead_frames_overflow() {
1719-
let mut config = Config::default();
1720-
config.enc.rdo_lookahead_frames = usize::max_value();
1726+
let mut enc = EncoderConfig::default();
1727+
enc.rdo_lookahead_frames = usize::max_value();
1728+
let config = Config::new().with_encoder_config(enc);
17211729
let res: Result<Context<u8>, _> = config.new_context();
17221730
assert!(res.is_err());
17231731
}

src/bin/rav1e.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ fn run() -> Result<(), error::CliError> {
406406
if let Some(save_config) = cli.save_config {
407407
let mut out = File::create(save_config)
408408
.map_err(|e| e.context("Cannot create configuration file"))?;
409-
let s = toml::to_string(&cfg.enc).unwrap();
409+
let s = toml::to_string(&cli.enc).unwrap();
410410
out
411411
.write_all(s.as_bytes())
412412
.map_err(|e| e.context("Cannot write the configuration file"))?
@@ -429,7 +429,7 @@ fn run() -> Result<(), error::CliError> {
429429
video_info.chroma_sampling,
430430
video_info.bit_depth
431431
);
432-
info!("Encoding settings: {}", cfg.enc);
432+
info!("Encoding settings: {}", cli.enc);
433433

434434
let progress = ProgressInfo::new(
435435
Rational { num: video_info.time_base.den, den: video_info.time_base.num },

src/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,9 @@ mod header;
195195

196196
use crate::encoder::*;
197197

198-
pub use crate::api::{Config, Context, EncoderStatus, InvalidConfig, Packet};
198+
pub use crate::api::{
199+
Config, Context, EncoderConfig, EncoderStatus, InvalidConfig, Packet,
200+
};
199201
pub use crate::frame::Frame;
200202
pub use crate::util::{CastFromPrimitive, Pixel, PixelType};
201203

0 commit comments

Comments
 (0)