aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-09-26 07:52:10 +0200
committermetamuffin <metamuffin@disroot.org>2023-09-26 07:52:10 +0200
commit02c830dec5cc3824cf7cbd4c6bb61c2e7d14195f (patch)
tree38769e5cd4787ee557f6665eb68b7ea5ef62467f
parent74be31a55c8a9fc533a445bc65c08154469d21c6 (diff)
parent7efece270151d8a22e3d5f209cf9707d989c4ac5 (diff)
downloadjellything-02c830dec5cc3824cf7cbd4c6bb61c2e7d14195f.tar
jellything-02c830dec5cc3824cf7cbd4c6bb61c2e7d14195f.tar.bz2
jellything-02c830dec5cc3824cf7cbd4c6bb61c2e7d14195f.tar.zst
Merge branch 'master' of codeberg.org:metamuffin/jellything
-rw-r--r--Cargo.lock29
-rw-r--r--Cargo.toml3
-rw-r--r--base/Cargo.toml2
-rw-r--r--client/Cargo.toml2
-rw-r--r--common/Cargo.toml2
-rw-r--r--import/Cargo.toml2
-rw-r--r--remuxer/Cargo.toml2
-rw-r--r--server/Cargo.toml4
-rw-r--r--server/src/routes/stream.rs2
-rw-r--r--server/src/routes/ui/account/session/guard.rs4
-rw-r--r--transcoder/Cargo.toml6
-rw-r--r--transcoder/src/bin/reproduce_decode_error.rs11
-rw-r--r--transcoder/src/image.rs16
13 files changed, 56 insertions, 29 deletions
diff --git a/Cargo.lock b/Cargo.lock
index d96f835..ab667da 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2195,7 +2195,7 @@ checksum = "0ec95680a7087503575284e5063e14b694b7a9c0b065e5dceec661e0497127e8"
dependencies = [
"inlinable_string",
"pear_codegen",
- "yansi",
+ "yansi 0.5.1",
]
[[package]]
@@ -2320,7 +2320,7 @@ dependencies = [
"quote",
"syn 2.0.37",
"version_check",
- "yansi",
+ "yansi 0.5.1",
]
[[package]]
@@ -2569,8 +2569,7 @@ dependencies = [
[[package]]
name = "rocket"
version = "0.5.0-rc.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58734f7401ae5cfd129685b48f61182331745b357b96f2367f01aebaf1cc9cc9"
+source = "git+https://github.com/SergioBenitez/Rocket?rev=2cf38a5aa37fe046e46b03740835787f0396307b#2cf38a5aa37fe046e46b03740835787f0396307b"
dependencies = [
"async-stream",
"async-trait",
@@ -2581,7 +2580,6 @@ dependencies = [
"figment",
"futures",
"indexmap 1.9.3",
- "is-terminal",
"log",
"memchr",
"multer",
@@ -2602,14 +2600,13 @@ dependencies = [
"tokio-util",
"ubyte",
"version_check",
- "yansi",
+ "yansi 1.0.0-rc.1",
]
[[package]]
name = "rocket_codegen"
version = "0.5.0-rc.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7093353f14228c744982e409259fb54878ba9563d08214f2d880d59ff2fc508b"
+source = "git+https://github.com/SergioBenitez/Rocket?rev=2cf38a5aa37fe046e46b03740835787f0396307b#2cf38a5aa37fe046e46b03740835787f0396307b"
dependencies = [
"devise",
"glob",
@@ -2624,8 +2621,7 @@ dependencies = [
[[package]]
name = "rocket_http"
version = "0.5.0-rc.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "936012c99162a03a67f37f9836d5f938f662e26f2717809761a9ac46432090f4"
+source = "git+https://github.com/SergioBenitez/Rocket?rev=2cf38a5aa37fe046e46b03740835787f0396307b#2cf38a5aa37fe046e46b03740835787f0396307b"
dependencies = [
"cookie",
"either",
@@ -2931,9 +2927,9 @@ dependencies = [
[[package]]
name = "state"
-version = "0.5.3"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b"
+checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8"
dependencies = [
"loom",
]
@@ -3762,6 +3758,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
[[package]]
+name = "yansi"
+version = "1.0.0-rc.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377"
+dependencies = [
+ "is-terminal",
+]
+
+[[package]]
name = "zeroize"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index d2a869b..cd408b3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,6 +12,9 @@ members = [
]
resolver = "2"
+[workspace.dependencies]
+rocket = { git = "https://github.com/SergioBenitez/Rocket", rev = "2cf38a5aa37fe046e46b03740835787f0396307b" }
+log = "0.4.20"
[profile.dev.package.rav1e]
opt-level = 3
diff --git a/base/Cargo.toml b/base/Cargo.toml
index d478122..8101c01 100644
--- a/base/Cargo.toml
+++ b/base/Cargo.toml
@@ -6,6 +6,6 @@ edition = "2021"
[dependencies]
jellycommon = { path = "../common" }
serde_json = "1.0.107"
-log = "0.4.20"
+log = { workspace = true }
sha2 = "0.10.7"
base64 = "0.21.4"
diff --git a/client/Cargo.toml b/client/Cargo.toml
index b4d83d4..ea89057 100644
--- a/client/Cargo.toml
+++ b/client/Cargo.toml
@@ -5,7 +5,7 @@ edition = "2021"
[dependencies]
jellycommon = { path = "../common" }
-log = "0.4.20"
+log = { workspace = true }
reqwest = { version = "0.11.20", features = ["json"] }
anyhow = "1.0.75"
serde_json = "1.0.107"
diff --git a/common/Cargo.toml b/common/Cargo.toml
index da7bf1b..b38b962 100644
--- a/common/Cargo.toml
+++ b/common/Cargo.toml
@@ -6,7 +6,7 @@ edition = "2021"
[dependencies]
serde = { version = "1.0.188", features = ["derive"] }
bincode = { version = "2.0.0-rc.3", features = ["derive"] }
-rocket = { version = "0.5.0-rc.3", optional = true }
+rocket = { workspace = true, optional = true }
[features]
rocket = ["dep:rocket"]
diff --git a/import/Cargo.toml b/import/Cargo.toml
index f720169..bdb6813 100644
--- a/import/Cargo.toml
+++ b/import/Cargo.toml
@@ -8,7 +8,7 @@ jellycommon = { path = "../common" }
jellymatroska = { path = "../matroska" }
jellyremuxer = { path = "../remuxer" }
-log = "0.4.20"
+log = { workspace = true }
env_logger = "0.10.0"
anyhow = "1.0.75"
clap = { version = "4.4.4", features = ["derive"] }
diff --git a/remuxer/Cargo.toml b/remuxer/Cargo.toml
index 770aa00..ac74c9d 100644
--- a/remuxer/Cargo.toml
+++ b/remuxer/Cargo.toml
@@ -9,7 +9,7 @@ jellymatroska = { path = "../matroska" }
tokio = { version = "1.32.0", features = ["io-util"] }
anyhow = "1.0.75"
-log = "0.4.20"
+log = { workspace = true }
serde = { version = "1.0.188", features = ["derive"] }
bincode = { version = "2.0.0-rc.3", features = ["serde"] }
diff --git a/server/Cargo.toml b/server/Cargo.toml
index 1f620da..57592cf 100644
--- a/server/Cargo.toml
+++ b/server/Cargo.toml
@@ -14,7 +14,7 @@ serde = { version = "1.0.188", features = ["derive"] }
bincode = { version = "2.0.0-rc.3", features = ["serde", "derive"] }
serde_json = "1.0.107"
-log = "0.4.20"
+log = { workspace = true }
env_logger = "0.10.0"
anyhow = "1.0.75"
rand = "0.8.5"
@@ -32,7 +32,7 @@ tokio = { version = "1.32.0", features = ["io-util"] }
tokio-util = { version = "0.7.9", features = ["io", "io-util"] }
markup = "0.13.1"
-rocket = { version = "0.5.0-rc.3", features = ["secrets", "json"] }
+rocket = { workspace = true, features = ["secrets", "json"] }
sled = "0.34.7"
typed-sled = "0.2.3"
diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs
index 7e26500..e920341 100644
--- a/server/src/routes/stream.rs
+++ b/server/src/routes/stream.rs
@@ -176,7 +176,7 @@ impl<'r> FromRequest<'r> for RequestRange {
Ok(v) => rocket::outcome::Outcome::Success(v),
Err(e) => rocket::outcome::Outcome::Failure((Status::BadRequest, e)),
},
- None => rocket::outcome::Outcome::Forward(()),
+ None => rocket::outcome::Outcome::Forward(Status::Ok),
}
}
}
diff --git a/server/src/routes/ui/account/session/guard.rs b/server/src/routes/ui/account/session/guard.rs
index 19d68ad..ae1ebd3 100644
--- a/server/src/routes/ui/account/session/guard.rs
+++ b/server/src/routes/ui/account/session/guard.rs
@@ -52,7 +52,7 @@ impl<'r> FromRequest<'r> for Session {
Ok(x) => Outcome::Success(x),
Err(e) => {
warn!("authentificated route rejected: {e:?}");
- Outcome::Forward(())
+ Outcome::Forward(Status::Unauthorized)
}
}
}
@@ -77,7 +77,7 @@ impl<'r> FromRequest<'r> for AdminSession {
}
Err(e) => {
warn!("authentificated route rejected: {e:?}");
- Outcome::Forward(())
+ Outcome::Forward(Status::Unauthorized)
}
}
}
diff --git a/transcoder/Cargo.toml b/transcoder/Cargo.toml
index ac6fe24..e39b07c 100644
--- a/transcoder/Cargo.toml
+++ b/transcoder/Cargo.toml
@@ -6,8 +6,10 @@ edition = "2021"
[dependencies]
jellycommon = { path = "../common" }
jellybase = { path = "../base" }
-log = "0.4.20"
-image = { git = "https://github.com/image-rs/image", features = ["avif-decoder"] }
+log = { workspace = true }
+image = { git = "https://github.com/image-rs/image", features = [
+ "avif-decoder",
+] }
anyhow = "1.0.75"
rgb = "0.8.36"
rav1e = { version = "0.6.6", default-features = false, features = [
diff --git a/transcoder/src/bin/reproduce_decode_error.rs b/transcoder/src/bin/reproduce_decode_error.rs
new file mode 100644
index 0000000..84fa6fd
--- /dev/null
+++ b/transcoder/src/bin/reproduce_decode_error.rs
@@ -0,0 +1,11 @@
+use jellytranscoder::image::transcode;
+
+fn main() {
+ transcode(
+ jellycommon::AssetLocation::Cache(std::env::args().nth(2).unwrap().into()),
+ 1.0,
+ 1,
+ 1,
+ )
+ .unwrap();
+}
diff --git a/transcoder/src/image.rs b/transcoder/src/image.rs
index c28ef2b..6da1be7 100644
--- a/transcoder/src/image.rs
+++ b/transcoder/src/image.rs
@@ -1,6 +1,8 @@
+use anyhow::Context;
+use image::{imageops::FilterType, ImageFormat};
use jellybase::{cache_file, AssetLocationExt};
use jellycommon::AssetLocation;
-use log::info;
+use log::{debug, info};
use rgb::FromSlice;
use std::{
fs::File,
@@ -22,14 +24,18 @@ pub fn transcode(
.path();
if !path.exists() {
info!("encoding {path:?} (speed={speed}, quality={quality}, width={width})");
- let reader = image::io::Reader::new(BufReader::new(File::open(original_path)?))
- .with_guessed_format()?;
- let original = reader.decode()?.to_rgba8();
+ // TODO shouldn't be neccessary with guessed format.
+ let file = BufReader::new(File::open(&original_path).context("opening source")?);
+ let mut reader = image::io::Reader::new(file);
+ reader.set_format(ImageFormat::Avif);
+ let reader = reader.with_guessed_format().context("guessing format")?;
+ debug!("guessed format (or fallback): {:?}", reader.format());
+ let original = reader.decode().context("decoding image")?.to_rgba8();
let image = image::imageops::resize(
&original,
width as u32,
width as u32 * original.height() / original.width(),
- image::imageops::FilterType::Lanczos3,
+ FilterType::Lanczos3,
);
let pixels = image.to_vec();
let encoded = ravif::Encoder::new()