A TV that can't play 4K never shows or plays 4K versions

Open
#181 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
30/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
android, kotlin

Research direction

Start by reading ADR 0003, docs/LOOK.md, and the existing collapseMovieVariants and MovieVariantGroup.primary paths mentioned in the issue; trace how device decoder limits affect playback and how Search is opened. Done means meeting the device-specific filtering, channel quality, fallback dialog, query-enabled Search, and 4K badge criteria, with screenshot coverage and strings in strings.xml. The player version switcher is explicitly later work.

Written by the indexing model from the issue text.

Description

enhancement needs-triage

This was generated by AI during triage.

Found while checking #128 and #180. The series that failed on the Fire TV Stick is about 23.8 Mbps HEVC, and the Stick's HEVC decoders both stop at 1920x1088, so a 4K title can't play on it.

The goal

On a TV that can't play 4K, the viewer never runs into 4K by accident. Settee behaves as if 4K versions don't exist, so there's nothing technical to understand or choose. On a TV that can play 4K, a badge shows which titles have a 4K version.

What your provider labels

Read from one provider's catalogue on the Stick, using names and category names only:

Total Labelled 4K Labelled any other quality Unlabelled
Films 29,653 1,414 (4.8%) 1 95.2%
Series 9,231 802 (8.7%) 1 91.3%
Channels 16,830 1,253 (7.4%) about 3,000 HD 59.6%
  • Only 4K is labelled on films and series, in the form 4K-NF - Extraction 2 (2023) and in their own 4K categories. An untagged title isn't known to be HD; its quality is simply unknown.
  • Most 4K titles have another version. After grouping versions of the same title, 1,410 films have a 4K version and only 234 have nothing else. For series it's 798 and 112.
  • Series versions aren't grouped, unlike films (collapseMovieVariants handles films only). The title cleaner removes the tags, so 686 series appear twice with the same name and nothing to tell the covers apart.
  • Some labels are false. About 2,500 channels rank as 8K, mostly pay-per-view placeholder channels named 8K EXCLUSIVE.
  • Films may default to 4K. A comment says the best version of a grouped film "is what a row shows and plays by default" (MovieVariantGroup.primary). That hasn't been traced through to playback.

What to build

On a TV that can't play 4K

Settee asks the device what it can decode, for example from the HEVC and H.264 decoders' maximum sizes. The answer belongs to that device and doesn't sync (compare ADR 0003).

  • Versions: a 4K version is hidden whenever a non-4K version of the same title exists, and the non-4K version plays. For a grouped film, that means picking a version the device can play. For series, the 4K copy is hidden when a plain copy of the same name and year exists. Nothing is lost if a label is wrong, because the other version is still there.
  • 4K-only titles: films and series labelled 4K with no other version are hidden too, with no setting to bring them back.
  • Channels: never hidden, because some 8K or 4K labels are only branding. A channel starts on the best Quality the device can play.
  • A dialog for anything that gets through: a 4K title can still be reached, for example from Continue Watching synced from a 4K TV. The dialog says, in plain words, that this TV can't play 4K. It offers to play the HD version if one exists. Otherwise it offers to open Search with the title already filled in, using the cleaned title so every version shows. That needs the Search route to accept a query, which it doesn't today.
  • Unlabelled 4K: labels can't catch these. They fall back to the clear message in #180.
On a TV that can play 4K
  • A 4K badge on covers (top right, at the 16 sp minimum), the Movies and Shows backdrop's metadata line, and the details hero. On a film's cover it means a 4K version is available.
  • No badge for an unlabelled title, and none for channels, whose Qualities already appear on the player's Quality pill.
  • Design and timing: specify the badge in docs/LOOK.md, and build it with the redesigned screens rather than adding it to the current ones first.
Later, after the redesign
  • A version switcher in the player for films and episodes, like live TV's Quality pill.

Acceptance criteria

  • Settee knows whether the device can decode 4K, and that answer doesn't sync
  • On a device that can't, no 4K version shows in Movies, Shows, Home rows or Search when another version exists, and the other version plays
  • On that device, 4K-only films and series don't show
  • On that device, no channel is hidden, and each starts on the best Quality the device can play
  • Reaching a 4K title on that device shows a dialog that offers the HD version, or Search with the title filled in
  • Search can be opened with a query
  • On a 4K device, the 4K badge shows on covers, the backdrop and the details hero, as specified in docs/LOOK.md
  • Each changed screen has screenshot coverage, including the dialog
  • Message strings live in strings.xml
  • After the redesign: a version switcher in the player for films and episodes
Dominant language
Kotlin
Stars
0
Forks
0
Avg merge
2h 12m
Merged PRs (30d)
77

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from neutraltone/settee

All issues in neutraltone/settee

Similar issues

More Kotlin issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.