PMS 1.18.1.1966 on QNAP 451+ doesn't hw decode any HEVC - compatibility list says it works

Server# PMS-1.18.1.1966 on QNAP TS-451+ x64 Intel Celeron J1900, QTS-4.3.6-1070
Player# PMP-2.44.0.1018 on Core-i5 iMac 10.13 High Sierra x64

The NAS compatibility list shows that the TS-451+ can hardware decode 8bit HEVC at 4K resolution, but when I test that, it doesn’t hardware decode any HEVC Jellyfish at all.

I tested by transcoding 1080p HEVC videos on the fly to a lower resolution and bitrate. It worked fine for the h264 Jellyfish. I also tested with a combination of TV Shows, Films, and KODI demos.

H264-H264 transcodes work great, hw decode => hw encode, full pipeline.
HEVC-H264 transcodes do not, sw decode => hw encode

I rebooted today and played one h264 and three HEVCs.

What I saw in the logs for the HEVCs:

No support for codec hevc profile 1 or 2.
in "Plex Media Server.log"

Oct 16, 2019 11:10:10.354 [0x7fa273a23700] DEBUG - Starting a transcode session xaahaumr55pu5dih2ajj1yvi at offset -1.0 (state=3)
Oct 16, 2019 11:10:10.355 [0x7fa273a23700] DEBUG - TPU: hardware transcoding: using hardware decode accelerator vaapi
Oct 16, 2019 11:10:10.355 [0x7fa273a23700] DEBUG - [Universal] Using local file path instead of URL: /share/Video/TV/Demo Video/Season 02/Demo Video - s02e03 - Jellyfish.2K.15Mbps.8bit.SDR.29.97.NoAudio.HEVC.mkv
Oct 16, 2019 11:10:10.355 [0x7fa273a23700] DEBUG - TPU: hardware transcoding: zero-copy support present
Oct 16, 2019 11:10:10.355 [0x7fa273a23700] DEBUG - TPU: hardware transcoding: using zero-copy transcoding
Oct 16, 2019 11:10:10.355 [0x7fa273a23700] DEBUG - Codecs: hardware transcoding: testing API vaapi
Oct 16, 2019 11:10:10.356 [0x7fa273a23700] ERROR - [FFMPEG] - libva: /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/lib/dri/iHD_drv_video.so init failed
Oct 16, 2019 11:10:10.356 [0x7fa273a23700] ERROR - [FFMPEG] - Failed to initialise VAAPI connection: 1 (operation failed).
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x32315659 -> yuv420p.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x30323449 -> yuv420p.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x3231564e -> nv12.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x32595559 -> yuyv422.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x59565955 -> uyvy422.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x48323234 -> yuv422p.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x58424752 -> rgb0.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x58524742 -> bgr0.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Format 0x30313050 -> p010le.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Created surface 0x4000000.
Oct 16, 2019 11:10:10.357 [0x7fa273a23700] DEBUG - [FFMPEG] - Direct mapping possible.
Oct 16, 2019 11:10:10.358 [0x7fa273a23700] DEBUG - TPU: hardware transcoding: final decoder: vaapi, final encoder: vaapi
Oct 16, 2019 11:10:10.358 [0x7fa273a23700] DEBUG - Job running: EAE_ROOT='/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/Library/tmp/pms-7c7f5bbd-2abe-4f86-8d2a-acc2062e795c/EasyAudioEncoder' FFMPEG_EXTERNAL_LIBS='/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/Library/Plex\ Media\ Server/Codecs/395e79c-2728-linux-x86_64/' XDG_CACHE_HOME='/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/Library/Plex Media Server/Cache' XDG_DATA_HOME='/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/Resources' X_PLEX_TOKEN='xxxxxxxxxxxxxxxxxxxx' '/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/Plex Transcoder' '-codec:0' 'hevc' '-hwaccel:0' 'vaapi' '-hwaccel_fallback_threshold:0' '10' '-hwaccel_output_format:0' 'vaapi' '-ss' '1' '-analyzeduration' '20000000' '-probesize' '20000000' '-i' '/share/Video/TV/Demo Video/Season 02/Demo Video - s02e03 - Jellyfish.2K.15Mbps.8bit.SDR.29.97.NoAudio.HEVC.mkv' '-filter_complex' '[0:0]hwupload[0];[0]scale_vaapi=w=1280:h=720:format=nv12[1];[1]hwupload[2]' '-map' '[2]' '-codec:0' 'h264_vaapi' '-b:0' '2855k' '-maxrate:0' '3807k' '-bufsize:0' '7614k' '-r:0' '29.969999999999999' '-f' 'segment' '-segment_format' 'matroska' '-segment_format_options' 'live=1' '-segment_time' '1' '-segment_header_filename' 'header' '-segment_start_number' '0' '-segment_list' 'http://127.0.0.1:32400/video/:/transcode/session/xaahaumr55pu5dih2ajj1yvi/0aa3547d-98e8-42b4-af15-e02dbfae1509/seglist' '-segment_list_type' 'csv' '-segment_list_unfinished' '1' '-segment_list_size' '5' '-segment_list_separate_stream_times' '1' '-avoid_negative_ts' 'disabled' '-map_metadata:g' '-1' '-map_metadata:c' '-1' '-map_chapters' '-1' 'chunk-%05d' '-start_at_zero' '-copyts' '-y' '-init_hw_device' 'vaapi=vaapi:,driver=i965,kernel_driver=i915' '-hwaccel_device' 'vaapi' '-filter_hw_device' 'vaapi' '-nostats' '-loglevel' 'quiet' '-loglevel_plex' 'error' '-progressurl' 'http://127.0.0.1:32400/video/:/transcode/session/xaahaumr55pu5dih2ajj1yvi/0aa3547d-98e8-42b4-af15-e02dbfae1509/progress'
…
Oct 16, 2019 11:10:10.387 [0x7fa273a23700] DEBUG - Started session successfully: xaahaumr55pu5dih2ajj1yvi
Oct 16, 2019 11:10:10.387 [0x7fa280992700] DEBUG - Completed: [127.0.0.1:36934] 204 PUT /video/:/transcode/session/xaahaumr55pu5dih2ajj1yvi/0aa3547d-98e8-42b4-af15-e02dbfae1509/progress?duration=30.097000 (9 live) 0ms 203 bytes (pipelined: 7) (range: bytes=0-)
Oct 16, 2019 11:10:10.389 [0x7fa272b7d700] ERROR - [Transcoder] [hevc @ 0xd49c00] No support for codec hevc profile 1.
Oct 16, 2019 11:10:10.391 [0x7fa273447700] ERROR - [Transcoder] [hevc @ 0xd49c00] Failed setup for format vaapi_vld: hwaccel initialisation returned error.

