aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/codec_param/av1.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-03-04 17:52:03 +0100
committermetamuffin <metamuffin@disroot.org>2026-03-04 17:52:03 +0100
commit7ded052e22df1be30b29a2943b2bbe9196152a2d (patch)
tree1c6aae6e342101c78dd97f304ab2868ee7e2665d /remuxer/src/codec_param/av1.rs
parent3eaba0353512ee6ebb909722fde931136b44a4f8 (diff)
downloadjellything-7ded052e22df1be30b29a2943b2bbe9196152a2d.tar
jellything-7ded052e22df1be30b29a2943b2bbe9196152a2d.tar.bz2
jellything-7ded052e22df1be30b29a2943b2bbe9196152a2d.tar.zst
move codec parameter string code in remuxer; init frag for transcodes
Diffstat (limited to 'remuxer/src/codec_param/av1.rs')
-rw-r--r--remuxer/src/codec_param/av1.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/remuxer/src/codec_param/av1.rs b/remuxer/src/codec_param/av1.rs
new file mode 100644
index 0000000..5641e77
--- /dev/null
+++ b/remuxer/src/codec_param/av1.rs
@@ -0,0 +1,38 @@
+/*
+ This file is part of jellything (https://codeberg.org/metamuffin/jellything)
+ which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
+ Copyright (C) 2026 metamuffin <metamuffin.org>
+*/
+
+pub fn av1_codec_param(cp: &[u8]) -> String {
+ let profile = (cp[1] >> 5) & 0b111;
+ let level = cp[1] & 0b11111;
+ let tier = (cp[2] >> 7) & 0b1;
+ let high_bitdepth = (cp[2] >> 6) & 0b1;
+ let twelve_bit = (cp[2] >> 5) & 0b1;
+ let _monochrome = (cp[2] >> 4) & 0b1;
+ let _css_x = (cp[2] >> 3) & 0b1;
+ let _css_y = (cp[2] >> 2) & 0b1;
+ let _css_pos = cp[2] & 0b11;
+
+ let tier_char = if tier == 1 { 'H' } else { 'M' };
+ let bit_depth = if twelve_bit == 1 {
+ 12
+ } else if high_bitdepth == 1 {
+ 10
+ } else {
+ 0
+ };
+ format!(
+ "av01.{profile}.{level:02}{tier_char}.{bit_depth:02}" // .{monochrome}.{css_x}{css_y}{css_pos}
+ )
+}
+
+#[test]
+fn sample1() {
+ assert_eq!(av1_codec_param(&[0x81, 0x04, 0x4E]), "av01.0.04M.10");
+}
+#[test]
+fn sample2() {
+ assert_eq!(av1_codec_param(&[0x81, 0x35, 0xF4]), "av01.1.21H.12");
+}