Skip to content

Instantly share code, notes, and snippets.

@tulior
Created July 9, 2026 20:03
Show Gist options
  • Select an option

  • Save tulior/c1b9efbff95f89f3df5930172ae83a40 to your computer and use it in GitHub Desktop.

Select an option

Save tulior/c1b9efbff95f89f3df5930172ae83a40 to your computer and use it in GitHub Desktop.
Dolby Vision remux playback policy for Shield, Xiaomi, Google TV Streamer, Kodi, Plex, and LG C5 eARC.

living-room-remux-policy.md

Policy for choosing the playback chain in the living room.

The purpose of the chain is narrow:

play Blu-ray remuxes correctly
keep Dolby Vision when it is actually available
keep lossless and object audio when the route allows it
avoid silent downgrades
avoid debugging the same failure twice

Comfort features come after that.

Setup

TV:        LG C5
Audio:     Samsung HW-Q600C

Boxes:
  Shield Pro
  Xiaomi Box S 3rd Gen
  Google TV Streamer

Players:
  Kodi
  Plex
  Stremio
  VLC

Routes

A: box → LG C5 → eARC → HW-Q600C
B: box → HW-Q600C → LG C5

Route A is the reference route.

The LG gets first claim on video negotiation because Dolby Vision failure is easy to hide and annoying to diagnose. If a chain falls back to HDR10 and still looks good, that is exactly the kind of failure this policy is supposed to catch.

Route B is a tested exception, not an alternate default. It can win for audio. It does not get trusted for video until it proves itself with the file class being played.

File classes that matter

video:
  DV P5
  DV P8
  DV P7 MEL
  DV P7 FEL

audio:
  TrueHD Atmos
  DD+ Atmos
  DTS-HD MA
  DTS:X

subs:
  PGS

These are not all equal.

DV P5/P8        common risk: fallback hidden by the UI
DV P7 MEL       acceptable if stable
DV P7 FEL       do not pretend full correctness without proof
TrueHD Atmos    high value, fragile path
DD+ Atmos       easy mode
DTS-HD MA       should not collapse to core if this is a remux test
DTS:X           object metadata matters only if the route preserves it
PGS             must work without forcing a server-side burn-in

Scoring rule

score(device, player, route, file) =
    dv_correctness
  + lossless_audio_preservation
  + object_audio_preservation
  + remux_compatibility
  + subtitle_compatibility
  + sustained_network_stability
  - hdr10_fallback
  - atmos_or_dtsx_loss
  - dts_core_fallback
  - server_transcode
  - app_unpredictability
best_setup = argmax score(device, player, route, file)

The weighting is intentionally biased.

silent fallback costs more than missing a nice UI
known boring behavior beats newer hardware
one file playing once does not promote a device

Reference chain

Shield Pro
Kodi
Shield Pro → LG C5 → eARC → HW-Q600C
wired network if available

That is the starting point.

It is not always the winner. It is the chain I test against.

Player policy

Kodi first
Plex second
Stremio for convenience
VLC for diagnosis

Kodi gets the reference slot because it exposes the least ambiguity in this setup. It gives enough control over passthrough, decode behavior, refresh rate, subtitle handling, and local or network file playback.

Plex is allowed when it direct plays the file cleanly. The moment subtitles trigger burn-in, audio gets transcoded, or the server becomes part of the explanation, Plex loses that file.

Stremio is not used to establish correctness. It is a convenience app.

VLC is useful when something is broken and I want to separate “bad file” from “bad player path.” It is not the main path for remux playback.

Device policy

Shield Pro > Xiaomi Box S 3rd Gen > Google TV Streamer

Shield Pro

The Shield remains first because it wastes the least time.

Use it for:

large 4K remuxes
TrueHD Atmos
DTS-HD MA
DTS:X
PGS subtitles
uncertain Dolby Vision behavior
Kodi-first playback

