Title: Plex Media Server for NVIDIA Shield does not transcode HEVC Main 10 profile content properly
When transcoding content for devices which do not support HEVC/H.265 natively, Plex Media Server for Shield successfully transcodes HEVC Main profile (8-bit) content for the end device, but does not transcode 10-bit HEVC Main 10 profile content successfully. Transcoded HEVC Main 10 content is displayed on the end device as unintelligible, heavily distorted, green-tinged, with visible artifacts covering the entire display. The Shield Plex client successfully direct plays both HEVC Main and HEVC Main 10 content.
Server version: 0.9.17.1 on NVIDIA Shield 3.2(188.8.131.52) 'Experience Upgrade 3.2'
App Version (Direct play): Plex for Android version 184.108.40.206 on NVIDIA Shield
App Version (Transcode): Plex for iOS version 4.2 on Apple iPhone 6S Plus
App Version (Direct play/transcode): Plex Media Player for Mac version 1.1.1 on OS X 10.11.6 'El Capitan'
Steps to reproduce:
- Download HEVC sample files: a. HEVC Main profile: jell.yfish.us/media/jellyfish-3-mbps-hd-hevc.mkv b. HEVC Main 10 profile: jell.yfish.us/media/jellyfish-3-mbps-hd-hevc-10bit.mkv
- Create 'Test' Home Movies library on PMS if required, add folder containing HEVC sample files, refresh library.
- From NVIDIA Shield Plex client, navigate to Test library, direct play both HEVC Main and HEVC Main 10 sample files, note results.
- From iOS Plex mobile client (or client on other non-HEVC native decode platform), navigate to Test library, play both HEVC Main and HEVC Main 10 sample files, note results.
- From Plex Media Player desktop client, navigate to Test library, and, assuming platform is able to decode HEVC natively: a. Direct play both HEVC Main and HEVC Main 10 sample files, note results. b. Play both files again, but while playing click 'Settings' > 'Quality' > Change to setting other than 'Original' to force transcoding. Note results.
Expected: All tests should successfully display the test files, regardless of end device.
Representative screenshot of transcoded HEVC Main profile video on iOS client:
Actual: Results are as follows:
From Step 3 above: NVIDIA Shield Plex app successfully direct plays both HEVC test files.
From Step 4 above: iOS Plex app displays transcoded HEVC Main profile test file successfully, but transcoded HEVC Main 10 profile test file displays unintelligible video.
From Step 5a above: Plex Media Player client successfully direct plays both HEVC test files.
From Step 5b above: When transcoding is forced by selecting an alternate quality setting, Plex Media Player client displays transcoded HEVC Main profile test file successfully, but transcoded HEVC Main 10 profile test file displays unintelligible video.
Representative screenshot of transcoded HEVC Main 10 profile video on iOS client:
The logs show a transcode attempt of the HEVC Main 10 profile test file by the iOS Plex client, followed by a direct play of the same file on the NVIDIA Shield Plex client.
Comment: I assume PMS also uses ffmpeg to generate the video thumbnails to display in the Plex clients? If so, the decode portion appears to be working OK, as the thumbnails appear normal for both test files. Perhaps the problem is in passing the decoded HEVC video to the ffmpeg re-encoder job incorrectly?