Understanding Single-Decoder Device Limitations
Overview
Some TVs, streaming devices, and mobile hardware can only handle one active video decode pipeline at a time. If your application flow creates multiple Bitmovin Player instances without fully destroying or reusing the previous one, the device may fail to start the new instance and will typically surface a 1301decoding error.
This behavior is tied to how the device manages its decoding resources, not to the Bitmovin Player itself.
Most common cause
The most common place this shows up is when a new Bitmovin Player instance is created while an existing instance is still active.
On devices that expose only a single decoder:
- The first player keeps ownership of the decoder
- The second player attempts to initialize
- The device refuses the request, which results in failed playback or a black video surface
A clean teardown of the previous player instance is required before a new one is created.
How hardware decoding works
Every playback device includes a hardware video decoder integrated into the system-on-chip. Its job is to take compressed video formats such as H.264, HEVC, VP9, or AV1 and turn them into raw frames for the display engine.
Hardware decoders are efficient, but they are also limited resources. Depending on the chipset and operating system:
- There may be only one decoder available
- Multiple decoders may exist but cannot run in parallel
- The display pipeline may expose only one hardware video surface
Any of these conditions can result in single-stream playback limits.
Why some devices allow only one video
The ability to run more than one video depends on a mix of hardware and software factors:
- Some chipsets include only a single decoder core
- Some firmware stacks restrict concurrent decoding for stability or thermal reasons
- Some display subsystems support only one active video plane
Because of these differences, two devices that look similar may behave very differently when multiple video instances are involved.
Devices commonly affected
Single-decoder behavior is typically found on:
- Vizio SmartCast TVs (most models before 2021)
- Older LG webOS and Samsung Tizen TVs
- Roku TVs and lower-end Roku streaming sticks
- Android TV boxes built on early Amlogic or Realtek chipsets
- Entry-level Android phones and tablets
Best practices when using Bitmovin Player
1. Keep one active player instance at a time
Always destroy the current player before creating another.
if (player) {
player.destroy().then(() => {
player = new bitmovin.player.Player(container, config);
player.load(source);
});
}
2. Reuse a player when switching streams
Prefer player.load(newSource) instead of creating a second player.
3. Avoid overlapping players
Do not run multiple Bitmovin Player instances simultaneously on devices known to have this limitation.
4. Add safeguards
If playback consistently fails on a specific device when more than one player is active, treat it as a single-decoder environment and enforce a one-instance policy.
Expected behavior on single-decoder devices
| Scenario | Result |
|---|---|
| Two Bitmovin Player instances active | One stops or fails to start |
| New instance created before destroy completes | Black screen or no playback |
| Rapid stream switching using separate players | Decoder conflicts or frozen frames |
| Reusing one player with load() | Works reliably |
Key takeaway
Some devices only allow one video to be decoded at a time. On these systems, the Bitmovin Player should be used in a single-instance workflow. Destroy or reuse the existing player before starting a new one to ensure stable playback.
Updated about 5 hours ago