aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/codec_param/mod.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-03-12 16:54:09 +0100
committermetamuffin <metamuffin@disroot.org>2026-03-12 16:54:09 +0100
commitb23d8a2f7786119fc49bb2d531618c78344b8357 (patch)
tree2933d2ebaf325c1cb3c9fd014aef3946e2884d0c /remuxer/src/codec_param/mod.rs
parent7bf3c633703e4cea6df7c5b445e26649a7196db6 (diff)
downloadjellything-b23d8a2f7786119fc49bb2d531618c78344b8357.tar
jellything-b23d8a2f7786119fc49bb2d531618c78344b8357.tar.bz2
jellything-b23d8a2f7786119fc49bb2d531618c78344b8357.tar.zst
detect video bit depth from codec param
Diffstat (limited to 'remuxer/src/codec_param/mod.rs')
-rw-r--r--remuxer/src/codec_param/mod.rs20
1 files changed, 18 insertions, 2 deletions
diff --git a/remuxer/src/codec_param/mod.rs b/remuxer/src/codec_param/mod.rs
index 4fdb181..4613c88 100644
--- a/remuxer/src/codec_param/mod.rs
+++ b/remuxer/src/codec_param/mod.rs
@@ -11,6 +11,12 @@ mod av1;
mod hevc;
mod vp9;
+#[derive(Debug, PartialEq, Eq)]
+struct CodecParam {
+ bit_depth: Option<u8>,
+ string: String,
+}
+
pub fn codec_param(te: &TrackEntry) -> String {
let empty_cp = vec![];
let cp = te.codec_private.as_ref().unwrap_or(&empty_cp);
@@ -20,9 +26,9 @@ pub fn codec_param(te: &TrackEntry) -> String {
"A_OPUS" => "opus".to_string(),
"A_VORBIS" => "vorbis".to_string(),
- "V_AV1" => av1_codec_param(cp),
+ "V_AV1" => av1_codec_param(cp).string,
"V_MPEG4/ISO/AVC" => format!("avc1.{:02x}{:02x}{:02x}", cp[1], cp[2], cp[3]),
- "V_MPEGH/ISO/HEVC" => hevc_codec_param(cp),
+ "V_MPEGH/ISO/HEVC" => hevc_codec_param(cp).string,
"V_VP9" => vp9_codec_param(te),
"D_WEBVTT/SUBTITLES" => "webvtt".to_string(),
@@ -31,3 +37,13 @@ pub fn codec_param(te: &TrackEntry) -> String {
x => todo!("{x:?}"),
}
}
+
+pub fn codec_param_bit_depth(te: &TrackEntry) -> Option<u8> {
+ let empty_cp = vec![];
+ let cp = te.codec_private.as_ref().unwrap_or(&empty_cp);
+ match te.codec_id.as_str() {
+ "V_AV1" => av1_codec_param(cp).bit_depth,
+ "V_MPEGH/ISO/HEVC" => hevc_codec_param(cp).bit_depth,
+ _ => None,
+ }
+}