diff options
| author | Malte Voos <git@mal.tc> | 2025-11-14 15:30:49 +0100 |
|---|---|---|
| committer | Malte Voos <git@mal.tc> | 2025-11-14 15:30:49 +0100 |
| commit | a8457a25ccb9b1ef47f5ce9d7ac1a84c47600c9e (patch) | |
| tree | 542b42d3316138043272faba42e0d1005f8403b6 /src/tracks.rs | |
| parent | a42a73378b7c527a5e4600544b2d7a86d68c5aac (diff) | |
| download | lleap-a8457a25ccb9b1ef47f5ce9d7ac1a84c47600c9e.tar.gz lleap-a8457a25ccb9b1ef47f5ce9d7ac1a84c47600c9e.zip | |
implement file/url open dialog
Diffstat (limited to 'src/tracks.rs')
| -rw-r--r-- | src/tracks.rs | 38 |
1 files changed, 38 insertions, 0 deletions
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<isolang::Language>, + pub title: Option<String>, +} + +#[derive(Debug, Clone)] +pub struct SubtitleTrack { + pub metadata: TrackMetadata, + pub cues: Vec<SubtitleCue>, +} + +#[derive(Debug, Clone)] +pub struct SubtitleCue { + pub start: gst::ClockTime, + pub end: gst::ClockTime, + pub text: String, +} + +pub static SUBTITLE_TRACKS: SharedState<BTreeMap<StreamIndex, SubtitleTrack>> = 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, + } + } +} |