aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachiyo Sugimoto <sachiyo@google.com>2017-08-30 23:12:56 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-08-30 23:12:56 +0000
commita8f500867addb1a2c6dbc8f388a28b5eb5d16b57 (patch)
treeadcab9451543ef6177ecd94567c291bff40ffb3f
parent4984cdbc858ce71a92bedc5beb67c2d6f21e325f (diff)
parent2d5d1d40ff7b8bc92e015196c590bfb0974f4442 (diff)
downloadplatform_compatibility_cdd-a8f500867addb1a2c6dbc8f388a28b5eb5d16b57.tar.gz
platform_compatibility_cdd-a8f500867addb1a2c6dbc8f388a28b5eb5d16b57.tar.bz2
platform_compatibility_cdd-a8f500867addb1a2c6dbc8f388a28b5eb5d16b57.zip
Merge "Docs: Restructure Section 5.3" into oc-dev
-rw-r--r--5_multimedia/5_3_video-decoding.md256
1 files changed, 158 insertions, 98 deletions
diff --git a/5_multimedia/5_3_video-decoding.md b/5_multimedia/5_3_video-decoding.md
index d37fa1a1..255d5038 100644
--- a/5_multimedia/5_3_video-decoding.md
+++ b/5_multimedia/5_3_video-decoding.md
@@ -1,64 +1,103 @@
## 5.3\. Video Decoding
-<div class="note">
-Video codecs are optional for Android Watch device implementations.
-</div>
+Handheld device implementations:
-Device implementations&mdash;
+* [H-0-1] MUST support decoding of H.264 AVC.
+* [H-0-2] MUST support decoding of H.265 HEVC.
+* [H-0-3] MUST support decoding of MPEG-4 SP.
+* [H-0-4] MUST support decoding of VP8.
+* [H-0-5] MUST support decoding of VP9.
-* MUST support dynamic video resolution and frame rate switching through the
- standard Android APIs within the same stream for all VP8, VP9, H.264, and
- H.265 codecs in real time and up to the maximum resolution supported by each
- codec on the device.
+Television device implementations:
-* Implementations that support the Dolby Vision decoder&mdash;
- * MUST provide a Dolby Vision-capable extractor.
- * MUST properly display Dolby Vision content on the device screen or on a
- standard video output port (e.g., HDMI).
+* [T-0-1] MUST support decoding of H.264 AVC.
+* [T-0-2] MUST support decoding of H.265 HEVC.
+* [T-0-3] MUST support decoding of MPEG-4 SP.
+* [T-0-4] MUST support decoding of VP8.
+* [T-0-5] MUST support decoding of VP9.
+* [T-SR] Are Strongly Recommended to support MPEG-2 decoding.
-* Implementations that provide a Dolby Vision-capable extractor MUST set the
- track index of backward-compatible base-layer(s) (if present) to be the same
- as the combined Dolby Vision layer's track index.
+
+Automotive device implementations:
+
+* [A-0-1] MUST support decoding of H.264 AVC.
+* [A-0-2] MUST support decoding of MPEG-4 SP.
+* [A-0-3] MUST support decoding of VP8.
+* [A-0-4] MUST support decoding of VP9.
+* [A-SR] Are Strongly Recommended to support H.265 HEVC decoding.
+
+
+If device implementations support VP8, VP9, H.264, or H.265 codecs, they:
+
+* [C-1-1] MUST support dynamic video resolution and frame rate switching
+through the standard Android APIs within the same stream for all VP8, VP9,
+H.264, and H.265 codecs in real time and up to the maximum resolution supported
+by each codec on the device.
+
+If device implementations declare support for the Dolby Vision decoder through
+[`HDR_TYPE_DOLBY_VISION`](https://developer.android.com/reference/android/view/Display.HdrCapabilities.html#HDR_TYPE_DOLBY_VISION)
+, they:
+
+* [C-2-1] MUST provide a Dolby Vision-capable extractor.
+* [C-2-2] MUST properly display Dolby Vision content on the device screen or
+on a standard video output port (e.g., HDMI).
+* [C-2-3] MUST set the track index of backward-compatible base-layer(s) (if
+present) to be the same as the combined Dolby Vision layer's track index.
### 5.3.1\. MPEG-2
-Android device implementations with MPEG-2 decoders must support the Main
-Profile High Level.
+If device implementations support MPEG-2 decoders, they:
+
+* [C-1-1] MUST support the Main Profile High Level.
### 5.3.2\. H.263
-Android device implementations with H.263 decoders MUST support Baseline Profile
-Level 30 and Level 45.
+If device implementations support H.263 decoders, they:
+
+* [C-1-1] MUST support Baseline Profile Level 30 and Level 45.
### 5.3.3\. MPEG-4
-Android device implementations with MPEG-4 decoders MUST support Simple Profile
-Level 3.
+
+If device implementations with MPEG-4 decoders, they:
+
+* [C-1-1] MUST support Simple Profile Level 3.
### 5.3.4\. H.264
-Android device implementations with H.264 decoders:
+If device implementations support H.264 decoders, they:
-* MUST support Main Profile Level 3.1 and Baseline Profile.<br>
- Support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering)
- and RS (Redundant Slices) is OPTIONAL.
-* MUST be capable of decoding videos with the SD (Standard Definition)
- profiles listed in the following table and encoded with the Baseline Profile and
- Main Profile Level 3.1 (including 720p30).
+* [C-1-1] MUST support Main Profile Level 3.1 and Baseline Profile. Support
+for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering) and RS
+(Redundant Slices) is OPTIONAL.
+* [C-1-2] MUST be capable of decoding videos with the SD (Standard Definition)
+ profiles listed in the following table and encoded with the Baseline Profile
+ and Main Profile Level 3.1 (including 720p30).
* SHOULD be capable of decoding videos with the HD (High Definition) profiles
as indicated in the following table.
-* In addition, Android Television devices&mdash;
- * MUST support High Profile Level 4.2 and the HD 1080p60 decoding profile.
- * MUST be capable of decoding videos with both HD profiles as indicated
- in the following table and encoded with either the Baseline Profile, Main
- Profile, or the High Profile Level 4.2
+
+If the height that is reported by the `Display.getSupportedModes()` method is
+equal or greater than the video resolution, device implementations:
+
+* [C-2-1] MUST support the HD 720p video encoding profiles in the following
+table.
+* [C-2-2] MUST support the HD 1080p video encoding profiles in the following
+table.
+
+If Television device implementations support H.264 decoders, they:
+
+* [T-1-1] MUST support High Profile Level 4.2 and the HD 1080p (at 60 fps)
+decoding profile.
+* [T-1-2] MUST be capable of decoding videos with both HD profiles as
+indicated in the following table and encoded with either the Baseline Profile,
+Main Profile, or the High Profile Level 4.2
<table>
<tr>
<th></th>
<th>SD (Low quality)</th>
<th>SD (High quality)</th>
- <th>HD 720p<sup>1</sup></th>
- <th>HD 1080p<sup>1</sup></th>
+ <th>HD 720p</th>
+ <th>HD 1080p</th>
</tr>
<tr>
<th>Video resolution</th>
@@ -72,7 +111,7 @@ Android device implementations with H.264 decoders:
<td>30 fps</td>
<td>30 fps</td>
<td>60 fps</td>
- <td>30 fps (60 fps<sup>2</sup>)</td>
+ <td>30 fps (60 fps<sup>Television</sup>)</td>
</tr>
<tr>
<th>Video bitrate</th>
@@ -83,37 +122,42 @@ Android device implementations with H.264 decoders:
</tr>
</table>
+### 5.3.5\. H.265 (HEVC)
-<p class="table_footnote">1 REQUIRED for when the height as reported by the
-Display.getSupportedModes() method is equal or greater than the video resolution.</p>
+If device implementations support H.265 codec, they:
-<p class="table_footnote">2 REQUIRED for Android Television device
-implementations.</p>
+* [C-1-1] MUST support the Main Profile Level 3 Main tier and the SD video
+decoding profiles as indicated in the following table.
+* SHOULD support the HD decoding profiles as indicated in the following table.
+* [C-1-2] MUST support the HD decoding profiles as indicated in the following
+table if there is a hardware decoder.
-### 5.3.5\. H.265 (HEVC)
+If the height that is reported by the `Display.getSupportedModes()` method is
+equal to or greater than the video resolution, then:
-Android device implementations, when supporting H.265 codec as described in
-[section 5.1.3](#5_1_3_video_codecs):
+* [C-2-1] Device implementations MUST support at least one of H.265 or VP9
+decoding of 720, 1080 and UHD profiles.
-* MUST support the Main Profile Level 3 Main tier and the SD video decoding profiles
- as indicated in the following table.
-* SHOULD support the HD decoding profiles as indicated in the following table.
-* MUST support the HD decoding profiles as indicated in the following table
- if there is a hardware decoder.
-* In addition, for Android Television devices:
- * If the HD 1080p decoding profile is supported, it MUST support the Main Profile
- Level 4.1 Main tier.
- * If the UHD decoding profile is supported, the codec MUST support Main10 Level 5
- Main Tier profile.
+If Television device implementations support H.265 codec and the HD 1080p
+decoding profile, they:
+
+* [T-1-1] MUST support the Main Profile Level 4.1 Main tier.
+* [T-SR] STRONGLY RECOMMENDED to support 60 fps video frame rate
+for HD 1080p.
+
+If Television device implementations support H.265 codec and the UHD decoding
+profile, then:
+
+* [T-2-1] The codec MUST support Main10 Level 5 Main Tier profile.
<table>
<tr>
<th></th>
<th>SD (Low quality)</th>
<th>SD (High quality)</th>
- <th>HD 720p<sup>1</sup></th>
- <th>HD 1080p<sup>1</sup></th>
- <th>UHD<sup>1</sup></th>
+ <th>HD 720p</th>
+ <th>HD 1080p</th>
+ <th>UHD</th>
</tr>
<tr>
<th>Video resolution</th>
@@ -128,7 +172,7 @@ Android device implementations, when supporting H.265 codec as described in
<td>30 fps</td>
<td>30 fps</td>
<td>30 fps</td>
- <td>30 fps (60 fps<sup>2</sup>)</td>
+ <td>30/60 fps (60 fps<sup>Television with H.265 hardware decoding</sup>)</td>
<td>60 fps</td>
</tr>
<tr>
@@ -141,29 +185,42 @@ Android device implementations, when supporting H.265 codec as described in
</tr>
</table>
-<p class="table_footnote">1 REQUIRED at least one of H.265 or VP9 decoding of 720, 1080 and UHD
-profiles for when the height as reported by the `Display.getSupportedModes()`
-method is equal to or greater than the video resolution.</p>
-
-<p class="table_footnote">2 REQUIRED for Android Television device
-implementations with H.265 hardware decoding.</p>
-
### 5.3.6\. VP8
-Android device implementations, when supporting VP8 codec as described in
-[section 5.1.3](https://source.android.com/compatibility/android-cdd.html#5_1_3_video_codecs):
-* MUST support the SD decoding profiles in the following table.
+If device implementations support VP8 codec, they:
+
+* [C-1-1] MUST support the SD decoding profiles in the following table.
+* SHOULD use a hardware VP8 codec that meets the
+[requirements]("http://www.webmproject.org/hardware/rtc-coding-requirements/").
* SHOULD support the HD decoding profiles in the following table.
-* Android Television devices MUST support the HD 1080p60 decoding profile.
+
+
+If the height as reported by the `Display.getSupportedModes()` method is equal
+or greater than the video resolution, then:
+
+* [C-2-1] Device implementations MUST support 720p profiles in the
+following table.
+* [C-2-2] Device implementations MUST support 1080p profiles in the
+following table.
+
+If Television device implementations support VP8 codec, they:
+
+* [T-1-1] MUST support the HD 1080p60 decoding profile.
+
+If Television device implementations support VP8 codec and support 720p, they:
+
+* [T-2-1] MUST support the HD 720p60 decoding profile.
+
+
<table>
<tr>
<th></th>
<th>SD (Low quality)</th>
<th>SD (High quality)</th>
- <th>HD 720p<sup>1</sup></th>
- <th>HD 1080p<sup>1</sup></th>
+ <th>HD 720p</th>
+ <th>HD 1080p</th>
</tr>
<tr>
<th>Video resolution</th>
@@ -176,8 +233,8 @@ Android device implementations, when supporting VP8 codec as described in
<th>Video frame rate</th>
<td>30 fps</td>
<td>30 fps</td>
- <td>30 fps (60 fps<sup>2</sup>)</td>
- <td>30 (60 fps<sup>2</sup>)</td>
+ <td>30 fps (60 fps<sup>Television</sup>)</td>
+ <td>30 (60 fps<sup>Television</sup>)</td>
</tr>
<tr>
<th>Video bitrate</th>
@@ -188,34 +245,45 @@ Android device implementations, when supporting VP8 codec as described in
</tr>
</table>
-<p class="table_footnote">1 REQUIRED for when the height as reported by the
-Display.getSupportedModes() method is equal or greater than the video resolution.</p>
-
-<p class="table_footnote">2 REQUIRED for Android Television device
-implementations.</p>
### 5.3.7\. VP9
-Android device implementations, when supporting VP9 codec as described in
-[section 5.1.3](https://source.android.com/compatibility/android-cdd.html#5_1_3_video_codecs):
+If device implementations support VP9 codec, they:
-* MUST support the SD video decoding profiles as indicated in the following table.
+* [C-1-1] MUST support the SD video decoding profiles as indicated in the
+following table.
* SHOULD support the HD decoding profiles as indicated in the following table.
-* MUST support the HD decoding profiles as indicated in the following table,
- if there is a hardware decoder.
-* In addition, for Android Television devices:
- * If the UHD video decoding profile is supported, it MUST support 8-bit color
- depth and SHOULD support VP9 Profile 2 (10-bit).
+If device implementations support VP9 codec and a hardware decoder:
+
+* [C-2-2] MUST support the HD decoding profiles as indicated in the following
+table.
+
+If the height that is reported by the `Display.getSupportedModes()` method is
+equal to or greater than the video resolution, then:
+
+* [C-3-1] Device implementations MUST support at least one of VP9 or H.265
+decoding of the 720, 1080 and UHD profiles.
+
+If Television device implementations support VP9 codec and the UHD video
+decoding, they:
+
+* [T-1-1] MUST support 8-bit color depth and SHOULD support VP9 Profile 2
+(10-bit).
+
+If Television device implementations support VP9 codec, the 1080p profile and
+VP9 hardware decoding, they:
+
+* [T-2-1] MUST support 60 fps for 1080p.
<table>
<tr>
<th></th>
<th>SD (Low quality)</th>
<th>SD (High quality)</th>
- <th>HD 720p<sup>1</sup></th>
- <th>HD 1080p<sup>1</sup></th>
- <th>UHD<sup>1</sup></th>
+ <th>HD 720p</th>
+ <th>HD 1080p</th>
+ <th>UHD</th>
</tr>
<tr>
<th>Video resolution</th>
@@ -230,7 +298,7 @@ Android device implementations, when supporting VP9 codec as described in
<td>30 fps</td>
<td>30 fps</td>
<td>30 fps</td>
- <td>30 fps (60 fps<sup>2</sup>)</td>
+ <td>30 fps (60 fps<sup>Television with VP9 hardware decoding</sup>)</td>
<td>60 fps</td>
</tr>
<tr>
@@ -241,12 +309,4 @@ Android device implementations, when supporting VP9 codec as described in
<td>5 Mbps</td>
<td>20 Mbps</td>
</tr>
-</table>
-
-<p class="table_footnote">1 REQUIRED at least one of VP9 or H.265 decoding of the 720, 1080 and UHD
-profiles for when the height as reported by the `Display.getSupportedModes()`
-method is equal to or greater than the video resolution.</p>
-
-
-<p class="table_footnote">2 REQUIRED for Android Television
-device implementations with VP9 hardware decoding.</p>
+</table> \ No newline at end of file