Stereo-Only for Dolby Vision Video With Multi-Channel Audio in HLS streams

Hi,

it seems the current WebOS versions (at least version 23 and 24 as confirmed by an LG C4 and an LG G4) seem to have audio issues, when it comes to playing HLS streams with Dolby Vision video content.
If an HLS stream contains either an DV profile 5 or an DV profile 8.1 video stream, then the audio output via HDMI eARC is always just stereo. This is even true, when the original audio stream is Dolby Digital+ 5.1 or Dobly Atmos and bitstreaming via ARC or eARC is enabled. It seems there is a forced audio conversion to 2 channel audio, that is triggered whenever an Dolby Vision video stream is detected.

This effect can be observed by using the Jellyfin application from the app store with a corresponding DV source file.

I initially reported this issue to the developers of the Jellyfin app on Github. Please see my bug report there for more details.
After some investigation it seems thee app is not causing the audio down-conversion. It just packages the unmodified video and audio stream in an HLS stream and sends it to the app on the TV. The app on the TV is then passing the HLS stream to the WebOS media SDK for rendering. And it seems the HLS rendering implementation of WebOS then does the audio conversion to stereo, when it receives the stream.

Can you please check and see, if Dolby Vision video in combination with multi channel audio in an HLS container is working as expected with HDMI ARC bitstreaming?

Is there maybe any way I can try to get more insights into this issue myself? Is is possible to enable some sort of debug logging in the media SDK of the WebOS?

Thanks & regards,
Christian

1 Like

Please make sure your media meets Streaming Protocol and DRM specifications. webOS TV does not support some HLS tags, and most issues are caused by this. Video and Audio Format and HLS Troubleshooting FAQ are also helpful. Thank you.

Possible options to play Dolby Vision content on webOS are:

1 DirectPlay:
MPEG transport stream (MPEG-TS, MTS)
MPEG-4 (MP4, MOV) → Profile 8 broken on webOS24 (*)
2 HLS (HTTP Live Streaming) → Stereo only

Now that direct play / local play of MPEG-4 with Dolby Vision Profile 8 (dvhe.08.06) fail/refuse to be recognized at all on webOS24, the only remaining “consistent” option for webOS is to remux/save/serve your (P8) content into transport streams.
(This MP4 DV P8 webOS24 bug has not been fixed yet, it’s been some time since the webos24 updates for <2024 models).

With a proper working HLS (audio) implementation on webOS, media playback would be possible without the need to remux files (and would have offered a end-user solution/workaround for the current MP4 DV P8 problems on webOS24).
HLS is great for developers and users! :slight_smile:

BTW: I noticed when playing Dolby Atmos with HLS using TV speakers, the Dolby Atmos popup does appear in the upper-right corner. Perhaps this is an(other) indication the issue could be HDMI ARC / Passtrough related? (If it’s properly working as intended when using tv speakers only?)

(*) Personally have not tested C4/G4, but can confirm for C/G2-3.

The problem is more common than reported. Everytime HLS is used, regardless of DV content, only stereo audio is used despite the TV receiving multichannel audio and showing even the Dolby Atmos notification when available.

I did some tests and the problem disappears when using third-party hls (hls.js).

Can someone at LG confirm if this is a limitation of webOS hls implementation or if it’s a bug that will be fixed?

Yes, I think the fact “Dolby Atmos” can still popup even though the receiver is only receiving stereo is a clear indication that there is a bug to be fixed. And the bug fix is definitely not “don’t show the Atmos popup” because it’s not just Atmos that is being downgraded to 2.0. It’s just one of the more obvious cases.

Any thoughts @narae0.kim? I’ve also contacted Dolby about this.

Sorry for the late reply. Can you share the test URL? If you want to share it privately, please email us at developer@lge.com. Thank you.

Not sure what you mean by a test URL. Read the first post for more information & links on how to reproduce.

Please share your HLS stream URL so we can check the issue in the Jellyfin app. Thank you.

Hello narae0.kim,


thank you for looking into this issue. It looks like you have installed the Jellyfin client app on your TV. That’s good, but unfortunately not sufficient to reproduce the issue.

