aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock678
-rw-r--r--Cargo.toml2
-rw-r--r--base/Cargo.toml11
-rw-r--r--base/src/lib.rs42
-rw-r--r--common/Cargo.toml2
-rw-r--r--import/Cargo.toml2
-rw-r--r--remuxer/Cargo.toml2
-rw-r--r--server/Cargo.toml6
-rw-r--r--server/src/database.rs3
-rw-r--r--server/src/federation.rs2
-rw-r--r--server/src/import.rs27
-rw-r--r--server/src/main.rs16
-rw-r--r--server/src/routes/mod.rs3
-rw-r--r--server/src/routes/stream.rs3
-rw-r--r--server/src/routes/ui/account/mod.rs3
-rw-r--r--server/src/routes/ui/account/session/token.rs2
-rw-r--r--server/src/routes/ui/assets.rs7
-rw-r--r--server/src/routes/ui/home.rs2
-rw-r--r--server/src/routes/ui/layout.rs3
-rw-r--r--server/src/routes/ui/mod.rs1
-rw-r--r--server/src/routes/ui/node.rs6
-rw-r--r--server/src/routes/ui/player.rs2
-rw-r--r--transcoder/Cargo.toml8
-rw-r--r--transcoder/src/lib.rs5
24 files changed, 770 insertions, 68 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 65beacb..1b8b601 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -147,6 +147,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
[[package]]
+name = "arbitrary"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db55d72333851e17d572bec876e390cd3b11eb1ef53ae821dd9f3b653d2b4569"
+
+[[package]]
+name = "arg_enum_proc_macro"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7c29b43ee8654590587cd033b3eca2f9c4f8cdff945ec0e6ee91ceb057d87f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
name = "argon2"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -163,6 +180,9 @@ name = "arrayvec"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+dependencies = [
+ "serde",
+]
[[package]]
name = "async-channel"
@@ -328,6 +348,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
+name = "av-metrics"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "996ce95bbdb0203e5b91d4a0c9b81c0d67d11c80f884482a0c1ea19e732e3530"
+dependencies = [
+ "crossbeam",
+ "itertools",
+ "lab",
+ "num-traits",
+ "rayon",
+ "thiserror",
+ "v_frame",
+]
+
+[[package]]
+name = "av1-grain"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f6ca6f0c18c02c2fbfc119df551b8aeb8a385f6d5980f1475ba0255f1e97f1e"
+dependencies = [
+ "anyhow",
+ "arrayvec",
+ "itertools",
+ "log",
+ "nom",
+ "num-rational",
+ "serde",
+ "v_frame",
+]
+
+[[package]]
+name = "avif-serialize"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2"
+dependencies = [
+ "arrayvec",
+]
+
+[[package]]
name = "backtrace"
version = "0.3.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -401,6 +461,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6776fc96284a0bb647b615056fc496d1fe1644a7ab01829818a6d91cae888b84"
[[package]]
+name = "bitstream-io"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82704769cb85a22df2c54d6bdd6a158b7931d256cf3248a07d6ecbe9d58b31d7"
+
+[[package]]
name = "blake2"
version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -434,12 +500,28 @@ dependencies = [
]
[[package]]
+name = "built"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b9c056b9ed43aee5e064b683aa1ec783e19c6acec7559e3ae931b7490472fbe"
+dependencies = [
+ "cargo-lock",
+ "git2",
+]
+
+[[package]]
name = "bumpalo"
version = "3.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
[[package]]
+name = "bytemuck"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
+
+[[package]]
name = "byteorder"
version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -452,10 +534,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
[[package]]
+name = "cargo-lock"
+version = "8.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "031718ddb8f78aa5def78a09e90defe30151d1f6c672f937af4dd916429ed996"
+dependencies = [
+ "semver",
+ "serde",
+ "toml 0.5.11",
+ "url",
+]
+
+[[package]]
name = "cc"
version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+dependencies = [
+ "jobserver",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b40ccee03b5175c18cde8f37e7d2a33bcef6f8ec8f7cc0d81090d1bb380949c9"
+dependencies = [
+ "smallvec",
+ "target-lexicon",
+]
[[package]]
name = "cfg-if"
@@ -510,6 +617,16 @@ dependencies = [
"anstyle",
"clap_lex",
"strsim",
+ "terminal_size",
+]
+
+[[package]]
+name = "clap_complete"
+version = "4.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce"
+dependencies = [
+ "clap",
]
[[package]]
@@ -546,6 +663,25 @@ dependencies = [
]
[[package]]
+name = "console"
+version = "0.15.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "unicode-width",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "const_fn_assert"
+version = "0.1.3+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c773f3d54b8826857668aafa3bfe14bd179911a5b571b241e192cac1ec1c0b5"
+
+[[package]]
name = "cookie"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -597,6 +733,41 @@ dependencies = [
]
[[package]]
+name = "crossbeam"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c"
+dependencies = [
+ "cfg-if",
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-epoch",
+ "crossbeam-queue",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
name = "crossbeam-epoch"
version = "0.9.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -610,6 +781,16 @@ dependencies = [
]
[[package]]
+name = "crossbeam-queue"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
name = "crossbeam-utils"
version = "0.8.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -697,6 +878,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
name = "encoding_rs"
version = "0.8.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -755,6 +942,15 @@ dependencies = [
]
[[package]]
+name = "fern"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee"
+dependencies = [
+ "log",
+]
+
+[[package]]
name = "figment"
version = "0.10.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -763,7 +959,7 @@ dependencies = [
"atomic",
"pear",
"serde",
- "toml",
+ "toml 0.7.4",
"uncased",
"version_check",
]
@@ -972,6 +1168,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
[[package]]
+name = "git2"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2994bee4a3a6a51eb90c218523be382fd7ea09b16380b9312e9dbe955ff7c7d1"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+ "libgit2-sys",
+ "log",
+ "url",
+]
+
+[[package]]
name = "glob"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1155,6 +1364,12 @@ dependencies = [
]
[[package]]
+name = "imgref"
+version = "1.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2cf49df1085dcfb171460e4592597b84abe50d900fb83efb6e41b20fefd6c2c"
+
+[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1190,6 +1405,17 @@ dependencies = [
]
[[package]]
+name = "interpolate_name"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4b35f4a811037cfdcd44c5db40678464b2d5d248fc1abeeaaa125b370d47f17"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
name = "io-lifetimes"
version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1219,12 +1445,41 @@ dependencies = [
]
[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
name = "itoa"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
+name = "ivf"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fb01c64361a3a67b511439f0dcd54fa3aa5581c861a17e2ede76e46b9c5b7e2"
+dependencies = [
+ "bitstream-io",
+]
+
+[[package]]
+name = "jellybase"
+version = "0.1.0"
+dependencies = [
+ "base64",
+ "jellycommon",
+ "log",
+ "serde_json",
+ "sha2",
+]
+
+[[package]]
name = "jellyclient"
version = "0.1.0"
dependencies = [
@@ -1280,17 +1535,17 @@ dependencies = [
"chrono",
"env_logger",
"futures",
+ "jellybase",
"jellyclient",
"jellycommon",
"jellyremuxer",
+ "jellytranscoder",
"log",
"markup",
- "once_cell",
"rand",
"rocket",
"serde",
"serde_json",
- "sha2",
"sled",
"tokio",
"tokio-util",
@@ -1318,6 +1573,23 @@ dependencies = [
]
[[package]]
+name = "jellytranscoder"
+version = "0.1.0"
+dependencies = [
+ "log",
+ "ravif",
+]
+
+[[package]]
+name = "jobserver"
+version = "0.1.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
+dependencies = [
+ "libc",
+]
+
+[[package]]
name = "js-sys"
version = "0.3.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1336,6 +1608,12 @@ dependencies = [
]
[[package]]
+name = "lab"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f"
+
+[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1348,6 +1626,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
+name = "libfuzzer-sys"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcf184a4b6b274f82a5df6b357da6055d3e82272327bba281c28bbba6f1664ef"
+dependencies = [
+ "arbitrary",
+ "cc",
+]
+
+[[package]]
+name = "libgit2-sys"
+version = "0.14.2+1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f3d95f6b51075fe9810a7ae22c7095f12b98005ab364d8544797a825ce946a4"
+dependencies = [
+ "cc",
+ "libc",
+ "libz-sys",
+ "pkg-config",
+]
+
+[[package]]
+name = "libz-sys"
+version = "1.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
name = "linux-raw-sys"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1388,6 +1700,15 @@ dependencies = [
]
[[package]]
+name = "loop9"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a703804431e5927454bcaf2b2a162595e95db931130c2728c18d050090f69940"
+dependencies = [
+ "imgref",
+]
+
+[[package]]
name = "markup"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1418,6 +1739,16 @@ dependencies = [
]
[[package]]
+name = "maybe-rayon"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
+dependencies = [
+ "cfg-if",
+ "rayon",
+]
+
+[[package]]
name = "memchr"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1439,6 +1770,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
name = "miniz_oxide"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1479,6 +1816,15 @@ dependencies = [
]
[[package]]
+name = "nasm-rs"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe4d98d0065f4b1daf164b3eafb11974c94662e5e2396cf03f32d0bb5c17da51"
+dependencies = [
+ "rayon",
+]
+
+[[package]]
name = "native-tls"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1497,6 +1843,28 @@ dependencies = [
]
[[package]]
+name = "new_debug_unreachable"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "noop_proc_macro"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
+
+[[package]]
name = "nu-ansi-term"
version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1507,6 +1875,61 @@ dependencies = [
]
[[package]]
+name = "num-bigint"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-derive"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "num-derive"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e6a0fd4f737c707bd9086cc16c925f294943eb62eb71499e9fd4cf71f8b9f4e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.28",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
name = "num-traits"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1662,6 +2085,12 @@ dependencies = [
]
[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
name = "pear"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1785,6 +2214,12 @@ dependencies = [
]
[[package]]
+name = "quick-error"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
+
+[[package]]
name = "quote"
version = "1.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1824,6 +2259,92 @@ dependencies = [
]
[[package]]
+name = "rav1e"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "277898094f0d03c6a609e491324102daf5080e71c06b4b25e5acf8b89d26c945"
+dependencies = [
+ "arbitrary",
+ "arg_enum_proc_macro",
+ "arrayvec",
+ "av-metrics",
+ "av1-grain",
+ "bitstream-io",
+ "built",
+ "cc",
+ "cfg-if",
+ "clap",
+ "clap_complete",
+ "console",
+ "const_fn_assert",
+ "fern",
+ "interpolate_name",
+ "itertools",
+ "ivf",
+ "libc",
+ "libfuzzer-sys",
+ "log",
+ "maybe-rayon",
+ "nasm-rs",
+ "new_debug_unreachable",
+ "nom",
+ "noop_proc_macro",
+ "num-derive 0.3.3",
+ "num-traits",
+ "once_cell",
+ "paste",
+ "rand",
+ "rand_chacha",
+ "rust_hawktracer",
+ "rustc_version",
+ "scan_fmt",
+ "signal-hook",
+ "simd_helpers",
+ "system-deps",
+ "thiserror",
+ "v_frame",
+ "wasm-bindgen",
+ "y4m",
+]
+
+[[package]]
+name = "ravif"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cd36aa2bc280b60619e0c4386a73ff2ac343551dcf400168562ce08cc0c32e0"
+dependencies = [
+ "avif-serialize",
+ "imgref",
+ "loop9",
+ "quick-error",
+ "rav1e",
+ "rayon",
+ "rgb",
+]
+
+[[package]]
+name = "rayon"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
name = "redox_syscall"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1931,6 +2452,15 @@ dependencies = [
]
[[package]]
+name = "rgb"
+version = "0.8.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
name = "rocket"
version = "0.5.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2013,12 +2543,43 @@ dependencies = [
]
[[package]]
+name = "rust_hawktracer"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3480a29b927f66c6e06527be7f49ef4d291a01d694ec1fe85b0de71d6b02ac1"
+dependencies = [
+ "rust_hawktracer_normal_macro",
+ "rust_hawktracer_proc_macro",
+]
+
+[[package]]
+name = "rust_hawktracer_normal_macro"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a570059949e1dcdc6f35228fa389f54c2c84dfe0c94c05022baacd56eacd2e9"
+
+[[package]]
+name = "rust_hawktracer_proc_macro"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb626abdbed5e93f031baae60d72032f56bc964e11ac2ff65f2ba3ed98d6d3e1"
+
+[[package]]
name = "rustc-demangle"
version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
name = "rustix"
version = "0.37.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2045,6 +2606,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
+name = "scan_fmt"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b53b0a5db882a8e2fdaae0a43f7b39e7e9082389e978398bdf223a55b581248"
+
+[[package]]
name = "schannel"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2089,19 +2656,28 @@ dependencies = [
]
[[package]]
+name = "semver"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
+dependencies = [
+ "serde",
+]
+
+[[package]]
name = "serde"
-version = "1.0.180"
+version = "1.0.182"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed"
+checksum = "bdb30a74471f5b7a1fa299f40b4bf1be93af61116df95465b2b5fc419331e430"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.180"
+version = "1.0.182"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036"
+checksum = "6f4c2c6ea4bc09b5c419012eafcdb0fcef1d9119d626c8f3a0708a5b92d38a70"
dependencies = [
"proc-macro2",
"quote",
@@ -2161,6 +2737,16 @@ dependencies = [
]
[[package]]
+name = "signal-hook"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
+[[package]]
name = "signal-hook-registry"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2170,6 +2756,15 @@ dependencies = [
]
[[package]]
+name = "simd_helpers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6"
+dependencies = [
+ "quote",
+]
+
+[[package]]
name = "slab"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2269,6 +2864,25 @@ dependencies = [
]
[[package]]
+name = "system-deps"
+version = "6.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3"
+dependencies = [
+ "cfg-expr",
+ "heck",
+ "pkg-config",
+ "toml 0.7.4",
+ "version-compare",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a"
+
+[[package]]
name = "tempfile"
version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2291,6 +2905,16 @@ dependencies = [
]
[[package]]
+name = "terminal_size"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237"
+dependencies = [
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
name = "thiserror"
version = "1.0.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2440,6 +3064,15 @@ dependencies = [
[[package]]
name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec"
@@ -2606,6 +3239,12 @@ dependencies = [
]
[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
name = "unicode-xid"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2639,6 +3278,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
+name = "v_frame"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85db69f33d00031c1b07f7292e56317d5aa9475bdbd3d27ef18f3633438a697e"
+dependencies = [
+ "cfg-if",
+ "noop_proc_macro",
+ "num-derive 0.4.0",
+ "num-traits",
+ "rust_hawktracer",
+]
+
+[[package]]
name = "valuable"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2657,6 +3309,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
+name = "version-compare"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
+
+[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2999,6 +3657,12 @@ dependencies = [
]
[[package]]
+name = "y4m"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a72a9921af8237fe25097a1ae31c92a05c1d39b2454653ad48f2f407cf7a0dae"
+
+[[package]]
name = "yansi"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 2744873..b40f4f0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -7,5 +7,7 @@ members = [
"matroska",
"ebml_derive",
"client",
+ "transcoder",
+ "base",
]
resolver = "2"
diff --git a/base/Cargo.toml b/base/Cargo.toml
new file mode 100644
index 0000000..b9fba7e
--- /dev/null
+++ b/base/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "jellybase"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+jellycommon = { path = "../common" }
+serde_json = "1.0.104"
+log = "0.4.19"
+sha2 = "0.10.7"
+base64 = "0.21.2"
diff --git a/base/src/lib.rs b/base/src/lib.rs
new file mode 100644
index 0000000..62f93e7
--- /dev/null
+++ b/base/src/lib.rs
@@ -0,0 +1,42 @@
+/*
+ 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) 2023 metamuffin <metamuffin.org>
+*/
+#![feature(lazy_cell)]
+use base64::Engine;
+use jellycommon::config::GlobalConfig;
+use std::{fs::File, path::PathBuf, str::FromStr, sync::LazyLock};
+
+pub static CONF: LazyLock<GlobalConfig> = LazyLock::new(|| {
+ serde_json::from_reader(
+ File::open(
+ std::env::args()
+ .nth(1)
+ .expect("First argument must specify the config.json to use."),
+ )
+ .unwrap(),
+ )
+ .unwrap()
+});
+
+pub fn cache_file(seed: &[&str]) -> (PathBuf, Option<File>) {
+ use sha2::Digest;
+ let mut d = sha2::Sha512::new();
+ for s in seed {
+ d.update(s.as_bytes());
+ d.update(b"\0");
+ }
+ let d = d.finalize();
+ let fname = base64::engine::general_purpose::URL_SAFE.encode(d);
+ let fname = &fname[..22]; // about 128 bits
+ let fullpath = CONF.cache_path.join(fname);
+ let cachepath = PathBuf::from_str(fname).unwrap();
+
+ let f = if !fullpath.exists() {
+ Some(File::create(&fullpath).unwrap())
+ } else {
+ None
+ };
+ (cachepath, f)
+}
diff --git a/common/Cargo.toml b/common/Cargo.toml
index 2e35feb..ce864eb 100644
--- a/common/Cargo.toml
+++ b/common/Cargo.toml
@@ -4,5 +4,5 @@ version = "0.1.0"
edition = "2021"
[dependencies]
-serde = { version = "1.0.180", features = ["derive"] }
+serde = { version = "1.0.182", features = ["derive"] }
bincode = { version = "2.0.0-rc.3", features = ["derive"] }
diff --git a/import/Cargo.toml b/import/Cargo.toml
index 2e35e18..0d4fa27 100644
--- a/import/Cargo.toml
+++ b/import/Cargo.toml
@@ -14,7 +14,7 @@ anyhow = "1.0.72"
clap = { version = "4.3.19", features = ["derive"] }
reqwest = { version = "0.11.18", features = ["blocking", "json"] }
-serde = { version = "1.0.180", features = ["derive"] }
+serde = { version = "1.0.182", features = ["derive"] }
serde_json = "1.0.104"
bincode = { version = "2.0.0-rc.3", features = ["serde"] }
base64 = "0.21.2"
diff --git a/remuxer/Cargo.toml b/remuxer/Cargo.toml
index f8f560f..cdbc05f 100644
--- a/remuxer/Cargo.toml
+++ b/remuxer/Cargo.toml
@@ -11,5 +11,5 @@ tokio = { version = "1.29.1", features = ["io-util"] }
anyhow = "1.0.72"
log = "0.4.19"
-serde = { version = "1.0.180", features = ["derive"] }
+serde = { version = "1.0.182", features = ["derive"] }
bincode = { version = "2.0.0-rc.3", features = ["serde"] }
diff --git a/server/Cargo.toml b/server/Cargo.toml
index f9ecac2..7d6b18f 100644
--- a/server/Cargo.toml
+++ b/server/Cargo.toml
@@ -5,24 +5,24 @@ edition = "2021"
[dependencies]
jellycommon = { path = "../common" }
+jellybase = { path = "../base" }
jellyremuxer = { path = "../remuxer" }
jellyclient = { path = "../client" }
+jellytranscoder = { path = "../transcoder" }
-serde = { version = "1.0.180", features = ["derive"] }
+serde = { version = "1.0.182", features = ["derive"] }
bincode = { version = "2.0.0-rc.3", features = ["serde", "derive"] }
serde_json = "1.0.104"
log = "0.4.19"
env_logger = "0.10.0"
anyhow = "1.0.72"
-once_cell = "1.18.0"
rand = "0.8.5"
base64 = "0.21.2"
chrono = { version = "0.4.26", features = ["serde"] }
vte = "0.11.1"
argon2 = "0.5.1"
-sha2 = "0.10.7"
aes-gcm-siv = "0.11.1"
async-std = "1.12.0"
diff --git a/server/src/database.rs b/server/src/database.rs
index 12a6564..be71c98 100644
--- a/server/src/database.rs
+++ b/server/src/database.rs
@@ -3,8 +3,9 @@
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
-use crate::{routes::ui::account::hash_password, CONF};
+use crate::routes::ui::account::hash_password;
use anyhow::Context;
+use jellybase::CONF;
use jellycommon::{Node, SeekIndex};
use log::info;
use serde::{Deserialize, Serialize};
diff --git a/server/src/federation.rs b/server/src/federation.rs
index c31f95d..38863e2 100644
--- a/server/src/federation.rs
+++ b/server/src/federation.rs
@@ -3,8 +3,8 @@
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
-use crate::CONF;
use anyhow::anyhow;
+use jellybase::CONF;
use jellyclient::{Instance, Session};
use std::{collections::HashMap, sync::Arc, time::Duration};
use tokio::sync::RwLock;
diff --git a/server/src/import.rs b/server/src/import.rs
index 9ffab48..48bdcdc 100644
--- a/server/src/import.rs
+++ b/server/src/import.rs
@@ -6,14 +6,12 @@
use crate::{database::Database, federation::Federation, CONF};
use anyhow::{anyhow, bail, Context, Ok};
use async_recursion::async_recursion;
-use base64::Engine;
use futures::{stream::FuturesUnordered, StreamExt};
+use jellybase::cache_file;
use jellyclient::Session;
use jellycommon::{AssetLocation, MediaSource, Node, NodePrivate, RemoteImportOptions};
use log::{debug, error, info};
-use std::{
- ffi::OsStr, fs::File, os::unix::prelude::OsStrExt, path::PathBuf, str::FromStr, sync::LazyLock,
-};
+use std::{ffi::OsStr, fs::File, os::unix::prelude::OsStrExt, path::PathBuf, sync::LazyLock};
use tokio::sync::Semaphore;
static IMPORT_SEM: LazyLock<Semaphore> = LazyLock::new(|| Semaphore::new(1));
@@ -194,24 +192,3 @@ async fn cache_federation_asset(
}
Ok(poster)
}
-
-fn cache_file(seed: &[&str]) -> (PathBuf, Option<File>) {
- use sha2::Digest;
- let mut d = sha2::Sha512::new();
- for s in seed {
- d.update(s.as_bytes());
- d.update(b"\0");
- }
- let d = d.finalize();
- let fname = base64::engine::general_purpose::URL_SAFE.encode(d);
- let fname = &fname[..22]; // about 128 bits
- let fullpath = CONF.cache_path.join(fname);
- let cachepath = PathBuf::from_str(fname).unwrap();
-
- let f = if !fullpath.exists() {
- Some(File::create(&fullpath).unwrap())
- } else {
- None
- };
- (cachepath, f)
-}
diff --git a/server/src/main.rs b/server/src/main.rs
index b10831f..73d90a4 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -8,29 +8,15 @@
use crate::routes::ui::admin::log::enable_logging;
use database::Database;
use federation::Federation;
-use jellycommon::config::GlobalConfig;
+use jellybase::CONF;
use jellyremuxer::RemuxerContext;
-use once_cell::sync::Lazy;
use routes::build_rocket;
-use std::fs::File;
pub mod database;
pub mod federation;
pub mod import;
pub mod routes;
-pub static CONF: Lazy<GlobalConfig> = Lazy::new(|| {
- serde_json::from_reader(
- File::open(
- std::env::args()
- .nth(1)
- .expect("First argument must specify the config.json to use."),
- )
- .unwrap(),
- )
- .unwrap()
-});
-
fn main() {
enable_logging();
#[cfg(feature = "bypass-auth")]
diff --git a/server/src/routes/mod.rs b/server/src/routes/mod.rs
index 38d0390..cdb7424 100644
--- a/server/src/routes/mod.rs
+++ b/server/src/routes/mod.rs
@@ -3,9 +3,10 @@
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
-use crate::{database::Database, federation::Federation, routes::ui::error::MyResult, CONF};
+use crate::{database::Database, federation::Federation, routes::ui::error::MyResult};
use api::{r_api_account_login, r_api_root, r_api_version};
use base64::Engine;
+use jellybase::CONF;
use jellyremuxer::RemuxerContext;
use log::warn;
use rand::random;
diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs
index ee7880c..7e26500 100644
--- a/server/src/routes/stream.rs
+++ b/server/src/routes/stream.rs
@@ -4,8 +4,9 @@
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
use super::ui::{account::session::Session, error::MyError};
-use crate::{database::Database, federation::Federation, CONF};
+use crate::{database::Database, federation::Federation};
use anyhow::{anyhow, Result};
+use jellybase::CONF;
use jellycommon::MediaSource;
use jellyremuxer::RemuxerContext;
use log::{debug, info, warn};
diff --git a/server/src/routes/ui/account/mod.rs b/server/src/routes/ui/account/mod.rs
index 6bdf65a..b7ba332 100644
--- a/server/src/routes/ui/account/mod.rs
+++ b/server/src/routes/ui/account/mod.rs
@@ -10,11 +10,12 @@ use super::{error::MyError, layout::LayoutPage};
use crate::{
database::{Database, User},
routes::ui::{error::MyResult, home::rocket_uri_macro_r_home, layout::DynLayoutPage},
- CONF, uri,
+ uri,
};
use anyhow::anyhow;
use argon2::{password_hash::Salt, Argon2, PasswordHasher};
use chrono::Duration;
+use jellybase::CONF;
use rocket::{
form::{Contextual, Form},
get,
diff --git a/server/src/routes/ui/account/session/token.rs b/server/src/routes/ui/account/session/token.rs
index c02eff7..e5e4baf 100644
--- a/server/src/routes/ui/account/session/token.rs
+++ b/server/src/routes/ui/account/session/token.rs
@@ -4,7 +4,6 @@
Copyright (C) 2023 metamuffin <metamuffin.org>
*/
use super::SessionData;
-use crate::CONF;
use aes_gcm_siv::{
aead::{generic_array::GenericArray, Aead},
KeyInit,
@@ -12,6 +11,7 @@ use aes_gcm_siv::{
use anyhow::anyhow;
use base64::Engine;
use chrono::{Duration, Utc};
+use jellybase::CONF;
use log::warn;
use std::sync::LazyLock;
diff --git a/server/src/routes/ui/assets.rs b/server/src/routes/ui/assets.rs
index c00749f..8a14133 100644
--- a/server/src/routes/ui/assets.rs
+++ b/server/src/routes/ui/assets.rs
@@ -6,9 +6,9 @@
use crate::{
database::Database,
routes::ui::{account::session::Session, error::MyError, CacheControlFile},
- CONF,
};
use anyhow::anyhow;
+use jellybase::CONF;
use jellycommon::AssetLocation;
use log::info;
use rocket::{get, http::ContentType, FromFormField, State, UriDisplayQuery};
@@ -23,12 +23,13 @@ pub enum AssetRole {
Backdrop,
}
-#[get("/n/<id>/asset?<role>")]
+#[get("/n/<id>/asset?<role>&<width>")]
pub async fn r_item_assets(
_sess: Session,
+ db: &State<Database>,
id: String,
role: AssetRole,
- db: &State<Database>,
+ width: Option<u32>,
) -> Result<(ContentType, CacheControlFile), MyError> {
let node = db.node.get(&id)?.ok_or(anyhow!("node does not exist"))?;
let mut asset = match role {
diff --git a/server/src/routes/ui/home.rs b/server/src/routes/ui/home.rs
index c4defd0..c544336 100644
--- a/server/src/routes/ui/home.rs
+++ b/server/src/routes/ui/home.rs
@@ -7,8 +7,8 @@ use super::{account::session::Session, layout::LayoutPage};
use crate::{
database::Database,
routes::ui::{error::MyResult, layout::DynLayoutPage},
- CONF,
};
+use jellybase::CONF;
use rocket::{get, State};
use tokio::fs::read_to_string;
diff --git a/server/src/routes/ui/layout.rs b/server/src/routes/ui/layout.rs
index 0e0a429..fdda3e4 100644
--- a/server/src/routes/ui/layout.rs
+++ b/server/src/routes/ui/layout.rs
@@ -14,9 +14,10 @@ use crate::{
browser::rocket_uri_macro_r_all_items,
node::rocket_uri_macro_r_library_node,
},
- uri, CONF,
+ uri,
};
use async_std::task::block_on;
+use jellybase::CONF;
use markup::{DynRender, Render};
use rocket::{
http::ContentType,
diff --git a/server/src/routes/ui/mod.rs b/server/src/routes/ui/mod.rs
index 7acc02a..d561627 100644
--- a/server/src/routes/ui/mod.rs
+++ b/server/src/routes/ui/mod.rs
@@ -82,6 +82,7 @@ impl<'r> Responder<'r, 'static> for CacheControlFile {
Response::build()
.status(Status::NotModified)
.header(Header::new("cache-control", "private"))
+ .header(Header::new("etag", tag))
.ok()
} else {
debug!("file cache: transfer");
diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs
index 7b8548e..4574709 100644
--- a/server/src/routes/ui/node.rs
+++ b/server/src/routes/ui/node.rs
@@ -70,7 +70,7 @@ markup::define! {
div[class=cls] {
div.poster {
a[href=uri!(r_library_node(id))] {
- img[src=uri!(r_item_assets(id, AssetRole::Poster))];
+ img[src=uri!(r_item_assets(id, AssetRole::Poster, Some(1024)))];
}
@if matches!(node.kind, NodeKind::Collection | NodeKind::Channel) {
div.hoverdir { a[href=&uri!(r_library_node(id))] { "Open" } }
@@ -87,11 +87,11 @@ markup::define! {
}
NodePage<'a>(id: &'a str, node: &'a NodePublic, children: &'a Vec<(String, NodePublic)>) {
@if !matches!(node.kind, NodeKind::Collection) {
- img.backdrop[src=uri!(r_item_assets(id, AssetRole::Backdrop))];
+ img.backdrop[src=uri!(r_item_assets(id, AssetRole::Backdrop, Some(2048)))];
}
div.page.node {
@if !matches!(node.kind, NodeKind::Collection) {
- div.bigposter { img[src=uri!(r_item_assets(id, AssetRole::Poster))]; }
+ div.bigposter { img[src=uri!(r_item_assets(id, AssetRole::Poster, Some(2048)))]; }
}
div.title {
h1 { @node.title }
diff --git a/server/src/routes/ui/player.rs b/server/src/routes/ui/player.rs
index 3bfb6a4..0e6962e 100644
--- a/server/src/routes/ui/player.rs
+++ b/server/src/routes/ui/player.rs
@@ -56,7 +56,7 @@ pub fn r_player(
class: Some("player"),
content: markup::new! {
@if tracks.is_empty() {
- img.backdrop[src=uri!(r_item_assets(&id, AssetRole::Backdrop)).to_string()];
+ img.backdrop[src=uri!(r_item_assets(&id, AssetRole::Backdrop, Some(2048))).to_string()];
} else {
video[src=uri!(r_stream(&id, &tracks, Some(true))), controls, preload="auto"]{}
}
diff --git a/transcoder/Cargo.toml b/transcoder/Cargo.toml
new file mode 100644
index 0000000..bfdbedf
--- /dev/null
+++ b/transcoder/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "jellytranscoder"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+log = "0.4.19"
+ravif = "0.11.2"
diff --git a/transcoder/src/lib.rs b/transcoder/src/lib.rs
new file mode 100644
index 0000000..6ddc2a4
--- /dev/null
+++ b/transcoder/src/lib.rs
@@ -0,0 +1,5 @@
+/*
+ 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) 2023 metamuffin <metamuffin.org>
+*/