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

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

=== Other Extension Metadata

*Last Modified Date*::
    2020-01-22
*IP Status*::
    No known IP claims.
*Contributors*::
  - Ahmed Abdelkhalek, AMD
  - George Hao, AMD
  - Jake Beju, AMD
  - Chunbo Chen, Intel
  - Ping Liu, Intel
  - Srinath Kumarapuram, NVIDIA
  - Tony Zlatinski, NVIDIA

=== Description

This extension allows applications to compress a raw video sequence by using
the H.265/HEVC video compression standard.

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

=== Version History

 * Revision 0, 2019-11-14 (Ahmed Abdelkhalek)
   - Initial draft
 * Revision 0.5, 2020-02-13 (Tony Zlatinski)
   - General Spec cleanup
   - Added DPB structures
   - Change the VCL frame encode structure
   - Added a common Non-VCL Picture Paramarameters structure
 * Revision 2, Oct 10 2021 (Srinath Kumarapuram)
   - Vulkan Video Encode h.265 update and spec edits
