jellyfin / jellyfin-androidtv

Android TV Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
2.46k stars 417 forks source link

0.12.x Beta: No audio when playing EAC3 on CCwGTv #1032

Closed arpitgupta closed 2 years ago

arpitgupta commented 2 years ago

Media Info of the file

Audio
Title English - Dolby Digital+ - 6 ch
Language eng
Codec EAC3
Channels 6 ch
Bitrate 768 kbps
Sample rate 48000 Hz
Default No
Title 1080p HEVC SDR
Codec HEVC
Profile Main 10
Level 120
Resolution 1920x960
Aspect ratio 2:1
Interlaced No
Framerate 23.976025
Bitrate 4777 kbps
Video range SDR
Color space bt709
Color transfer bt709
Color primaries bt709
Pixel format yuv420p10le
Ref frames 1

System (please complete the following information): CCwGTv with 0.12 latest beta JF: 10.7.6 Player: Set to choose automatically Sound: Set to Direct

Additional context When i play content with EAC3 format on my CCwGTv there is no audio. It is connected to my TV and there is no recieiver. From JF dashboard looks like the content was direct playing. The audio should have been transcoded. If i change the JF app to downmix audio to stero then it plays fine. Other audio formats such as AAC 5.1 play just fine on CCwGTv and are direct playing. When playing same through Plex it shows audio is being transcoded.

Same content direct plays fine on my nvidia shield which is connected to a reciever.

Logs

