Skip to content

Instantly share code, notes, and snippets.

Benchmark #1: ./rav1e-v0.1.0-191-g4196f60c ~/Samples/Bosphorus_1920x1080_120fps_420_8bit_YUV.y4m -o /dev/null --tiles 32 -l 200 -s 10
  Time (mean _ _):     85.940 s _  0.151 s    [User: 704.317 s, System: 0.851 s]
  Range (min _ max):   85.812 s _ 86.159 s    5 runs

Benchmark #2: ./rav1e-v0.1.0-192-g6901eccf ~/Samples/Bosphorus_1920x1080_120fps_420_8bit_YUV.y4m -o /dev/null --tiles 32 -l 200 -s 10
  Time (mean _ _):     85.801 s _  0.224 s    [User: 701.006 s, System: 0.837 s]
  Range (min _ max):   85.614 s _ 86.094 s    5 runs

1080p 8 tiles 8 threads 200 frames

   8.02%  rav1e    rav1e               [.] rav1e::rdo::rdo_loop_decision                                                                 ◆
   7.14%  rav1e    rav1e               [.] rav1e::rdo::cdef_dist_wxh_8x8                                                                 ▒
   6.15%  rav1e    rav1e               [.] rav1e::transform::forward_transform                                                           ▒
   5.59%  rav1e    libc-2.30.so        [.] __memmove_avx_unaligned_erms                                                                  ▒
   5.10%  rav1e    rav1e               [.] rav1e::context::ContextWriter::write_coeffs_lv_map                                            ▒
   4.50%  rav1e    rav1e               [.] rav1e::transform::forward::daala_fdct32                                                       ▒
   4.16%  rav1e    rav1e               [.] rav1e::asm::x86::lrf::sgrproj_box_ab_r1_avx2                                                  ▒
= note: /home/lu_zero/Sources/rust/rav1e/target/debug/build/rav1e-616d38e7c9628afb/out/librav1easm.a(tables.o):(.rodata+0x0): multiple definition of `rav1e_mc_subpel_filters'
/home/lu_zero/Sources/rust/rav1e/target/debug/deps/rav1e-acb164bbb3894380.644cc32trgjv017.rcgu.o:(.rodata.rav1e_mc_subpel_filters+0x0): first defined here
/home/lu_zero/Sources/rust/rav1e/target/debug/build/rav1e-616d38e7c9628afb/out/librav1easm.a(tables.o):(.rodata+0x260): multiple definition of `rav1e_filter_intra_taps'
/home/lu_zero/Sources/rust/rav1e/target/debug/deps/rav1e-acb164bbb3894380.644cc32trgjv017.rcgu.o:(.rodata.rav1e_filter_intra_taps+0x0): first defined here
/home/lu_zero/Sources/rust/rav1e/target/debug/build/rav1e-616d38e7c9628afb/out/librav1easm.a(tables.o):(.rodata+0x3a0): multiple definition of `rav1e_sgr_x_by_x'
/home/lu_zero/Sources/rust/rav1e/target/debug/deps/rav1e-acb164bbb3894380.644cc32trgjv017.rcgu.o:(.rodata.rav1e_sgr_x_by_x+0x0): first defined here
{"traceEvents": [{"name": "compute_lookahead_data", "ph": "X", "ts": 11083377053, "dur": 3, "pid": 0, "tid": 2, "args": {}},{"name": "send_frame", "ph": "X", "ts": 11083377045, "dur": 12, "pid": 0, "tid": 2, "args": {}},{"name": "compute_lookahead_data", "ph": "X", "ts": 11083377149, "dur": 0, "pid": 0, "tid": 2, "args": {}},{"name": "send_frame", "ph": "X", "ts": 11083377148, "dur": 0, "pid": 0, "tid": 2, "args": {}},{"name": "compute_lookahead_data", "ph": "X", "ts": 11083377879, "dur": 0, "pid": 0, "tid": 2, "args": {}},{"name": "send_frame", "ph": "X", "ts": 11083377879, "dur": 1, "pid": 0, "tid": 2, "args": {}},{"name": "compute_lookahead_data", "ph": "X", "ts": 11083377960, "dur": 0, "pid": 0, "tid": 2, "args": {}},{"name": "send_frame", "ph": "X", "ts": 11083377959, "dur": 1, "pid": 0, "tid": 2, "args": {}},{"name": "compute_lookahead_data", "ph": "X", "ts": 11083378025, "dur": 0, "pid": 0, "tid": 2, "args": {}},{"name": "send_frame", "ph": "X", "ts": 11083378025, "dur": 0, "pid": 0, "tid": 2, "args":
--------------------------------------------------------------------------------
Language Files Lines Blank Comment Code
--------------------------------------------------------------------------------
C 364 260969 26894 19270 214805
C++ 188 104596 11862 11351 81383
C/C++ Header 329 100749 11710 17403 71636
Assembly 31 13857 1315 0 12542
Python 9 6896 1008 1207 4681
CMake 50 6488 723 1091 4674
Perl 5 2719 518 272 1929
use std::fmt;
struct Foo {
a: usize,
}
impl fmt::Display for Foo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.a)
}

Improvements

  • More API documentation
  • Better error reporting
  • Nicer error messages in the cli application
  • Explicit validation of the encoder configuration
  • The input Frame type can be expressed
  • Added cargo-fuzz support and documented its usage
  • Better rate-control support
  • Two-pass rate-control support
  • Additional speedups over all the speed levels
diff --git a/src/frame/plane.rs b/src/frame/plane.rs
index 71555c42..30f0c020 100644
--- a/src/frame/plane.rs
+++ b/src/frame/plane.rs
@@ -665,6 +665,39 @@ pub mod test {
assert_eq!(&input[..64], &plane.data[..64]);
}
+ #[test]
+ fn mutable_access() {

title: Using rav1e - from your own code published: true description: rav1e is an AV1 encoder written in Rust tags: rust, rav1e, AV1

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: lewton
Description: Pure Rust vorbis decoder
Version: 0.9.4
Libs: -L${libdir} -llewton
Cflags: -I${includedir}/lewton