Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/REFERENCES/brightscript/interfaces/ifdeviceinfo.md
Original file line number Diff line number Diff line change
Expand Up @@ -1078,7 +1078,7 @@ An associative array that includes a flag indicating whether the video format ca

If the Roku Player cannot play that video format, it will return false, and return the closest video format it can play, with the changed fields, such as:

`{"codec":["hevc","mpeg1","mpeg2","h263","mpeg4 avc","vp9"],"result":false,"updated":"codec"}`
`{"codec":["hevc","mpeg1","mpeg2","h263","mpeg4 avc"],"result":false,"updated":"codec"}`

The return value shows the Roku Player cannot play requested video format, shows the updated keys of the requested video format (level and profile) that it can support, and the all the key values of the requested video format supported by the Roku Player.

Expand Down
2 changes: 1 addition & 1 deletion docs/REFERENCES/brightscript/interfaces/ifvideoplayer.md
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ An roArray, where each element in the array represents a single audio track that
<tr>
<td>Format</td>
<td>String</td>
<td>Contains the format of the currently playing video stream.<br /><br /><table><thead><tr><th>Value</th><th>Meaning</th></tr></thead><tbody><tr><td>""</td><td>No stream playing</td></tr><tr><td>none</td><td>Stream contains no playable video</td></tr><tr><td>unknown</td><td>Stream contains unknown video</td></tr><tr><td>hevc</td><td>ISO/IEC 23008-2, H.265, HEVC</td></tr><tr><td>hevc_b</td><td>ISO/IEC 23008-2 Annex-B, H.265, HEVC</td></tr><tr><td>mpeg1</td><td>ISO/IEC 11172-2, MPEG-1 part 2, H.261</td></tr><tr><td>mpeg2</td><td>ISO/IEC 13818-2, MPEG-2 part 2, H.262</td></tr><tr><td>mpeg4_2</td><td>ISO/IEC 14496-2, MPEG-4 part 2, H.263</td></tr><tr><td>mpeg4_10b</td><td>ISO/IEC 14496-10, MPEG-4 part 10 Annex-B, H.264, vc-1</td></tr><tr><td>mpeg4_15</td><td>ISO/IEC 14496-15, MPEG-4 part 15, H.264, vc-1</td></tr><tr><td>AVC vc1</td><td>vc-1</td></tr><tr><td>wmv</td><td>Microsoft Windows Media Video</td></tr><tr><td>vp8</td><td>VP8 codec</td></tr><tr><td>vp9</td><td>VP9 codec</td></tr></tbody></table></td>
<td>Contains the format of the currently playing video stream.<br /><br /><table><thead><tr><th>Value</th><th>Meaning</th></tr></thead><tbody><tr><td>""</td><td>No stream playing</td></tr><tr><td>none</td><td>Stream contains no playable video</td></tr><tr><td>unknown</td><td>Stream contains unknown video</td></tr><tr><td>hevc</td><td>ISO/IEC 23008-2, H.265, HEVC</td></tr><tr><td>hevc_b</td><td>ISO/IEC 23008-2 Annex-B, H.265, HEVC</td></tr><tr><td>mpeg1</td><td>ISO/IEC 11172-2, MPEG-1 part 2, H.261</td></tr><tr><td>mpeg2</td><td>ISO/IEC 13818-2, MPEG-2 part 2, H.262</td></tr><tr><td>mpeg4_2</td><td>ISO/IEC 14496-2, MPEG-4 part 2, H.263</td></tr><tr><td>mpeg4_10b</td><td>ISO/IEC 14496-10, MPEG-4 part 10 Annex-B, H.264, vc-1</td></tr><tr><td>mpeg4_15</td><td>ISO/IEC 14496-15, MPEG-4 part 15, H.264, vc-1</td></tr><tr><td>AVC vc1</td><td>vc-1</td></tr><tr><td>wmv</td><td>Microsoft Windows Media Video</td></tr></tbody></table></td>
</tr>
<tr>
<td>HasAccessibi;ityDescription</td>
Expand Down
2 changes: 1 addition & 1 deletion docs/REFERENCES/scenegraph/media-playback-nodes/video.md
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ The `control` field includes a `prebuffer` option, which allows the video to beg
<td />

