From a8457a25ccb9b1ef47f5ce9d7ac1a84c47600c9e Mon Sep 17 00:00:00 2001 From: Malte Voos Date: Fri, 14 Nov 2025 15:30:49 +0100 Subject: implement file/url open dialog --- src/tracks.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/tracks.rs (limited to 'src/tracks.rs') diff --git a/src/tracks.rs b/src/tracks.rs new file mode 100644 index 0000000..4d69e12 --- /dev/null +++ b/src/tracks.rs @@ -0,0 +1,38 @@ +use std::collections::BTreeMap; + +use relm4::SharedState; + +pub type StreamIndex = usize; + +#[derive(Debug, Clone)] +pub struct TrackMetadata { + pub language: Option, + pub title: Option, +} + +#[derive(Debug, Clone)] +pub struct SubtitleTrack { + pub metadata: TrackMetadata, + pub cues: Vec, +} + +#[derive(Debug, Clone)] +pub struct SubtitleCue { + pub start: gst::ClockTime, + pub end: gst::ClockTime, + pub text: String, +} + +pub static SUBTITLE_TRACKS: SharedState> = SharedState::new(); + +impl TrackMetadata { + pub fn from_ffmpeg_stream(stream: &ffmpeg::Stream) -> Self { + let language_code = stream.metadata().get("language").map(|s| s.to_string()); + let title = stream.metadata().get("title").map(|s| s.to_string()); + + Self { + language: language_code.and_then(|code| isolang::Language::from_639_2b(&code)), + title, + } + } +} -- cgit 1.4.1