It is old hardware, but this job rewards predictable behavior more than novelty.

Xiaomi Box S 3rd Gen

The Xiaomi is the second box, not the experimental box.

Use it when:

Shield is unavailable
Dolby Vision works on the sample being played
audio behavior is acceptable for the file
Kodi is still the player

It stays ahead of the Google TV Streamer for remux use because remux playback is usually audio-limited before it is UI-limited.

Google TV Streamer

The Google TV Streamer is useful for the wrong side of this policy.

Use it for:

streaming apps
AV1
Google TV integration
fast UI
DD+ Atmos
non-remux files
casual playback

Do not use it as the reference box for:

TrueHD Atmos
DTS-HD MA
DTS:X
Blu-ray remux correctness
format preservation tests

If the reason for keeping the file is the Blu-ray audio track, the Google TV Streamer starts behind.

Route policy

Route A

box → LG C5 → eARC → HW-Q600C

Default for Dolby Vision.

This route gives the TV the cleanest path to identify and display the video format. That matters more than it sounds, because bad chains often fail politely. They show a picture, maybe even a good picture, and quietly remove the thing being tested.

Use Route A for:

DV P5
DV P8
DV P7 MEL
DV P7 FEL tests
unknown HDMI behavior
first playback of a new encode class

Route B

box → HW-Q600C → LG C5

Use when audio forces the question.

Test it for:

TrueHD Atmos
DTS-HD MA
DTS:X
HDR10 titles with lossless audio
Dolby Vision titles where audio preservation matters enough to risk the route

Keep Route B only if the soundbar passes the video mode cleanly.

Check the actual thing:

Does the LG report Dolby Vision?
Does the frame rate stay correct?
Does the app behave the same after stop/start?
Does CEC change the route?
Does the same file work with subtitles on?
Does another DV profile also work?

If the answer depends on the app, write that down. App-specific success does not become chain-level success.

Dolby Vision policy

DV success means DV output, not “the movie looked good”

Handling:

P5:      expect Dolby Vision
P8:      expect Dolby Vision, accept HDR10 fallback only as a logged fallback
P7 MEL:  accept if stable and repeatable
P7 FEL:  treat as a risk class

P7 FEL does not get rounded up.

If FEL plays, log what happened. Do not convert that into “FEL support” unless the whole chain actually preserves what needs preserving. Most of the time the useful answer is simpler:

it played
it fell back
it used the base layer
it did not crash
it looked acceptable

Those are different results.

Dolby audio policy

DD+ Atmos

DD+ Atmos is low drama.

Use passthrough when supported. Do not let DD+ Atmos decide the box unless everything else is tied.

TrueHD Atmos

TrueHD Atmos matters more.

Start here:

Shield Pro
Kodi
Shield Pro → LG C5 → eARC → HW-Q600C

If TrueHD Atmos fails or gets downgraded, test:

Shield Pro → HW-Q600C → LG C5

Then choose per file.

DV title + TrueHD Atmos:
  start TV-first
  move soundbar-first only if DV survives

HDR10 title + TrueHD Atmos:
  soundbar-first can win

casual watch:
  do not spend the evening optimizing a track nobody in the room cares about

The last line is part of the policy. Correctness is the goal when correctness is the goal.

DTS policy

The LG route is not trusted for DTS passthrough.

For the TV-first route:

DTS-HD MA → decode to LPCM
DTS:X     → decode to LPCM unless soundbar-first preserves the metadata
DTS core  → log as fallback

DTS core is not a success condition for a remux test. It is a compromise.

If DTS:X is the point of the file, test the soundbar-first route. If Dolby Vision breaks there, pick which feature matters for that file and stop trying to make the route universal.

Subtitle policy

PGS is part of the remux.

A chain that only works with subtitles off is not a clean chain.

Kodi gets priority because it is less likely to turn subtitles into a server problem.

For Plex:

video must direct play
audio should direct play when possible
PGS must not trigger burn-in unless accepted for that file
subtitle timing must be checked after seeking

If subtitles cause a transcode, that player/device combination loses the file.

Network policy

The network test is the movie, not the speed test.

Priority:

wired Ethernet
stable 5 GHz or 6 GHz Wi-Fi
everything else

Failure signs:

buffering after high-bitrate peaks
audio dropout
subtitle delay after seek
app recovers by lowering quality
server starts transcoding
file works only after reboot

A better codec box with worse sustained network behavior loses. Menu speed does not count.

Decision table

File                                       Default path
---------------------------------------------------------------------------
DV P5/P8 + DD+ Atmos                       Kodi, Shield or Xiaomi, TV-first
DV P5/P8 + TrueHD Atmos                    Kodi, Shield, test TV-first first
DV P7 MEL + TrueHD Atmos                   Kodi, Shield, TV-first unless audio fails
DV P7 FEL                                  Kodi, Shield, log exact behavior
HDR10 + TrueHD Atmos                       Kodi, Shield, soundbar-first can win
HDR10 + DTS-HD MA                          Kodi, Shield, LPCM or soundbar-first test
HDR10 + DTS:X                              Kodi, Shield, soundbar-first if metadata matters
PGS subtitles                              Kodi first
Streaming DD+ Atmos                        any stable box
AV1 streaming                              Google TV Streamer
Casual playback                            do not overfit the chain

Current defaults

Default box:
  Shield Pro

Default player:
  Kodi

Default route:
  box → LG C5 → eARC → HW-Q600C

Default exception:
  soundbar-first for audio tests

Default DTS handling through LG:
  decode to LPCM

Default Google TV Streamer use:
  streaming, AV1, UI, DD+ Atmos

Default Plex use:
  direct-play cases only

What counts as a useful test

A useful result includes the full chain.

device
player
route
file class
audio track
subtitle state
refresh rate
network path
result

Bad log:

Movie played fine.

Useful log:

Shield Pro
Kodi
Shield → LG C5 → eARC → HW-Q600C
DV P7 MEL
TrueHD Atmos
PGS enabled
23.976 Hz
wired Ethernet
result: DV triggered, audio passed, subtitles rendered, no buffering

Failures to name directly:

HDR10 fallback
DD+ fallback
stereo fallback
DTS core fallback
lost Atmos flag
lost DTS:X metadata
server transcode
PGS burn-in
audio delay
frame-rate mismatch
CEC route change
app-specific success

Ranking

1. Shield Pro + Kodi + TV-first
   reference chain for Dolby Vision remux playback

2. Shield Pro + Kodi + soundbar-first
   use when audio preservation is the point and DV survives the route

3. Xiaomi Box S 3rd Gen + Kodi + TV-first
   second path, useful when Shield is unavailable or unnecessary

4. Google TV Streamer + Plex/Kodi + TV-first
   good for streaming, AV1, UI, DD+ Atmos, and non-reference playback

5. Stremio
   convenience path

6. VLC
   diagnostic path

Promotion rule

A device or route does not move up because one title worked.

Promotion requires repeated clean results across the things that usually break:

DV P5
DV P8
DV P7 MEL
DV P7 FEL
TrueHD Atmos
DD+ Atmos
DTS-HD MA
DTS:X
PGS subtitles
wired playback
wireless playback
TV-first route
soundbar-first route

Until those tests exist, the defaults stay boring:

Kodi is the reference player.
Shield Pro is the reference box.
TV-first is the Dolby Vision route.
Soundbar-first is conditional.
Google TV Streamer is not the lossless-remux reference.

Unresolved items stay unresolved:

exact Q600C Dolby Vision pass-through behavior by profile
repeatability of soundbar-first route across apps
DTS:X value versus LPCM compromise
FEL handling across real library samples
whether Xiaomi earns more trust after repeated tests

No global winner is needed. The file decides the chain.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment