StreamTest

Adaptation set mixes codec families

Representations in one set must be seamlessly switchable, so different codecs belong in separate sets.

What it means

One <AdaptationSet> contains representations using different codec families, such as H.264 alongside HEVC.

Why it matters

An adaptation set is a promise that a player can move between its representations without reinitialising the decoder. Different codecs break that promise: the switch requires a full decoder reset, which appears as a stall or a black frame — and a device that supports only one of the two codecs may select the one it cannot play.

How to fix it

  1. Split each codec family into its own <AdaptationSet>.
  2. Group alternatives with the same @group value, so players understand they are choices for the same content.
  3. Set @codecs on each representation so devices can filter before downloading.

Check your own stream

The free DASH validator runs this check on every analysis and links each finding straight back here.

Open the DASH validator →

Frequently asked questions

What does "Adaptation set mixes codec families" mean?
One <AdaptationSet> contains representations using different codec families, such as H.264 alongside HEVC.
Why does it matter?
An adaptation set is a promise that a player can move between its representations without reinitialising the decoder. Different codecs break that promise: the switch requires a full decoder reset, which appears as a stall or a black frame — and a device that supports only one of the two codecs may select the one it cannot play.
How do I fix it?
1. Split each codec family into its own <AdaptationSet>. 2. Group alternatives with the same @group value, so players understand they are choices for the same content. 3. Set @codecs on each representation so devices can filter before downloading.
Can a validator catch this before viewers do?
Yes. The free DASH MPD validator checks this on every run, together with UTCTiming, clock drift and segment addressing — the live problems that only appear on other people's devices.
What is the first thing to try?
Split each codec family into its own <AdaptationSet>.

Related DASH checks