What I expected to see:

Now Playing on the J1900

hw hw hw hw

Steps to reproduce:

  • Install PMS on an older QNAP.
  • use any 8-bit HEVC Jellyfish. I tested ones 20 Mbps and lower.
  • Play one and pause it. Choose Playback Settings while paused.
  • Select a lower quality, like Convert to 720p(High) 4 Mbps
  • Observe the lack of HW decode, but the smooth fallback to SW.

Here are the logs:
Plex Media Server Logs_2019-10-16_11-13-34.zip (95.3 KB)
Plex Media Player.log.zip (25.7 KB)

And a timeline of my tests
11:00:00 am restarted PMS
11:06:00 am analyzed the HEVCs
11:08:00 am start playing 1080p h264 in Direct Play.
11:08:30 am start playing 1080p h264 Convert to 720p h264
11:10:00 am start playing 15 Mbps 8bit HEVC in DP.
11:10:30 am start playing 15 Mbps 8bit HEVC Convert to 720p h264.
11:11:00 am start playing 20 Mbps 8bit HEVC in DP.
11:11:30 am start playing 20 Mbps 8bit HEVC Convert to 720p h264.
11:12:00 pm start playing 20 Mbps 10bit HEVC in DP.
11:12:30 am start playing 20 Mbps 10bit HEVC Convert to 720p h264.

Mea culpa:

  1. I shouldn’t be transcoding I know, but I’m just testing the beta.
  2. Experimenting on grandpa’s NAS isn’t the best idea, but I trusted the Compatibility list.
  3. If it says “No support for hevc profile 1” that’s the CPU saying it’s not Plex’s fault. :man_shrugging:
  4. I noticed this months ago but thought that Main10 was the culprit.

Okay, thanks for reading!

The fault is mine. I will take the hit for this one.

The J1900 will not support HEVC but will support H.264

Updated the NAS guide to reflect the additional specifications now

May I have some feedback on the NAS Compatibility Guide?

I added a column and made new field labels.

Does this now provide the missing details?

Thank your for the changes. It’s nice to read 4K HDR, but after staring at this for a couple months, my suggestions would be to omit SDR/HDR/4K labels, and use columns similar to this:

	SD			 HD		 HD		UHD H.264	 UHD HEVC		 UHD HEVC	
480p / 576p		720p	1080p	  2160p		8-bit 2160p		10-bit 2160p

My thinking -

  • H.264 only comes in 8-bit. Stating that in a column header can be omitted
  • A column header containing the words 4K UHD 2160 is repeating itself a bit.
  • UHD is the standard for videos up to 4096x2160p, but 4K is a colloquial term for 3840x2160p.
  • a couple of cell tooltips could be fixed or removed (like the one on my 451+ line).
  • The limiting factor between hardware decoding abilities for UHD HEVC isn’t color gamut, and as such SDR and HDR can be omitted. (It’s valid to have a UHD HEVC 10bit SDR)
  • The hw decoding distinction for UHD HEVC is more about 8-bit vs 10-bit or (Main vs Main10 profiles).
  • The UHD HEVC 10-bit column specifies the test was done against a 60 Mbps file. A HEVC with that bitrate could be a main10@L5.2@main, but it could come in a main10@L5.0@high encode. It’s not clear to me whether people are testing the High tier nor if tier is significant to decoding capabilities.

See also:

Thanks for this, I’ve been waiting.

As FYI, there is no UHD H.264 specification. There is 10-bit ( bt709 ) in the specification but UHD is, by definition, bt2020.

Let me look a bit closer.

I just cleaned that up a bit. Thoughts?
The notes will need to be updated but the first few in the H.264 - 2160p column have been updated.

H.264      - 2160p - bt709  colorspace 
H.265/HEVC - 2160p - bt709  colorspace / Main    (e.g. Intel SkyLake processors)
H.265/HEVC - 2160p - bt2020 colorspace / Main 10 (e.g  ApolloLake, KabyLake, and above)

I like it. You’ve made it better. I can find all the data about 8-bit, 10-bit, and more about colorspace. Thanks. I’ll read more about the UHD terminology too.

The names changed mid-standard which makes it more confusing.

I will now complete updating the labels in the 2160p H.264 column.

These two pages are helping me. Are the ITU-R Recommendations the fundamental international TV standard?


Because of what the chips can do at this point: BT-709 and BT-2020 (aka BT-2020NC) are the two which are of importance.

The newer spec “12 bit” as well as “8K” isn’t going to come into play for quite some time. There is no content being produced at this resolution yet. Masters aren’t even recorded at this level yet.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.