Label local-file video quality from mpv track info instead of Unknown

Streams built for local folder files carry no resolution/codec/fps
metadata (unknowable before demux), so the quality selector labeled
them "Unknown". Use the video track mpv reports (demux-w/h/fps, codec)
to fill those fields into a display-only copy of the stream — the
Video row and summary now show e.g. "720p · 30fps" with a codec badge.
Selection and tap handling keep using the original stream.
This commit is contained in:
Arkadiusz Fal
2026-07-29 22:50:50 +02:00
parent 67ed8c322b
commit 9e546e29ee
10 changed files with 69 additions and 3 deletions

View File

@@ -34,6 +34,8 @@ struct QualitySelectorView: View {
let embeddedSubtitleTracks: [MPVTrack]
let currentEmbeddedAudioTrackID: Int?
let currentEmbeddedSubtitleTrackID: Int?
/// The playing file's video track, used to label metadata-less local streams
let embeddedVideoTrack: MPVTrack?
let onEmbeddedAudioTrackSelected: (Int) -> Void
/// nil = subtitles off
let onEmbeddedSubtitleTrackSelected: (Int?) -> Void
@@ -181,6 +183,7 @@ struct QualitySelectorView: View {
embeddedSubtitleTracks: [MPVTrack] = [],
currentEmbeddedAudioTrackID: Int? = nil,
currentEmbeddedSubtitleTrackID: Int? = nil,
embeddedVideoTrack: MPVTrack? = nil,
onStreamSelected: @escaping (Stream, Stream?) -> Void,
onCaptionSelected: @escaping (Caption?) -> Void = { _ in },
onLoadOnlineStreams: @escaping () -> Void = {},
@@ -210,6 +213,7 @@ struct QualitySelectorView: View {
self.embeddedSubtitleTracks = embeddedSubtitleTracks
self.currentEmbeddedAudioTrackID = currentEmbeddedAudioTrackID
self.currentEmbeddedSubtitleTrackID = currentEmbeddedSubtitleTrackID
self.embeddedVideoTrack = embeddedVideoTrack
self.onStreamSelected = onStreamSelected
self.onCaptionSelected = onCaptionSelected
self.onLoadOnlineStreams = onLoadOnlineStreams