jellyfin / jellyfin-roku

The Official Roku Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
451 stars 141 forks source link

Selectable DTS Passthrough for Roku #532

Open 21teddy opened 2 years ago

21teddy commented 2 years ago

Many users have a receiver or system that can decode DTS/DTS-MA behind their Roku but because this is not a native Roku format, Jellyfin automatically transcodes it.

A hard selectable DTS Passthrough option, with clear and concise warning that it may break audio playback. Lots of warning that it is an expert option or possibly a small DTS sample file with a did you hear audio? with a Yes No after the sample plays with no resetting the option.

neilsb commented 2 years ago

I don't have a setup where I can test this, so apologies in advance if I ask any stupid questions.

If the decoder reports to the Roku device that it supports DTS, it currently shouldn't transcode. I'm assuming this is not what you're seeing?

If, in the Roku system menu, you set your audio setup to be custom rather that auto detected, and say you support DTS, does the content play without transcoding? (I'm not suggesting this is a solution / just trying to understand what is happening)

21teddy commented 2 years ago

I use a different media server and have had tons of audio issues over the years and until the day I posted this I was never sure about that handoff working. So I was checking out the other night and I happened to be in the Roku in those settings, trying to see if I could find a mode where it didn't transcode. I had my answer when I went to Auto on the Roku and I was in the DTS AC3/Auto on the amp and when I went to hit auto I watched it start flipping back and forth between AC3 and DTS detected. So, yes that function is working. I have set it to both auto and custom on the Roku (first place I went) and can't seem to stop it. The amp is set to detect whatever comes in and decode streams up to DTS-MA and Dolby TrueHD.

Equipment is a Yamaha RXV 567, and a Roku 4640X Ultra (first series with onboard H265)

But I was still transcoding audio on the one TV series I have in DTS (default track, and the only audio track) on these files. It's a bit annoying in that it's recoding the video as well but I saw that is being looked at.

Here is the file info for the file tha'ts transcoding: Format : MPEG-4 Format profile : Base Media / Version 2 Codec ID : mp42 (mp42/iso2/mp41) File size : 437 MiB Duration : 21 min 40 s Overall bit rate : 2 819 kb/s Encoded date : UTC 2022-02-04 05:43:35 Tagged date : UTC 2022-02-04 05:43:35 Writing application : HandBrake 1.5.1 2022011000 Video ID : 1 Format : HEVC Format/Info : High Efficiency Video Coding Format profile : @.**@Main Codec ID : hvc1 Codec ID/Info : High Efficiency Video Coding Duration : 21 min 40 s Bit rate : 1 305 kb/s Width : 1 920 pixels Height : 1 080 pixels Display aspect ratio : 16:9 Frame rate mode : Variable Frame rate : 23.976 (24000/1001) FPS Minimum frame rate : 23.974 FPS Maximum frame rate : 23.981 FPS Color space : YUV Chroma subsampling : 4:2:0 (Type 0) Bit depth : 8 bits Bits/(PixelFrame) : 0.026 Stream size : 202 MiB (46%) Writing library : x265 3.5+1-f0c1022b6:[Windows][GCC 10.2.0][64 bit] 8bit+10bit+12bit Encoding settings : cpuid=1111039 / frame-threads=3 / numa-pools=8 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=1920x1080 / interlace=0 / total-frames=0 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=3 / no-allow-non-conformance / no-repeat-headers / annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=24 / keyint=240 / gop-lookahead=0 / bframes=6 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=20 / lookahead-slices=6 / scenecut=40 / hist-scenecut=0 / radl=0 / no-splice / no-intra-refresh / ctu=64 / min-cu-size=8 / no-rect / no-amp / max-tu-size=32 / tu-inter-depth=1 / tu-intra-depth=1 / limit-tu=0 / rdoq-level=0 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=3 / limit-refs=1 / no-limit-modes / me=1 / subme=2 / merange=57 / temporal-mvp / no-frame-dup / no-hme / weightp / no-weightb / no-analyze-src-pics / deblock=1:1 / sao / no-sao-non-deblock / rd=3 / selective-sao=4 / early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=0.40 / psy-rdoq=0.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=crf / crf=22.0 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=0 / ipratio=1.40 / pbratio=1.30 / aq-mode=2 / aq-strength=0.40 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=1 / overscan=0 / videoformat=5 / range=0 / colorprim=1 / transfer=1 / colormatrix=1 / chromaloc=1 / chromaloc-top=0 / chromaloc-bottom=0 / display-window=0 / cll=0,0 / min-luma=0 / max-luma=255 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / hist-threshold=0.03 / no-opt-cu-delta-qp / no-aq-motion / no-hdr10 / no-hdr10-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=0 / analysis-save-reuse-level=0 / analysis-load-reuse-level=0 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=1 / refine-ctu-distortion=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-analysis-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei / no-hevc-aq / no-svt / no-field / qp-adaptation-range=1.00 / scenecut-aware-qp=0conformance-window-offsets / right=0 / bottom=0 / decoder-max-rate=0 / no-vbv-live-multi-pass Encoded date : UTC 2022-02-04 05:43:35 Tagged date : UTC 2022-02-04 05:43:35 Color range : Limited Color primaries : BT.709 Transfer characteristics : BT.709 Matrix coefficients : BT.709 Menus : 3 mdhd_Duration : 1300299 Codec configuration box : hvcC Audio ID : 2 Format : DTS Format/Info : Digital Theater Systems Codec ID : mp4a-A9 Duration : 21 min 40 s Source duration : 21 min 40 s Bit rate mode : Constant Bit rate : 1 509 kb/s Channel(s) : 6 channels Channel layout : C L R Ls Rs LFE Sampling rate : 48.0 kHz Frame rate : 93.750 FPS (512 SPF) Bit depth : 24 bits Compression mode : Lossy Stream size : 234 MiB (54%) Source stream size : 234 MiB (54%) Title : Surround Language : English Default : Yes Alternate group : 1 Encoded date : UTC 2022-02-04 05:43:35 Tagged date : UTC 2022-02-04 05:43:35 Menus : 3 mdhd_Duration : 1300309

On Sun, Mar 13, 2022 at 4:45 PM Neil Burrows @.***> wrote:

I don't have a setup where I can test this, so apologies in advance if I ask any stupid questions.

If the decoder reports to the Roku device that it supports DTS, it currently shouldn't transcode. I'm assuming this is not what you're seeing?

If, in the Roku system menu, you set your audio setup to be custom rather that auto detected, and say you support DTS, does the content play without transcoding? (I'm not suggesting this is a solution / just trying to understand what is happening)

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1066197756, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCR22L3OKV2FZJXSBHLU7ZVYBANCNFSM5QSJWHKQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

-- Fred Toop 177 Kiniski Cr. Edmonon, AB 780 908-6949 @.***

21teddy commented 2 years ago

Sorry I didn't get back sooner. I had a bit of a rough week.

I can't get DTS 5.1 to play from Jellyfin with out transcoding. I may have figured out why and it looks like it's a Roku thing. So right now I am watching a file on Jellyfin with Dolby Digital 5.1. My receiver reports a DD+ 7.1 stream is being fed to it.

On the Roku in Settings/ audio / audio mode There is a setting for Stereo or Auto (DD+, DTS-HD). It is set to auto.

It would make sense if they are streaming those two formats (DD+ or DTS-HD) as even with 5.1 material my receiver shows 7.1 output is on. But also feeding any previous format through either of those decoders will decode it right?

I just checked plex as well and that seems to be what it's doing. Streaming to the Roku which relays it to the receiver as DD+ or DTS-HD. (from plex)

As a matter of fact plex just added a tick box in audio settings for Allow DTS-HD. I don't know why but it may be older receivers like mine how do you say, love Dolby and will play DTS if forced to.

On Sun, Mar 13, 2022 at 4:45 PM Neil Burrows @.***> wrote:

I don't have a setup where I can test this, so apologies in advance if I ask any stupid questions.

If the decoder reports to the Roku device that it supports DTS, it currently shouldn't transcode. I'm assuming this is not what you're seeing?

If, in the Roku system menu, you set your audio setup to be custom rather that auto detected, and say you support DTS, does the content play without transcoding? (I'm not suggesting this is a solution / just trying to understand what is happening)

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1066197756, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCR22L3OKV2FZJXSBHLU7ZVYBANCNFSM5QSJWHKQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

-- Fred Toop 177 Kiniski Cr. Edmonon, AB 780 908-6949 @.***

21teddy commented 2 years ago

Sorry my head is messed but I think what's happening is the Receiver isn't switching modes until it sees the DTS stream. IE. when I start playing a file, receiver goes blank for a moment and then starts decoding the stream.

On Sun, Mar 13, 2022 at 4:45 PM Neil Burrows @.***> wrote:

I don't have a setup where I can test this, so apologies in advance if I ask any stupid questions.

If the decoder reports to the Roku device that it supports DTS, it currently shouldn't transcode. I'm assuming this is not what you're seeing?

If, in the Roku system menu, you set your audio setup to be custom rather that auto detected, and say you support DTS, does the content play without transcoding? (I'm not suggesting this is a solution / just trying to understand what is happening)

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1066197756, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCR22L3OKV2FZJXSBHLU7ZVYBANCNFSM5QSJWHKQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

-- Fred Toop 177 Kiniski Cr. Edmonon, AB 780 908-6949 @.***

kpfleming commented 2 years ago

I have a Roku Ultra (4800X) connected to a DTS-capable soundbar, and MKV files that have DTS-HD or DTS-MA audio tracks, and they are playing just fine (in direct mode, no transcoding).

And yes, the 'auto' setting in 'Streaming audio format' in the current Roku firmware will allow pretty much anything through, and any sound system capable of DD+ (or better) and/or DTS-HD (or better) will also decode all of the older/lower formats in those families. I also have 'Passthrough' selected for 'Digital output format'.

21teddy commented 2 years ago

Untitled Untitled2

Could it just be the Roku Profile? One server does one doesn't....

rudism commented 2 years ago

I'm still having this same issue on my Roku hooked up to a DTS-MA capable receiver (which the Roku seems to recognize as such with the auto setting--Plex and other streaming services all send 5.1 audio).

When I play a HEVC 10bit mkv with AC3 5.1 audio in Jellyfin the whole thing (audio and video) gets transcoded (to h264 with AAC stereo audio) with the reason being the audio codec is not supported. If I go into my user and disable both video and audio transcoding and play the same file, it remuxes and direct-plays both streams on the Roku just fine, so it seems there's some kind of disconnect between what the Roku appears capable of and what it is actually capable of.

Having transcoding disabled is not ideal because I also use other Rokus that aren't hooked up to receivers, and in those cases I'd want only the audio transcoded to stereo while direct playing the video stream, so I need to do a constant dance with my user settings depending on which device and combination of direct play and transcoding I need. I would set up separate users for each device, but then I lose my watch history and bookmarks between devices.

21teddy commented 2 years ago

What the problem is is that it is "some" models of the Roku device that display this issue.

To overcome it there is a "force" option in Plex's Roku app to allow you to force it to send the DTS stream.

Sawtaytoes commented 1 year ago

@21teddy That "Force" option didn't work for me in Plex. This isn't a Plex support forum, but I wanna note, it's not even 100% for Plex either.

21teddy commented 1 year ago

Updated my Roku to a 4802ca over Christmas and using the audio pass through option it works for every file I have tried up to 24bit 7.1 dts-hd ma.

On Thu, Jan 12, 2023, 3:23 p.m. Kevin Ghadyani @.***> wrote:

@21teddy https://github.com/21teddy That "Force" option didn't work for me in Plex. This isn't a Plex support forum, but I wanna note, it's not even 100% for Plex either.

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1381060989, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCXJATTRN3KCWN5DL53WSB757ANCNFSM5QSJWHKQ . You are receiving this because you were mentioned.Message ID: @.***>

dathbe commented 1 year ago

I think I'm having a similar problem. I have a Sharp LC-50LBU711U Roku tv, which advertises it is DTS capable. But when I try to play a movie with DTS core sound (even 2.0 stereo), I get a transcode to AAC. This also happens when I connect a Samsung soundbar (also DTS capable). There are two Roku audio settings that seem to be relevant here, but no combination allows me to stream DTS audio:

Settings>Audio>Preferred streaming format Options are "Auto," "Dolby," and "DTS"

Settings>Audio>Digital output format Options are "Auto," "Passthrough," "Stereo," and "Custom" "Custom," in turn gives me the choice of Dolby Digital/Dolby Digital Plus, as well as DTS On/Off

Sawtaytoes commented 1 year ago

@dathbe You want "Auto" for the streaming format and "Passthrough" for the digital format.

I have some news. I haven't tested DTS with Jellyfin in a while, but I did test regular DTS (not DTS-HD) on the Roku Ultra with Plex, and it works!

That tells us that it's possible to get regular DTS output from the Roku Ultra 4800!

21teddy commented 1 year ago

Simple explanation is - whatever level DTS you are passing through the chain has to be handled by ALL components in the chain. Playing 7.1 source when your AVR or other devices only decode 2.0 will result in recoding. Playing 5.1 from your source on an AVR or device that will only decode 2.0 will result in recoding. Playing 7.1 source on a system that will only decode 5.1 will result in recoding

In short - if you try to play any source with MORE channels than your sink device (TV) can either decode or pass through - will result in audio recoding.

I changed my TV because it was ancient and did not handle DTS at all. It's part of why I upgraded. Now all my devices are ARC/EARC compatible. My new Roku has a Passthrough setting for audio. So it passes through the stream to the SINK device (TV) which then passes it to my EARC capable AVR, that can decode up to 7.1 DTS-MA.

Until ALL devices could talk EARC and handle 7.1 DTS-MA the only way I could play source material with 7.1 was either with a special mode in plex or with recoding.

On Wed, May 17, 2023 at 4:41 AM Kevin Ghadyani @.***> wrote:

I have some news. I haven't tested DTS with Jellyfin in a while, but I did test regular DTS (not DTS-HD) on the Roku Ultra with Plex, and it works! So that tells us at least that it's possible to get regular DTS output from the Roku Ultra 4800.

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1551156732, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCSMHL777Y4OYNACRWDXGSTNLANCNFSM5QSJWHKQ . You are receiving this because you were mentioned.Message ID: @.***>

-- Fred Toop 177 Kiniski Cr. Edmonon, AB 780 908-6949 @.***

dathbe commented 1 year ago

That doesn't fully explain my issue because I'm having trouble with 2.0 DTS. I haven't checked, but I have to believe the TV is at least stereo. It may work differently for the different codec, but I'm also able to play 5.1 AC3 with no transcoding at all. The TV can apparently downmix without any issues.

21teddy commented 1 year ago

You can not compare AC3 with DTS. AC3 is for the most part backwards compatible and will play 2 channels of a 5.1 stream. DTS WILL NOT.

Your audio device needs to decode DTS - which Roku does NOT and has NEVER done. Roku and DTS were very hit and miss as to whether it passes through or not as well. I assume at 2.0 you are trying to play DTS on the TV? Does the TV have a DTS decoder? DTS compatible passes DTS to a device with a decoder, and as mentioned Roku has never decoded DTS.

On Wed, May 17, 2023 at 7:36 PM dathbe @.***> wrote:

That doesn't fully explain my issue because I'm having trouble with 2.0 DTS. I haven't checked, but I have to believe the TV is at least stereo. It may work differently for the different codec, but I'm also able to play 5.1 AC3 with no transcoding at all. The TV can apparently downmix without any issues.

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1552288400, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCQGPVWI3GXLPUDMGHTXGV4JFANCNFSM5QSJWHKQ . You are receiving this because you were mentioned.Message ID: @.***>

-- Fred Toop 177 Kiniski Cr. Edmonon, AB 780 908-6949 @.***

dathbe commented 1 year ago

It's a Roku TV, and yes, it states it is DTS capable. I've also tried it with a Samsung soundbar that is also supposedly DTS capable. Nevertheless, even with passthrough turned on, Jellyfin insists on a transcode.

21teddy commented 1 year ago

As I only dabbled with jellyfish for a short time before moving to Emby while looking for an alternative to plex I do not have an answer for you.

On Wed, May 17, 2023 at 9:24 PM dathbe @.***> wrote:

It's a Roku TV, and yes, it states it is DTS capable. I've also tried it with a Samsung soundbar that is also supposedly DTS capable. Nevertheless, even with passthrough turned on, Jellyfin insists on a transcode.

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1552350541, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCUBOGGSM5FZMWZ3L23XGWI5JANCNFSM5QSJWHKQ . You are receiving this because you were mentioned.Message ID: @.***>

-- Fred Toop 177 Kiniski Cr. Edmonon, AB 780 908-6949 @.***

dathbe commented 1 year ago

Thanks for trying to help. This is about the only significant issue I have with Jellyfin, so I don't need to switch platforms. I'll probably just encode stuff as AC3 instead. But it's a curious problem that must have a solution.

21teddy commented 1 year ago

Just FYI unless you are really light on server horsepower, I would just let it remux the audio. It's a very lightweight task for your server.

On Thu, May 18, 2023, 12:58 p.m. dathbe @.***> wrote:

Thanks for trying to help. This is about the only significant issue I have with Jellyfin, so I don't need to switch platforms. I'll probably just encode stuff as AC3 instead. But it's a curious problem that must have a solution.

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1553499836, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCR5QTYXL6ZSVMW5ZALXGZWNHANCNFSM5QSJWHKQ . You are receiving this because you were mentioned.Message ID: @.***>

dathbe commented 1 year ago

Yes, but in another quirk, transcoding and remuxing the audio messes up SRT subtitle timing. Sigh.

21teddy commented 1 year ago

Well...hope you get it all sorted out.

On Thu, May 18, 2023, 5:54 p.m. dathbe @.***> wrote:

Yes, but in another quirk, transcoding and remuxing the audio messes up SRT subtitle timing. Sigh.

— Reply to this email directly, view it on GitHub https://github.com/jellyfin/jellyfin-roku/issues/532#issuecomment-1553798771, or unsubscribe https://github.com/notifications/unsubscribe-auth/AYBTXCVCMFVL4JJLKLN6O2TXG2ZBXANCNFSM5QSJWHKQ . You are receiving this because you were mentioned.Message ID: @.***>