aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-11-12 22:33:18 +0100
committermetamuffin <metamuffin@disroot.org>2025-11-12 22:33:18 +0100
commitf3af9263b0472bcef3207906ce0e4d1d4aa3595b (patch)
treee7d0e26156ced50086ba4c4941fb6e8016c78349
parent2efc5f9444402c5ef9db25887f2e95d184af8e05 (diff)
downloadjellything-f3af9263b0472bcef3207906ce0e4d1d4aa3595b.tar
jellything-f3af9263b0472bcef3207906ce0e4d1d4aa3595b.tar.bz2
jellything-f3af9263b0472bcef3207906ce0e4d1d4aa3595b.tar.zst
debug clusters, fix clusters not found in seek head
-rw-r--r--Cargo.lock36
-rw-r--r--ebml_derive/Cargo.toml2
-rw-r--r--remuxer/src/bin/mkvinfo.rs15
-rw-r--r--remuxer/src/demuxers/matroska.rs7
-rw-r--r--tool/Cargo.toml2
5 files changed, 38 insertions, 24 deletions
diff --git a/Cargo.lock b/Cargo.lock
index c8d4b54..86c9521 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -525,9 +525,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
[[package]]
name = "cc"
-version = "1.2.44"
+version = "1.2.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3"
+checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -1029,9 +1029,9 @@ dependencies = [
[[package]]
name = "exr"
-version = "1.73.0"
+version = "1.74.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0"
+checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be"
dependencies = [
"bit_field",
"half",
@@ -1570,7 +1570,7 @@ dependencies = [
"libc",
"percent-encoding",
"pin-project-lite",
- "socket2 0.5.10",
+ "socket2 0.6.1",
"tokio",
"tower-service",
"tracing",
@@ -1789,9 +1789,9 @@ dependencies = [
[[package]]
name = "indicatif"
-version = "0.18.2"
+version = "0.18.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ade6dfcba0dfb62ad59e59e7241ec8912af34fd29e0e743e3db992bd278e8b65"
+checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88"
dependencies = [
"console",
"portable-atomic",
@@ -2126,22 +2126,22 @@ dependencies = [
[[package]]
name = "jiff"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49"
+checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35"
dependencies = [
"jiff-static",
"log",
"portable-atomic",
"portable-atomic-util",
- "serde",
+ "serde_core",
]
[[package]]
name = "jiff-static"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4"
+checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69"
dependencies = [
"proc-macro2",
"quote",
@@ -2969,7 +2969,7 @@ dependencies = [
"quinn-udp",
"rustc-hash",
"rustls",
- "socket2 0.5.10",
+ "socket2 0.6.1",
"thiserror 2.0.17",
"tokio",
"tracing",
@@ -3006,7 +3006,7 @@ dependencies = [
"cfg_aliases",
"libc",
"once_cell",
- "socket2 0.5.10",
+ "socket2 0.6.1",
"tracing",
"windows-sys 0.60.2",
]
@@ -3845,9 +3845,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
-version = "2.0.109"
+version = "2.0.110"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f"
+checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea"
dependencies = [
"proc-macro2",
"quote",
@@ -4712,9 +4712,9 @@ dependencies = [
[[package]]
name = "weezl"
-version = "0.1.10"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3"
+checksum = "009936b22a61d342859b5f0ea64681cbb35a358ab548e2a44a8cf0dac2d980b8"
[[package]]
name = "wide"
diff --git a/ebml_derive/Cargo.toml b/ebml_derive/Cargo.toml
index 89e973d..bd821e9 100644
--- a/ebml_derive/Cargo.toml
+++ b/ebml_derive/Cargo.toml
@@ -7,6 +7,6 @@ edition = "2021"
proc-macro = true
[dependencies]
-syn = "2.0.109"
+syn = "2.0.110"
quote = "1.0.42"
diff --git a/remuxer/src/bin/mkvinfo.rs b/remuxer/src/bin/mkvinfo.rs
index fa2d287..e2c7cea 100644
--- a/remuxer/src/bin/mkvinfo.rs
+++ b/remuxer/src/bin/mkvinfo.rs
@@ -6,7 +6,10 @@
use anyhow::{Result, anyhow};
use jellyremuxer::demuxers::create_demuxer_autodetect;
-use std::{env::args, fs::File};
+use std::{
+ env::{args, var},
+ fs::File,
+};
fn main() -> Result<()> {
env_logger::init_from_env("LOG");
@@ -20,5 +23,15 @@ fn main() -> Result<()> {
println!("CHAPTERS: {:#?}", reader.chapters()?);
println!("TAGS: {:#?}", reader.tags()?);
+ if var("CLUSTERS").is_ok() {
+ reader.seek_cluster(None)?;
+ while let Some((off, cluster)) = reader.read_cluster()? {
+ eprintln!(
+ "off={off} num_blocks={}",
+ cluster.simple_blocks.len() + cluster.block_groups.len()
+ )
+ }
+ }
+
Ok(())
}
diff --git a/remuxer/src/demuxers/matroska.rs b/remuxer/src/demuxers/matroska.rs
index bb7289a..45bb154 100644
--- a/remuxer/src/demuxers/matroska.rs
+++ b/remuxer/src/demuxers/matroska.rs
@@ -102,7 +102,9 @@ impl MatroskaDemuxer {
/// Seeks to the content of child tag of Segment possibly optimized via SeekHead.
/// Returns the absolute offset of the element start and size of the content.
pub fn seek_to_segment_tag(&mut self, search_tag: u64) -> Result<Option<(u64, u64)>> {
- if let Some(seek_head) = self.seek_head()? {
+ if let Some(seek_head) = self.seek_head()?
+ && !search_tag == Segment::TAG_CLUSTERS
+ {
let Some(segment_position) = seek_head
.seeks
.iter()
@@ -159,8 +161,7 @@ impl MatroskaDemuxer {
}
impl Demuxer for MatroskaDemuxer {
fn info(&mut self) -> Result<Info> {
- self
- .read_segment_tag("Info", Segment::TAG_INFO)?
+ self.read_segment_tag("Info", Segment::TAG_INFO)?
.ok_or(anyhow!("info missing"))
}
fn tracks(&mut self) -> Result<Option<Tracks>> {
diff --git a/tool/Cargo.toml b/tool/Cargo.toml
index 7e4823e..71852b1 100644
--- a/tool/Cargo.toml
+++ b/tool/Cargo.toml
@@ -11,7 +11,7 @@ log = { workspace = true }
env_logger = "0.11.8"
anyhow = "1.0.100"
reqwest = { workspace = true }
-indicatif = "0.18.2"
+indicatif = "0.18.3"
tokio = { workspace = true }
clap = { version = "4.5.51", features = ["derive"] }
clap_complete = "4.5.60"