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
- Split each codec family into its own <AdaptationSet>.
- Group alternatives with the same @group value, so players understand they are choices for the same content.
- 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.
- How can I detect this automatically?
- Paste your MPEG-DASH streaming URL into StreamTest's free DASH validator. It runs this check on every analysis, flags the finding, and links straight back to this page — no sign-up required.
Related DASH checks
- DASH manifest has no UTCTiming elementA live MPD without UTCTiming forces players to trust the device clock, so any skew on the viewer’s machine becomes stalls or missing segments.
- DASH availabilityStartTime is in the futureThe manifest claims the presentation starts later than the current time, so no segment is available yet and playback cannot begin.
- The DASH manifest is not well-formed XMLThe document could not be parsed as XML, so nothing else could be checked.
- The document has no MPD root elementThe XML parsed, but its root is not <MPD>, so it is not a DASH manifest.
- MPD declares no profileWithout @profiles a player cannot tell which DASH feature set the manifest expects.
- MPD declares no minBufferTimePlayers use this required attribute to size the initial buffer before starting playback.