<td>READ\_ONLY</td>
<td>Contains the format of the currently playing video stream.<br /><br /><table><thead><tr><th>Value</th><th>Meaning</th></tr></thead><tbody><tr><td>""</td><td>No stream playing</td></tr><tr><td>none</td><td>Stream contains no playable video</td></tr><tr><td>unknown</td><td>Stream contains unknown video</td></tr><tr><td>hevc</td><td>ISO/IEC 23008-2, H.265, HEVC</td></tr><tr><td>hevc\_b</td><td>ISO/IEC 23008-2 Annex-B, H.265, HEVC</td></tr><tr><td>mpeg1</td><td>ISO/IEC 11172-2, MPEG-1 part 2, H.261</td></tr><tr><td>mpeg2</td><td>ISO/IEC 13818-2, MPEG-2 part 2, H.262</td></tr><tr><td>mpeg4\_2</td><td>ISO/IEC 14496-2, MPEG-4 part 2, H.263</td></tr><tr><td>mpeg4\_10b</td><td>ISO/IEC 14496-10, MPEG-4 part 10 Annex-B, H.264, vc-1</td></tr><tr><td>mpeg4\_15</td><td>ISO/IEC 14496-15, MPEG-4 part 15, H.264, vc-1</td></tr><tr><td>AVC vc1</td><td>vc-1</td></tr><tr><td>wmv</td><td>Microsoft Windows Media Video</td></tr><tr><td>vp8</td><td>VP8 codec</td></tr><tr><td>vp9</td><td>VP9 codec</td></tr></tbody></table></td>
<td>Contains the format of the currently playing video stream.<br /><br /><table><thead><tr><th>Value</th><th>Meaning</th></tr></thead><tbody><tr><td>""</td><td>No stream playing</td></tr><tr><td>none</td><td>Stream contains no playable video</td></tr><tr><td>unknown</td><td>Stream contains unknown video</td></tr><tr><td>hevc</td><td>ISO/IEC 23008-2, H.265, HEVC</td></tr><tr><td>hevc\_b</td><td>ISO/IEC 23008-2 Annex-B, H.265, HEVC</td></tr><tr><td>mpeg1</td><td>ISO/IEC 11172-2, MPEG-1 part 2, H.261</td></tr><tr><td>mpeg2</td><td>ISO/IEC 13818-2, MPEG-2 part 2, H.262</td></tr><tr><td>mpeg4\_2</td><td>ISO/IEC 14496-2, MPEG-4 part 2, H.263</td></tr><tr><td>mpeg4\_10b</td><td>ISO/IEC 14496-10, MPEG-4 part 10 Annex-B, H.264, vc-1</td></tr><tr><td>mpeg4\_15</td><td>ISO/IEC 14496-15, MPEG-4 part 15, H.264, vc-1</td></tr><tr><td>AVC vc1</td><td>vc-1</td></tr><tr><td>wmv</td><td>Microsoft Windows Media Video</td></tr></tbody></table></td>
</tr>
<tr>
<td>pauseBufferStart</td>
Expand Down
49 changes: 16 additions & 33 deletions docs/SPECIFICATIONS/media/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Roku devices support several audio/video container formats. These formats encaps
- supported video codecs: AVC, HEVC
- supported audio codecs: AAC, AC3, EAC3, AC4, ALAC, MP3, PCM
- MKV, WebM
- supported video codecs: AVC, HEVC, VP9
- supported video codecs: AVC, HEVC
- supported audio codecs: AAC, AC3, EAC3, Dolby Atmos, ALAC, DTS, DTSE, FLAC, MP3, OPUS, PCM, VORBIS

**Additional Notes:**
Expand Down Expand Up @@ -69,7 +69,7 @@ Roku supports the following widely-used standard formats for adaptive bit rate s
<tr>
<th scope="row">Video Codecs</th>
<td>AVC, HEVC</td>
<td>AVC, HEVC, VP9</td>
<td>AVC, HEVC</td>
<td>AVC, HEVC</td>
</tr>
<tr>
Expand Down Expand Up @@ -129,24 +129,20 @@ For trickplay of live streams, apps should seek to a position of 999,999 seconds

## Supported video codecs

Videos can be encoded using `H.264`, `HEVC (H.265)`, `VP9`, or `AV1` (DASH only) codecs.


Videos can be encoded using `H.264`, `HEVC (H.265)`, or `AV1` (DASH only) codecs.

