1[package]
2name = "rav1e"
3version = "0.7.1"
4authors = ["Thomas Daede <tdaede@xiph.org>"]
5edition = "2021"
6rust-version = "1.70.0"
7build = "build.rs"
8include = [
9 "/Cargo.toml",
10 "/LICENSE",
11 "/PATENTS",
12 "/README.md",
13 "/build.rs",
14 "/cbindgen.toml",
15 "/src/**",
16]
17license = "BSD-2-Clause"
18description = "The fastest and safest AV1 encoder"
19readme = "README.md"
20repository = "https://github.com/xiph/rav1e/"
21autobenches = false
22autobins = false
23default-run = "rav1e"
24
25[features]
26unstable = []
27channel-api = ["crossbeam"]
28decode_test = ["aom-sys"]
29decode_test_dav1d = ["dav1d-sys"]
30binaries = [
31 "ivf",
32 "y4m",
33 "clap",
34 "clap_complete",
35 "scan_fmt",
36 "fern",
37 "console",
38 "av-metrics",
39 "nom",
40]
41default = ["binaries", "asm", "threading", "signal_support", "git_version"]
42git_version = ["built/git2"]
43asm = ["nasm-rs", "cc"]
44threading = ["rayon/threads"]
45signal_support = ["signal-hook"]
46dump_ivf = ["ivf"]
47quick_test = []
48desync_finder = ["backtrace"]
49bench = []
50check_asm = []
51capi = ["scan_fmt"]
52tracing = [
53 "profiling/profile-with-tracing",
54 "tracing-subscriber",
55 "tracing-chrome",
56 "dep:tracing"
57]
58scenechange = []
59serialize = ["serde", "toml", "v_frame/serialize", "serde-big-array", "av1-grain/serialize"]
60wasm = ["wasm-bindgen"]
61
62# Enables debug dumping of lookahead computation results, specifically:
63# - i-qres.png: quarter-resolution luma planes,
64# - i-hres.png: half-resolution luma planes,
65# - i-mvs.bin: motion vectors,
66# - i-imps.bin: block importances,
67# - i-activity_scales.bin: spatial scales,
68# - i-distortion_scales.bin: temporal scales,
69# - i-spatiotemporal_scales.bin,
70# - i-thresholds.bin: segmentation thresholds.
71dump_lookahead_data = ["byteorder", "image"]
72
73[dependencies]
74arg_enum_proc_macro = "0.3.4"
75bitstream-io = "2"
76cfg-if = "1.0"
77clap = { version = "4.4.11", optional = true, default-features = false, features = [
78 "color",
79 "std",
80 "wrap_help",
81 "derive",
82] }
83clap_complete = { version = "4.4.5", optional = true }
84libc = "0.2"
85y4m = { version = "0.8", optional = true }
86backtrace = { version = "0.3", optional = true }
87num-traits = "0.2"
88num-derive = "0.4"
89paste = "1.0"
90noop_proc_macro = "0.3.0"
91serde = { version = "1.0", features = ["derive"], optional = true }
92dav1d-sys = { version = "0.6.0", package = "libdav1d-sys", optional = true }
93aom-sys = { version = "0.3.3", optional = true }
94scan_fmt = { version = "0.2.6", optional = true, default-features = false }
95ivf = { version = "0.1", path = "ivf/", optional = true }
96v_frame = "0.3.7"
97av-metrics = { version = "0.9.1", optional = true, default-features = false }
98rayon = { package = "maybe-rayon", version = "0.1", default-features = false }
99crossbeam = { version = "0.8", optional = true }
100toml = { version = "0.8", optional = true }
101arrayvec = "0.7"
102thiserror = "1.0"
103byteorder = { version = "1.5.0", optional = true }
104log = "0.4"
105console = { version = "0.15", optional = true }
106fern = { version = "0.6", optional = true }
107itertools = "0.12"
108simd_helpers = "0.1"
109wasm-bindgen = { version = "0.2.89", optional = true }
110nom = { version = "7.1.3", optional = true }
111new_debug_unreachable = "1.0.4"
112once_cell = "1.19.0"
113av1-grain = "0.2.2"
114serde-big-array = { version = "0.5.1", optional = true }
115profiling = { version = "1" }
116tracing-subscriber = { version = "0.3.18", optional = true }
117tracing-chrome = { version = "0.7.1", optional = true }
118tracing = { version = "0.1.40", optional = true }
119
120[dependencies.image]
121version = "0.24.7"
122optional = true
123default-features = false
124features = ["png"]
125
126[build-dependencies]
127cc = { version = "1.0", optional = true, features = ["parallel"] }
128built = { version = "0.7.1", features = [] }
129
130[build-dependencies.nasm-rs]
131version = "0.2"
132optional = true
133features = ["parallel"]
134
135[target.'cfg(unix)'.dependencies]
136signal-hook = { version = "0.3", optional = true }
137
138[dev-dependencies]
139assert_cmd = "2.0"
140criterion = "0.5"
141pretty_assertions = "1.4.0"
142interpolate_name = "0.2.4"
143nom = "7.1.3"
144quickcheck = "1.0"
145rand = "0.8"
146rand_chacha = "0.3"
147semver = "1.0"
148
149[target.'cfg(fuzzing)'.dependencies]
150arbitrary = "1.3"
151interpolate_name = "0.2.4"
152libfuzzer-sys = "0.4.7"
153rand = "0.8"
154rand_chacha = "0.3"
155
156[target.'cfg(any(decode_test, decode_test_dav1d))'.dependencies]
157system-deps = "6"
158
159[[bin]]
160name = "rav1e"
161required-features = ["binaries"]
162bench = false
163
164[[bin]]
165name = "rav1e-ch"
166required-features = ["binaries", "channel-api", "unstable"]
167bench = false
168
169[lib]
170bench = false
171
172[[bench]]
173name = "bench"
174path = "benches/bench.rs"
175required-features = ["bench"]
176harness = false
177
178[profile.dev]
179opt-level = 1
180
181[profile.release]
182debug = true
183incremental = true
184lto = "thin"
185
186# windows-gnu should use it until rust-lang/rust#98302 is not fixed
187[profile.release-no-lto]
188inherits = "release"
189lto = "off"
190
191[profile.release-strip]
192inherits = "release"
193strip = "symbols"
194
195[profile.bench]
196incremental = true
197
198[workspace]
199members = [".", "ivf"]
200
201[package.metadata.docs.rs]
202no-default-features = true
203