You also need a corresponding server instance, the Jellyfin server, to connect your client to. The media content is supposed to be hosted on the Jellyfin server. You can then connect your client to the server, browse the content and have the server stream it to the Jellyfin client on the TV.


Unfortunately though, I cannot provide you a link to a Jellyfin server. Those servers are build for use in intranet within a home and are not necessarily very secure and hardened. That is why these servers are typically not exposed to the internet and blocked by the firewalls.


So, in order to check this issue, you’d need to set up your own Jellyfin server instance first. You can find instructions how to do that here.

Once you have done that, having suitable test content is not a problem. At the end of this post I will provide a list of content that can be used to reliably reproduce the issue.


But before I go into explaining how to reproduce the issue, let me say that we have gained a little bit more insight into it by now. Unlike the title of this thread says, it turns out that playing Dolby Vision content is not the actual cause. Even though the issue does happen when playing Dolby Vision content, it is not just limited to it. After more investigation we now know that the stereo-only issue happens whenever the native HLS interface is used. It is not depending on the content at all. It happens for all kinds of content no matter the resolution, no matter if SDR or HDR, no matter the audio format. The only relevance is whether or not the HLS interface is used by the Jellyfin client. And the HLS interface is used by Jellyfin whenever it cannot “direct play” the content as-is without any adaptation. In such an adaptation case the Jellyfin server needs to either remux or transcode the content in order to make it consumable by the client. In both cases, remuxing and transcoding, the Jellyfin client is receiving an HLS stream that it is passing to the native HLS interface for rendering. And in any of those cases the stereo-only issue occurs. This is why there is now a wide believe that the issue is with the HLS implementation of WebOS.


Reproduction


Now, in order to reproduce the issue I focus on 2 methods:

  1. The original DV-in-MKV usecase:

Play some DV profile 5 content with any multi channel audio that is inside a Matroska container. Dolby Vision in MKV containers is not supported by WebOS. Playing such content on the Jellyfin client will trigger remuxing by the Jellyfin server in order to make the content consumable. Doing so the video and audio streams remain untouched and are merely on-the-fly repackaged into a fragmented MP4 container (needs “User settings” > “Playback” > “Prefer fMP4-HLS Media Container” enabled on the client). On my LG G4 the video content plays fine and is recognized as DV (toaster is displayed), but the audio is stereo only.

  1. Forced transcoding usecase:

In this usecase we create an artificial resource limitation on the Jellyfin client to force the Jellyfin server into transcoding the video content (Note: we do not touch the audio content!).

There are different options to set such an limitation up. I like to limit the client resolution to 720p. This can be configured on the Jellyfin client in “User settings” > “Playback” by setting “Maximum Allowed Video Transcoding Resolution” to “720p” and enabling the “Limit maximum supported video resolution” checkbox. Now, if I play any of the below listed demo content, which is intentionally in full HD or better, then transcoding will occur and the stereo-only issue happens.


Demonstration content


The below content is from the internet archive at https://archive.org/details/2024-home-theater-demos.

It is mainly showcase trailers from Dobly, DTS and LG. I consider it public domain and free to use. If this is not the case or against any policy, then please feel free to remove them.


EDIT: Since I can only put 2 links in a post, I’ll try to split this post up

  1. For the DV-in-MKV usecase

These files can never “direct play” and have to be remuxed for WebOS.

 - 4K resolution
 - DV profile 5
 - Atmos or DD+ audio
 - MKV container
  1. For the transcoding usecase

These files all “direct play” and work fine when played normally. However, when transcoding is enforced, they all exhibit the stereo-only bug.


 - 4K resolution
 - DV profile 5
 - Atmos or DD+ audio
 - TS container

 - 1080p resolution
 - SDR
 - DTS-HD audio
 - MKV container

 - 1080p resolution
 - SDR
 - Atmos and DD audio
 - MKV container

Thanks!

Can you share a simple sample app that we can play the stream and reproduce the issue?

I’m sorry, that’s not possible. Jellyfin is a client/server application. The client (in this case the Jellyfin WebOS app) receives it’s content from the Jellyfin server via calls against its API. Unless you write your own simple server implementing the same API that is used/expected by the client. there is no way to feed the client.

TL;DR: Nope, you need a Jellyfin server instance