Jellyfin Forum
HEVC Main10 will not transcode for Exoplayer - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: HEVC Main10 will not transcode for Exoplayer (/t-hevc-main10-will-not-transcode-for-exoplayer)



HEVC Main10 will not transcode for Exoplayer - evilfranky - 2024-01-25

Evening all,

Hoping joining the forum will finally resolve a long standing issue with transcoding HEVC Main10 video while using the official Jellyfin Android client Exoplayer on my Honor Tab X9.

I'd been using an LG GPAD 8.3 for years, an older tablet that supported HEVC Main but not HEVC Main10 and could never get Jellyfin to transcode using Exoplayer on there either.  It finally died so bought this Honor last week stupidly assuming that an 'upper' low range modern tablet that is 10 years younger than my old LG would support all the video formats I need.  I should have done more research, but still I should be able to use Jellyfin to help me out  Upside-down-face

General Info:

Jellyfin 10.8.13.
Ubuntu 22.04 running Jellyfin in a Docker container from the official repo.
Intel GeminiLake with UHD 605 Graphics.  Codec support can be found here https://en.wikipedia.org/wiki/Intel_Graphics_Technology#Capabilities_(GPU_video_acceleration) . HEVC Main10 is supported for decode.

HEVC Main10 videos do NOT playback when using either software decoding or hardware acceleration when using the option from within the Exoplayer itself.
HEVC Main videos playback without issue with either hardware acceleration on or off.  This is expected behaviour as this codec is supported by the Snapdragon 685 SOC.
When using an external player either MX Player Pro or VLC, videos will play natively with HEVC Main10 software decoding (there's enough grunt in the new tablet to do that).
When using the built in webplayer rather than Exoplayer, videos transcode without issue to H264 and play fine.  But this will incur a battery penalty as I believe the webplayer will use software decode?
Videos also transcode correctly when using Brave Browser on my PC and played from the Jellyfin web portal.
Tried both Intel QSV and VAAPI both show the same issue.  QSV is my default.

Now curiously, if I manually configure the desired resolution and bit rate within Exoplayer itself once the video has failed to start, I can get some form of playback.  As an example, on one video which is 1080p HEVC Main10 YUV4:2:0 I have options from 1080p 60Mbps all the way down to 360p 420kbps.  If I select 480p 3Mbps through to 360p 420kbps the video transcodes and works fine although at a much reduced resolution and quality.  Anything higher and the video fails to play again.

Anyway, Jellyfin should be transcoding to Exoplayer like it does when using the webplayer.  I can't understand why it doesn't.

Could it be that Exoplayer cannot differentiate between HEVC profile device abilities?  So if a device can play back HEVC Main but not HEVC Main10 Exoplayer just looks at the top level and says, yep HEVC is supported and attempts direct play?

Code:
[2024-01-25 22:03:26.194 +00:00] [INF] [65] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Frankie". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-01-25 22:03:26.194 +00:00] [INF] [65] Jellyfin.Api.Helpers.MediaInfoHelper: StreamBuilder.BuildVideoItem( Profile="Jellyfin Android", Path="/media/Movies/W/Wonka.2023/Wonka.2023.1080p.WEBRip.DDP5.1.x265.10bit-GalaxyRG265.mkv", AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=DirectPlay, TranscodeReason=0 ) "media:/videos/39923cc8-f0cd-f357-7e81-5e7914a9d3f4/stream.mkv?MediaSourceId=39923cc8f0cdf3577e815e7914a9d3f4&Static=true&VideoCodec=hevc&AudioCodec=eac3&AudioStreamIndex=1&api_key=<token>&Tag=0ff675331345cebf731a719c4ea585f7"

I'd love to get to the bottom of this as I'm sure other people must be having the same or very similar issues.

Also is there a guide for grabbing the logs correctly, I'm not sure I'm providing enough info.

Cheers!


RE: HEVC Main10 will not transcode for Exoplayer - TheDreadPirate - 2024-01-25

The log snippet you provided says it is direct playing, so the device compatibility is the only factor in that case.

Can you share the full media info of this video from the Jellyfin UI?

Logs are located in container path /config/data/logs.


RE: HEVC Main10 will not transcode for Exoplayer - evilfranky - 2024-01-26

Good morning,

Thanks for the quick reply, much appreciated.

So what I have done is stopped the Jellyfin container, updated the 'logging.default.json' config file to provide DEBUG logging, deleted all the old log files and restarted the Jellyfin container.

I then tried to play the same file and there is more info in the log now.

I've zipped the log file and attached to this post.  There are no transcode logs as transcoding is not being attempted.

From the Exoplayer UI, pressing the information button doesn't really provide a lot of file info.  So I loaded it into MPC-HC and pulled the media info from there:-

[code]
Video
ID                            : 1
Format                        : HEVC
Format/Info                    : High Efficiency Video Coding
Format profile                : Main 10@L4@Main
Codec ID                      : V_MPEGH/ISO/HEVC
Duration                      : 1 h 56 min
Bit rate                      : 6 647 kb/s
Width                          : 1 920 pixels
Height                        : 802 pixels
Display aspect ratio          : 2.40:1
Frame rate mode                : Constant
Frame rate                    : 23.976 (24000/1001) FPS
Color space                    : YUV
Chroma subsampling            : 4:2:0 (Type 0)
Bit depth                      : 10 bits
Bits/(Pixel*Frame)            : 0.180
Stream size                    : 5.40 GiB
Title                          : ***- Wonka.2023.1080p.WEBRip.DDP5.1.x265.10bit-***
Writing library                : x265 3.5:[Linux][GCC 10.2.1][64 bit] 10bit
Encoding settings              : cpuid=1111039 / frame-threads=5 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=1920x802 / interlace=0 / total-frames=0 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=4 / no-allow-non-conformance / no-repeat-headers / annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=23 / keyint=250 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=48 / lookahead-slices=4 / scenecut=40 / hist-scenecut=0 / radl=0 / no-splice / no-intra-refresh / ctu=64 / min-cu-size=8 / rect / no-amp / max-tu-size=32 / tu-inter-depth=1 / tu-intra-depth=1 / limit-tu=0 / rdoq-level=2 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=5 / limit-refs=3 / limit-modes / me=3 / subme=3 / merange=57 / temporal-mvp / no-frame-dup / no-hme / weightp / no-weightb / no-analyze-src-pics / deblock=0:0 / sao / no-sao-non-deblock / rd=4 / selective-sao=4 / no-early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / no-b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=2.00 / psy-rdoq=1.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 / vbv-maxrate=4500 / vbv-bufsize=9000 / vbv-init=0.8 / min-vbv-fullness=50.0 / max-vbv-fullness=80.0 / crf-max=0.0 / crf-min=0.0 / ipratio=1.40 / pbratio=1.30 / aq-mode=3 / aq-strength=1.00 / 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=1023 / 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.01 / 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
Language                      : English
Default                        : Yes
Forced                        : No
Color range                    : Limited
Color primaries                : BT.709
Transfer characteristics      : BT.709
Matrix coefficients            : BT.709

Audio
ID                            : 2
Format                        : E-AC-3
Format/Info                    : Enhanced AC-3
Commercial name                : Dolby Digital Plus
Codec ID                      : A_EAC3
Duration                      : 1 h 56 min
Bit rate mode                  : Constant
Bit rate                      : 384 kb/s
Channel(s)                    : 6 channels
Channel layout                : L R C LFE Ls Rs
Sampling rate                  : 48.0 kHz
Frame rate                    : 31.250 FPS (1536 SPF)
Bit depth                      : 32 bits
Compression mode              : Lossy
Stream size                    : 638 MiB (28%)
Title                          : ***- Wonka.2023.1080p.WEBRip.DDP5.1.x265.10bit-***
Writing library                : Lavc60.14.101 eac3
Language                      : English
Service kind                  : Complete Main
Default                        : Yes
Forced                        : No

Text #1
ID                            : 3
Format                        : UTF-8
Codec ID                      : S_TEXT/UTF8
Codec ID/Info                  : UTF-8 Plain Text
Duration                      : 1 h 55 min
Bit rate                      : 81 b/s
Frame rate                    : 0.338 FPS
Count of elements              : 2348
Stream size                    : 68.8 KiB (0%)
Title                          : ***- Wonka.2023.1080p.WEBRip.DDP5.1.x265.10bit-***
Language                      : English
Default                        : Yes
Forced                        : No
[code]

Are there any logs for Exoplayer on my device that I can grab as well?

Cheers!


RE: HEVC Main10 will not transcode for Exoplayer - TheDreadPirate - 2024-01-26

I see the device profile in the debug log. No mention of HEVC 10-bit, but I haven't see a lot of device profile examples so I don't know what is normal.

When I get home I'll do some testing on my device that definitely supports HEVC 10-bit and report back.


RE: HEVC Main10 will not transcode for Exoplayer - evilfranky - 2024-01-27

Thanks mate, appreciate your time.


RE: HEVC Main10 will not transcode for Exoplayer - Revv23 - 2024-03-12

I just ran into this same issue on a Samsung a9+

Instead of transcode x265.10 just nulls out.

So I ended up getting findroid going and turning on MPV player and I think it's working as intended.

Weird edge case for sure.