Merge "Docs: Restructure Section 5.3" into oc-dev
diff --git a/5_multimedia/5_3_video-decoding.md b/5_multimedia/5_3_video-decoding.md
index d37fa1a..255d503 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 @@
     <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 @@
  </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.5\. H.265 (HEVC)
 
-Android device implementations, when supporting H.265 codec as described in
-[section 5.1.3](#5_1_3_video_codecs):
+If device implementations support H.265 codec, they:
 
-*   MUST support the Main Profile Level 3 Main tier and the SD video decoding profiles
-    as indicated in the following table.
+*   [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.
-*   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.
+*   [C-1-2] MUST support the HD decoding profiles as indicated in the following
+table if there is a hardware decoder.
+
+If the height that is reported by the `Display.getSupportedModes()` method is
+equal to or greater than the video resolution, then:
+
+*   [C-2-1] Device implementations MUST support at least one of H.265 or VP9
+decoding of 720, 1080 and UHD profiles.
+
+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 @@
     <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 @@
  </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 @@
     <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 @@
  </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 @@
     <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 @@
     <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