"""VideoTrack — a single video stream as reported by ffprobe.""" from __future__ import annotations from dataclasses import dataclass @dataclass(frozen=True) class VideoTrack: """A single video track as reported by ffprobe. A media file typically has one video track but can have several (alt camera angles, attached thumbnail images reported as still-image streams, etc.), hence the list[VideoTrack] on MediaInfo. """ index: int codec: str | None # h264, hevc, av1, … width: int | None height: int | None is_default: bool = False @property def resolution(self) -> str | None: """ Best-effort resolution string: 2160p, 1080p, 720p, … Width takes priority over height to handle widescreen/cinema crops (e.g. 1920×960 scope → 1080p, not 720p). Falls back to height when width is unavailable. """ match (self.width, self.height): case (None, None): return None case (w, h) if w is not None: match True: case _ if w >= 3840: return "2160p" case _ if w >= 1920: return "1080p" case _ if w >= 1280: return "720p" case _ if w >= 720: return "576p" case _ if w >= 640: return "480p" case _: return f"{h}p" if h else f"{w}w" case (None, h): match True: case _ if h >= 2160: return "2160p" case _ if h >= 1080: return "1080p" case _ if h >= 720: return "720p" case _ if h >= 576: return "576p" case _ if h >= 480: return "480p" case _: return f"{h}p"