@Joel.
I conducted some more experiments and made the following observations.
- As you know, Roku4 has two 4K configurations under Settings > Display type.
(a) 4K UHD TV (10-bit): In this mode, GetVideoMode returns 2160p30. Also call to CanPlay4K() prints "HDCP version too low". I didn't find a way to check current HDCP version so I called IsHdcpActive() with standard HDCP versions. I found that my Roku's HDCP version is 1.4.
(b) 4K UHD TV: In this mode, GetVideoMode() returns 2160p60. Also call to CanPlay4K() prints "HDCP 2.2 check passed: ".
- I have a 4K-UHD-10bit HDR @60fps HLS stream with HEVC video codec stored on a local server. I played this stream using "customvideoplayer" with both the display types.
(a) 4K UHD TV (10-bit): Video was played at 4K resolution but at around 30fps. Also, the video had tearing issues.
(b) 4K UHD TV: Video was played at 4K@60fps. But video quality was not good. It could be because I played 10-bit video in 8-bit configuration.
- I converted this 4K-UHD-10bit HDR @60fps HLS stream to MP4 and stored it on the same server. I played it using "customvideoplayer" with both the display types.
(a) 4K UHD TV (10-bit): Video was played @60fps but in a lower resolution. It appeared as if Roku was re-sizing a 1080p video for 4K display. I set Display Type to 1080p HD TV and played the same video. The video quality appeared to be the same.
(b) 4K UHD TV: Video was played at 4K@60fps. But video quality was not good. It could be because I played 10-bit video in 8-bit configuration.
- I copied the MP4 file to a pen-drive. I connected the pen-drive to the Roku and played this content using roku-media-player with both the display types. My observations in this experiment are same as MP4 playback using "customvideoplayer".
Based on the above observations, I have some questions.
- As per my understanding, HDCP is related to Hardware+Software media pipeline from media receiver to rendering. In observation#1, I am not able to understand how and why changing display type is affecting the HDCP version.
- From observation#2, #3 and #4, my conclusion is that, Roku supports 4K-10bit @30fps and 4K-8bit @60fps.
(a) Is this the case?
(b) If yes, are there any reasons for that?
(c) If 4K-10bit@60fps media is in MP4 format, Roku appears to be re-sizing video to 1080p and playing @60fps. If the media is in HLS format, it appears to be playing at same resolution and frame-rate and failing due to some limitations. Why is there a difference in behavior? Is Roku using different profiles/media engines for MP4 and HLS?
- I checked GetVideoMode() and found that there are some strings for 10-bit display (Ex: 2160p30b10, 2160p60b10). I don't understand why I am not getting this output even when I set Display type to 4K UHD TV (10-bit).
The following are my Roku4 specifications.
Model: 4400X - Roku 4
Software version: version 7.5.0 - build 4096-17
I am using Samsung flat smart TV.
Model Code: UA55KS7000
Please let me know if you need any other information.
Regards,
Mayur K