[2021-07-24 16:34:49.872 -07:00] [INF] [4] Jellyfin.Api.Controllers.MediaInfoController: GetPostedPlaybackInfo profile: DeviceProfile { Name: "AndroidTV-libVLC", Id: null, Identification: null, FriendlyName: null, Manufacturer: null, ManufacturerUrl: null, ModelName: null, ModelDescription: null, ModelNumber: null, ModelUrl: null, SerialNumber: null, EnableAlbumArtInDidl: False, EnableSingleAlbumArtLimit: False, EnableSingleSubtitleLimit: False, SupportedMediaTypes: "Audio,Photo,Video", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 20000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "m4v,3gp,ts,mpegts,mov,xvid,vob,mkv,wmv,asf,ogm,ogv,m2v,mpg,mpeg,mp4,webm,wtv", AudioCodec: "aac,mp3,mp2,ac3,wma,wmav2,dca,dts,pcm,PCM_S16LE,PCM_S24LE,opus,flac,truehd", VideoCodec: null, Type: Video }, DirectPlayProfile { Container: "flac,aac,mp3,mpa,wav,wma,mp2,ogg,oga,webma,ape", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "jpg,jpeg,png,gif,webp", AudioCodec: null, VideoCodec: null, Type: Photo }], TranscodingProfiles: [TranscodingProfile { Container: "mkv", Type: Video, VideoCodec: "h264", AudioCodec: "aac,mp3", Protocol: null, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: True, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: null, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: VideoProfile, Value: "none", IsRequired: False }], ApplyConditions: [], Codec: "hevc", Container: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }, CodecProfile { Type: VideoAudio, Conditions: [ProfileCondition { Condition: LessThanEqual, Property: AudioChannels, Value: "8", IsRequired: False }], ApplyConditions: [], Codec: null, Container: null }], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pbssub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "dvdsub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "smi", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "idx", Method: Embed, DidlMode: null, Language: null, Container: null }] }
[2021-07-24 16:34:49.894 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "ZZZZZZ". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-07-24 16:34:49.894 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-libVLC", Path: "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-07-24 16:34:49.894 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-libVLC", No video direct play profiles found for "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv" with codec "hevc"
[2021-07-24 16:34:49.909 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-libVLC", Path: "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-07-24 16:34:49.909 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-libVLC", No video direct play profiles found for "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv" with codec "hevc"
[2021-07-24 16:34:49.926 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-libVLC", Path: "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-07-24 16:34:49.926 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-libVLC", No video direct play profiles found for "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv" with codec "hevc"
[2021-07-24 16:34:50.175 -07:00] [INF] [4] Jellyfin.Api.Controllers.MediaInfoController: GetPostedPlaybackInfo profile: DeviceProfile { Name: "AndroidTV-ExoPlayer", Id: null, Identification: null, FriendlyName: null, Manufacturer: null, ManufacturerUrl: null, ModelName: null, ModelDescription: null, ModelNumber: null, ModelUrl: null, SerialNumber: null, EnableAlbumArtInDidl: False, EnableSingleAlbumArtLimit: False, EnableSingleSubtitleLimit: False, SupportedMediaTypes: "Audio,Photo,Video", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 20000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "m4v,mov,xvid,vob,mkv,wmv,asf,ogm,ogv,mp4,webm", AudioCodec: "aac,ac3,eac3,aac_latm,mp3,mp2,dca,dts", VideoCodec: "h264,hevc,vp8,vp9,mpeg,mpeg2video", Type: Video }, DirectPlayProfile { Container: "aac,mp3,mpa,flac,wav,wma,mp2,ogg,oga,webma,ape,opus", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "jpg,jpeg,png,gif,webp", AudioCodec: null, VideoCodec: null, Type: Photo }], TranscodingProfiles: [TranscodingProfile { Container: "mkv", Type: Video, VideoCodec: "h264", AudioCodec: "ac3,aac,mp3", Protocol: null, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: True, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: null, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: LessThanEqual, Property: RefFrames, Value: "12", IsRequired: False }], ApplyConditions: [ProfileCondition { Condition: GreaterThanEqual, Property: Width, Value: "1200", IsRequired: False }], Codec: "h264", Container: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: LessThanEqual, Property: RefFrames, Value: "4", IsRequired: False }], ApplyConditions: [ProfileCondition { Condition: GreaterThanEqual, Property: Width, Value: "1900", IsRequired: False }], Codec: "h264", Container: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: NotEquals, Property: VideoProfile, Value: "none", IsRequired: False }], ApplyConditions: [], Codec: "hevc", Container: null }, CodecProfile { Type: VideoAudio, Conditions: [ProfileCondition { Condition: LessThanEqual, Property: AudioChannels, Value: "6", IsRequired: False }], ApplyConditions: [], Codec: null, Container: null }], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "subrip", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ass", Method: Encode, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ssa", Method: Encode, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pgs", Method: Encode, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "pbssub", Method: Encode, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "dvdsub", Method: Encode, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "vtt", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "sub", Method: Embed, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "idx", Method: Embed, DidlMode: null, Language: null, Container: null }] }
[2021-07-24 16:34:50.193 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "ZZZZZZ". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2021-07-24 16:34:50.193 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-ExoPlayer", Path: "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-07-24 16:34:50.212 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-ExoPlayer", Path: "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-07-24 16:34:50.231 -07:00] [INF] [4] Jellyfin.Api.Helpers.MediaInfoHelper: Profile: "AndroidTV-ExoPlayer", Path: "/data/tvshows/XXXXXXXX/Season.01/YYYYYYY.WEBDL-1080p.mkv", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2021-07-24 16:34:50.798 -07:00] [INF] [33] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : f7d46c5592f100b1a5c44cec0360d5ba6f90f247-ef16fb8ea4b74d2dbe6fb695a0ad41b2-2fcdb1e9b48b3e709e7d84b726306cfc
[2021-07-24 16:34:50.799 -07:00] [INF] [33] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 07/24/2021 16:34:50
[2021-07-24 16:34:50.799 -07:00] [INF] [33] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
[2021-07-24 16:34:50.799 -07:00] [INF] [33] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
[2021-07-24 16:34:51.222 -07:00] [INF] [50] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "f7d46c5592f100b1a5c44cec0360d5ba6f90f247-ef16fb8ea4b74d2dbe6fb695a0ad41b2-2fcdb1e9b48b3e709e7d84b726306cfc"
[2021-07-24 16:35:02.917 -07:00] [INF] [26] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Android TV" "0.12.0-beta.2" playing "Pilot". Stopped at "11111" ms
[2021-07-24 16:35:03.146 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback stop tracker found, processing stop : "f7d46c5592f100b1a5c44cec0360d5ba6f90f247-ef16fb8ea4b74d2dbe6fb695a0ad41b2-2fcdb1e9b48b3e709e7d84b726306cfc"
[2021-07-24 16:35:03.146 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Stop Event : 07/24/2021 16:35:03
[2021-07-24 16:35:03.146 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback stop but TrackedPlaybackInfo not found! not storing activity in DB
[2021-07-24 16:35:10.799 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : "192.168.1.35"
[2021-07-24 16:35:10.799 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id     = "2fcdb1e9b48b3e709e7d84b726306cfc"
[2021-07-24 16:35:10.799 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id        = "ef16fb8ea4b74d2dbe6fb695a0ad41b2"
[2021-07-24 16:35:10.799 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int    = 1
[2021-07-24 16:35:10.799 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id   = ""
[2021-07-24 16:35:10.799 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id      = "ef16fb8ea4b74d2dbe6fb695a0ad41b2"
[2021-07-24 16:35:10.800 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method          = "na"
[2021-07-24 16:35:10.800 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName         = "Android TV"
[2021-07-24 16:35:10.800 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName         = "Master Bedroom TV"
[2021-07-24 16:35:10.800 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName             = "XXXXXXXX - s01e01 - Pilot"
[2021-07-24 16:35:10.800 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId               = "2fcdb1e9b48b3e709e7d84b726306cfc"
[2021-07-24 16:35:10.800 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType             = "Episode"
[2021-07-24 16:35:10.800 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Details do not match for play item
[2021-07-24 16:35:10.800 -07:00] [INF] [56] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Exited
nielsvanvelzen commented 2 years ago

Is this issue new in 0.12 or does it also apply to 0.11?

arpitgupta commented 2 years ago

I am not sure about that. I was not using JF regularly with 0.11 as everything was getting transcoded and i had to disabel all transcoding settings for the user.

newton181 commented 2 years ago

I was facing same issue with Android version, till update the Android webview, its webwiew related with exoplayer?

In Android TV use libvlc automatically, but i will try exoplayer, because recently the TV update the webview.

arpitgupta commented 2 years ago

I was facing same issue with Android version, till update the Android webview, its webwiew related with exoplayer?

In Android TV use libvlc automatically, but i will try exoplayer, because recently the TV update the webview.

Interesting my webview update gets stuck. Do you have the version that is installed on yours? I can see what i am running.

arpitgupta commented 2 years ago

fyi i updated to latest android webview 92.0.4515.115 (July 23, 2021) and i still have this issue.

Some more info.

When i set the player to exoplayer, it tries to direct play and there is no sound When i set the player to libVLC then we have transcoding and the reason being audiocodec not supported. I have confirmed other audio codec's like AAC 5.1 still continue to directplay.

johnsheldon commented 2 years ago

I've had issues playing AC3 audio tracks with Exoplayer #1029, could this be related?

Cloneg commented 2 years ago

Had same problem. Workaround is to use external app like vlc for videos with eac3 audio codecs. More info: https://www.reddit.com/r/jellyfin/comments/kc9f10/jellyfin_android_app_does_unnecessary_transcoding/

newton181 commented 2 years ago

fyi i updated to latest android webview 92.0.4515.115 (July 23, 2021) and i still have this issue.

Some more info.

When i set the player to exoplayer, it tries to direct play and there is no sound When i set the player to libVLC then we have transcoding and the reason being audiocodec not supported. I have confirmed other audio codec's like AAC 5.1 still continue to directplay.

My bad, i was using an user with transcoded audio, in my main user (without transcode permissions) i still have this issue.

johnsheldon commented 2 years ago

So there is a setting to enable surround sound for Chromecast with Google TV that I was unaware of, for some reason it is disabled by default. Audio and full Dolby Vision video are now working in Exoplayer for me, not sure if this has anything to do with your issue but it fixed mine.

arpitgupta commented 2 years ago

I have surround setting enabled and i still have the issue. When i try to manually enable various surround sound formats it says my device does not support it, so i did not enable them.

svemonix commented 2 years ago

I think this is a typical Android TV issue where by default exoplayer assumes that the audio capabilities are the ones from the device running Android TV. This obviously doesn't work if there are some limitations somewhere in the audio chain (e.g. the Android TV can passthrough EAC3 but the TV doesn't handle EAC3).

This is why players like Kodi or Plex allows you to fine tune the specific codecs allowed manually. I think this should be implemented in Jellyfin too.

That being said, what is the issue in your specific case? It sounds like the CCwGTv is simply connected to a stereo TV so the downmix output is the correct option.

arpitgupta commented 2 years ago

This is why players like Kodi or Plex allows you to fine tune the specific codecs allowed manually. I think this should be implemented in Jellyfin too.

I did not specify any codec's manually in Plex and it direct stream's this file where only the audio is being converted. I am not sure if Plex provides this option. At least i could not find it in the android app.

svemonix commented 2 years ago

Exactly, Plex transcodes the audio on the server side because you probably don’t have HDMI passthrough active so it’s gonna output Stereo like Jellyfin with downmix.

linetrimmer commented 2 years ago

So I did some testing with my Chromecast.

TLDR

Testing Notes

svemonix commented 2 years ago

The above is pretty normal except that EAC3 is not supported over ARC but eARC. In any case, it is pretty obvious that the HW chain (and its SW settings: Jellyfin app, Android device, TV, receiver) will determine what can be played or not. The jellyfin app can't do miracles.

BTW, I wouldn't say it "plays AC3" on the FireTV if the output is 2.0 PCM. This is downmix just like it can be done with the Jellyfin app.

Sorry, but I don't see where the problem is? Looks to me like this thread is a non-issue.

thornbill commented 2 years ago

I think the best solution we can add for 0.12 will be to enable downmixing by default on this device.

Could someone with the Chromecast device confirm the model name is just "Chromecast"? You can check at the bottom of the settings panel in the 0.12 app. I believe it should read "Google Chromecast." Thanks!

linetrimmer commented 2 years ago

Could someone with the Chromecast device confirm the model name is just "Chromecast"? You can check at the bottom of the settings panel in the 0.12 app. I believe it should read "Google Chromecast." Thanks!

Yep, this is it

arpitgupta commented 2 years ago

@thornbill yes it says "Google Chromecast"

arpitgupta commented 2 years ago

I also noticed that when i enable downmixing i get

Stream #0:0 -> #0:0 (hevc (hevc_qsv) -> h264 (h264_qsv))
Stream #0:1 -> #0:1 (eac3 (native) -> aac (native))

Where as plex will direct stream the video and only transcode the audio. Does this mean Jellyfin is transcoding both video and audio?

Also config "Bitstream Dobly Digital Audio" is selected and i am not able to un select it.

thornbill commented 2 years ago

It looks like that is transcoding video and audio.

The "Bitstream" options don't appear to do much. I think they are only used to determine which player library to use when that option is left on "Automatically Choose".

arpitgupta commented 2 years ago

It looks like that is transcoding video and audio.

Are there any config options i can play with that will be able to direct stream this content?

svemonix commented 2 years ago

I think the best solution we can add for 0.12 will be to enable downmixing by default on this device.

Could someone with the Chromecast device confirm the model name is just "Chromecast"? You can check at the bottom of the settings panel in the 0.12 app. I believe it should read "Google Chromecast." Thanks!

Why should there be an exception for this device? Maybe downmix should be always be the default on any device and only people with home cinema setups would activate pass-through.

Other than that, the behavior looks to me pretty standard for an Android TV device. It is rather the FireTV that is an exception with its transcoding and something the Kodi team complains a lot about. FireTV has also a licensed Dolby encoder that allows to transcode 7.1 TrueHD to 7.1 EAC3 which FFMPEG can't do.

Can anyone write a clear problem statement?

I also noticed that when i enable downmixing i get

Stream #0:0 -> #0:0 (hevc (hevc_qsv) -> h264 (h264_qsv))
Stream #0:1 -> #0:1 (eac3 (native) -> aac (native))

Where as plex will direct stream the video and only transcode the audio. Does this mean Jellyfin is transcoding both video and audio?

Also config "Bitstream Dobly Digital Audio" is selected and i am not able to un select it.

I'm confused here. If I'm not mistaking downmix was performed locally by the Jellyfin app (at least in 0.11.X) without triggering server transcoding. Not sure this is a desired behavior in 0.12

Try to deactivate video transcoding maybe?