<table>
<thead>
<tr>
<th></th>
<th scope="col">AVC (H.264)</th>
<th scope="col">HEVC (H.265)[^1]</th>
<th scope="col">VP9[^2]</th>
<th scope="col">HEVC (H.265)<sup>1</sup></th>
<th scope="col">AV1 (DASH only)</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Aspect Ratio 2[^3]</th>
<td>Various</td>
<th scope="row">Aspect Ratio<sup>2</sup></th>
<td>Various</td>
<td>Various</td>
<td></td>
Expand All @@ -155,61 +151,52 @@ Videos can be encoded using `H.264`, `HEVC (H.265)`, `VP9`, or `AV1` (DASH only)
<th scope="row">Dimension</th>
<td>Various up to 1920x1080</td>
<td>Various up to 3840x2160</td>
<td>Various up to 3840x2160</td>
<td>Various up to 7680 x 4320</td>
</tr>
<tr>
<th scope="row">Input Frame Rate[^4]</th>
<th scope="row">Input Frame Rate<sup>3</sup></th>
<td>24p, 25p, 30p, 50p, 60p</td>
<td>24p, 25p, 30p, 50p, 60p</td>
<td>24p, 25p, 30p, 60p[^6]</td>
<td>24p,25p,30p,50p,60p</td>
</tr>
<tr>
<th scope="row">Color Space</th>
<td>Rec.709</td>
<td>Rec.709, Rec.2020</td>
<td>Rec.709, Rec.2020</td>
<td>Rec.709, Rec.2020</td>
</tr>
<tr>
<th scope="row">Profile</th>
<td>main, high</td>
<td>main, main 10</td>
<td>profile 0, profile 2</td>
<td>main, main 10</td>
</tr>
<tr>
<th scope="row">Level</th>
<td>4.1, 4.2</td>
<td>4.1, 5.0, 5.1</td>
<td></td>
<td>4.1, 5.0, 5.1</td>
</tr>
<tr>
<th scope="row">Video Mode</th>
<td>Constrained VBR</td>
<td>Constrained VBR</td>
<td>Constrained VBR</td>
<td>Constrained VBR</td>
</tr>
<tr>
<th scope="row">Video Bitrate</th>
<td>Up to 10Mbps</td>
<td>Up to 40Mbps</td>
<td>Up to 40Mbps</td>
<td>Up to 40Mbps</td>
</tr>
<tr>
<th scope="row">Peak Video Bit rate</th>
<td>1.5x average</td>
<td>1.5x average</td>
<td>1.5x average</td>
<td>1.5x average</td>
</tr>
<tr>
<th scope="row">Key Frame Interval [^5]</th>
<td>&lt; 10s</td>
<th scope="row">Key Frame Interval<sup>3</sup></th>
<td>&lt; 10s</td>
<td>&lt; 10s</td>
<td>&lt; 10s</td>
Expand All @@ -218,7 +205,6 @@ Videos can be encoded using `H.264`, `HEVC (H.265)`, `VP9`, or `AV1` (DASH only)
<th scope="row">HDR support</th>
<td>Dolby Vision: dvav.09</td>
<td>Dolby Vision: dvhe.05<br />HDR10 (HEVC profile Main 10)<br />HLG</td>
<td>HDR10</td>
<td>Dolby Vision<br />HDR10 <br />HDR10+</td>
</tr>
</tbody>
Expand All @@ -227,12 +213,11 @@ Videos can be encoded using `H.264`, `HEVC (H.265)`, `VP9`, or `AV1` (DASH only)

Some decoder and security features are device specific. For details, see [Roku Models and Features](doc:hardware).

[^1]: Only supported on **Roku 4K capable** devices.
[^2]: Only supported on **Roku 4K capable** devices.
[^3]: The dimensions vary on a title-by-title basis depending on the source material and the target aspect ratio for the encoding (such as 4:3 or 16:9). Content should always be encoded at full width, and the height is adjusted. For example, a 1.66 aspect ratio source is encoded as a 720x432 video and displayed as letterboxed for a 4:3 display.
[^4]: All segments should start with an IDR frame and align across all bit rate variants. The recommended segment size is < 10 seconds for VOD and < 5 seconds for live content, and the segment size should be constant.
[^5]: All segments should start with an IDR frame and align across all bit rate variants. The recommended segment size is < 10 seconds for VOD and < 5 seconds for live content, and the segment size should be constant.
[^6]: Only supported on HDR10 capable Roku devices.
<ol>
<li>Only supported on <strong>Roku 4K capable</strong> devices.</li>
<li>The dimensions vary on a title-by-title basis depending on the source material and the target aspect ratio for the encoding (such as 4:3 or 16:9). Content should always be encoded at full width, and the height is adjusted. For example, a 1.66 aspect ratio source is encoded as a 720x432 video and displayed as letterboxed for a 4:3 display.</li>
<li>All segments should start with an IDR frame and align across all bit rate variants. The recommended segment size is &lt; 10 seconds for VOD and &lt; 5 seconds for live content, and the segment size should be constant.</li>
</ol>

## Supported audio codecs

Expand Down Expand Up @@ -374,13 +359,11 @@ function CanPlay4K() as Boolean
return false 'HDCP version is not 2.2
end if

' Check if the Roku player can decode 4K 60fps HEVC streams or 4K 30fps vp9 streams
' Check if the Roku player can decode 4K 60fps HEVC streams
hevc_video = { Codec: "hevc", Profile: "main", Level: "5.1" }
vp9_video = { Codec: "vp9", Profile: "profile 0" }
can_decode_hevc = dev_info.CanDecodeVideo(hevc_video)
can_decode_vp9 = dev_info.CanDecodeVideo(vp9_video)
if can_decode_hevc.result <> true OR can_decode_vp9.result <> true
return false 'device cannot decode 4K HEVC AND VP9 streams
if can_decode_hevc.result <> true
return false 'device cannot decode 4K HEVC streams
end if

' (Optional) Check if the Roku player decrypts inside a TEE
Expand All @@ -393,7 +376,7 @@ function CanPlay4K() as Boolean
end function
```

> This example returns true only if both 4K HEVC and 4K VP9 decoding is supported. If your 4K UHD content is only encoded in one of these codecs, modify the third conditional statement as necessary.
> This example returns true only if 4K HEVC decoding is supported. If your 4K UHD content is only encoded in one of these codecs, modify the third conditional statement as necessary.

### HDR10 video streaming requirements

Expand Down
Loading