aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-14 16:02:42 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-14 16:02:42 +0200
commit42e08750a5a9a112d458a5db1d6b169278e953c5 (patch)
tree595db21dd2c51b4772a7371e062023b5488c40e7 /common
parent4a36d9e96853bf04d17f8377a7fbf862d108b9f1 (diff)
downloadjellything-42e08750a5a9a112d458a5db1d6b169278e953c5.tar
jellything-42e08750a5a9a112d458a5db1d6b169278e953c5.tar.bz2
jellything-42e08750a5a9a112d458a5db1d6b169278e953c5.tar.zst
stream info for transcoding
Diffstat (limited to 'common')
-rw-r--r--common/src/config.rs71
-rw-r--r--common/src/stream.rs5
2 files changed, 33 insertions, 43 deletions
diff --git a/common/src/config.rs b/common/src/config.rs
index a0dc459..3a48fea 100644
--- a/common/src/config.rs
+++ b/common/src/config.rs
@@ -8,36 +8,42 @@ use crate::user::PermissionSet;
use serde::{Deserialize, Serialize};
use std::{collections::HashMap, path::PathBuf};
-#[rustfmt::skip]
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct GlobalConfig {
pub hostname: String,
pub brand: String,
pub slogan: String,
- #[serde(default = "return_true" )] pub tls: bool,
- #[serde(default = "default::asset_path")] pub asset_path: PathBuf,
- #[serde(default = "default::database_path")] pub database_path: PathBuf,
- #[serde(default = "default::cache_path")] pub cache_path: PathBuf,
- #[serde(default = "default::media_path")] pub media_path: PathBuf,
- #[serde(default = "default::secrets_path")] pub secrets_path: PathBuf,
- #[serde(default = "default::max_in_memory_cache_size")] pub max_in_memory_cache_size: usize,
- #[serde(default)] pub admin_username: Option<String>,
- #[serde(default = "default::login_expire")] pub login_expire: i64,
- #[serde(default)] pub default_permission_set: PermissionSet,
- #[serde(default)] encoders: EncoderPreferences,
+ #[serde(default = "return_true")]
+ pub tls: bool,
+ pub asset_path: PathBuf,
+ pub database_path: PathBuf,
+ pub cache_path: PathBuf,
+ pub media_path: PathBuf,
+ pub secrets_path: PathBuf,
+ #[serde(default = "max_in_memory_cache_size")]
+ pub max_in_memory_cache_size: usize,
+ #[serde(default)]
+ pub admin_username: Option<String>,
+ #[serde(default = "login_expire")]
+ pub login_expire: i64,
+ #[serde(default)]
+ pub default_permission_set: PermissionSet,
+ #[serde(default)]
+ pub encoders: EncoderPreferences,
}
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct EncoderPreferences {
- avc: Option<EncoderClass>,
- hevc: Option<EncoderClass>,
- vp8: Option<EncoderClass>,
- vp9: Option<EncoderClass>,
- av1: Option<EncoderClass>,
+ pub avc: Option<EncoderClass>,
+ pub hevc: Option<EncoderClass>,
+ pub vp8: Option<EncoderClass>,
+ pub vp9: Option<EncoderClass>,
+ pub av1: Option<EncoderClass>,
}
#[derive(Debug, Deserialize, Serialize)]
-enum EncoderClass {
+#[serde(rename_all = "snake_case")]
+pub enum EncoderClass {
Aom,
Svt,
X26n,
@@ -77,30 +83,11 @@ pub struct ApiSecrets {
pub trakt: Option<String>,
}
-mod default {
- use std::path::PathBuf;
-
- pub fn login_expire() -> i64 {
- 60 * 60 * 24
- }
- pub fn asset_path() -> PathBuf {
- "data/assets".into()
- }
- pub fn database_path() -> PathBuf {
- "data/database".into()
- }
- pub fn cache_path() -> PathBuf {
- "data/cache".into()
- }
- pub fn media_path() -> PathBuf {
- "data/media".into()
- }
- pub fn secrets_path() -> PathBuf {
- "data/secrets.yaml".into()
- }
- pub fn max_in_memory_cache_size() -> usize {
- 50_000_000
- }
+fn login_expire() -> i64 {
+ 60 * 60 * 24
+}
+fn max_in_memory_cache_size() -> usize {
+ 50_000_000
}
fn return_true() -> bool {
diff --git a/common/src/stream.rs b/common/src/stream.rs
index a14fd57..555a5d0 100644
--- a/common/src/stream.rs
+++ b/common/src/stream.rs
@@ -87,7 +87,7 @@ pub enum TrackKind {
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub struct StreamFormatInfo {
pub codec: String,
- pub byterate: f64,
+ pub bitrate: f64,
pub remux: bool,
pub containers: Vec<StreamContainer>,
@@ -104,6 +104,7 @@ pub enum StreamContainer {
WebM,
Matroska,
WebVTT,
+ MPEG4,
JVTT,
}
@@ -203,6 +204,7 @@ impl Display for StreamContainer {
StreamContainer::Matroska => "matroska",
StreamContainer::WebVTT => "webvtt",
StreamContainer::JVTT => "jvtt",
+ StreamContainer::MPEG4 => "mp4",
})
}
}
@@ -214,6 +216,7 @@ impl FromStr for StreamContainer {
"matroska" => StreamContainer::Matroska,
"webvtt" => StreamContainer::WebVTT,
"jvtt" => StreamContainer::JVTT,
+ "mp4" => StreamContainer::MPEG4,
_ => return Err(()),
})
}