// Copyright (c) 2018-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_video_decode_h264.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2021-03-29
*IP Status*::
    No known IP claims.
*Contributors*::
  - Chunbo Chen, Intel
  - HoHin Lau, AMD
  - Jake Beju, AMD
  - Peter Fang, AMD
  - Ping Liu, Intel
  - Srinath Kumarapuram, NVIDIA
  - Tony Zlatinski, NVIDIA

include::{generated}/interfaces/VK_EXT_video_decode_h264.txt[]

=== Version History

  * Revision 1, 2018-6-11 (Peter Fang)
    - Initial draft
  * Revision 2, March 29 2021 (Tony Zlatinski)
    - Spec and API Updates
  * Revision 3, August 1 2021 (Srinath Kumarapuram)
    - Rename `VkVideoDecodeH264FieldLayoutFlagsEXT` to
     `VkVideoDecodeH264PictureLayoutFlagsEXT`,
     `VkVideoDecodeH264FieldLayoutFlagBitsEXT` to
     `VkVideoDecodeH264PictureLayoutFlagBitsEXT` (along with the names of
     enumerants it defines), and `VkVideoDecodeH264ProfileEXT.fieldLayout`
     to `VkVideoDecodeH264ProfileEXT.pictureLayout`, following Vulkan naming
     conventions.
