mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 03:38:23 +00:00
Four were confirmed with throwaway probe tests against the branch. An HLS master labelled `audio/x-mpegurl` or `audio/mpegurl` was read as a separate audio track and dropped. Those are two of the four playlist MIMEs this repo already recognises in isHlsMimeType and MediaItemCache — legacy aliases naming the manifest format, not a claim about the content. A master labelled that way lost to a 360p rung; when every entry used it the candidate list emptied and selection fell through to the poster JPEG, handed to the video player. The HLS test now precedes the audio test. withLadderMetadataFrom filled `dimension` from every imeta, poster included, so a 16:9 thumbnail beside a vertical short produced a 16:9 master and JustVideoDisplay laid the box out at 16:9. Only entries that could be the video may describe its shape; the poster still supplies the still image. isHlsPlaylist treated any declared MIME as authoritative, so `master.m3u8` served as application/octet-stream — a server default, not a claim — was not HLS and lost to a correctly labelled low rung. The metered 480px cap had no fullscreen exemption, so tapping into fullscreen on mobile data pinned 480p and put a ceiling the quality menu's "Auto" could not exceed. The cap exists to hold back feeds that autoplay unasked; someone who tapped fullscreen asked. The PiP gate skipped the viewport push entirely until isInPictureInPictureMode turned true, with no retry. Since demoteToCold clears track overrides but not the viewport, a pooled player kept whatever its previous view pushed if PiP was never entered (per-app PiP off, no FEATURE_PICTURE_IN_PICTURE). It now caps the pre-shrink measurement instead of skipping it, so a viewport is always pushed and can never be a stale full-screen one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SQs7TP2WeXNR8SwUNLgmUC