Path: blob/21.2-virgl/include/vk_video/vulkan_video_codec_h264std_decode.h
4558 views
/*1** Copyright (c) 2019-2020 The Khronos Group Inc.2**3** SPDX-License-Identifier: Apache-2.04*/56#ifndef VULKAN_VIDEO_CODEC_H264STD_DECODE_H_7#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 189#ifdef __cplusplus10extern "C" {11#endif1213#include "vk_video/vulkan_video_codec_h264std.h"1415// *************************************************16// Video H.264 Decode related parameters:17// *************************************************1819typedef struct StdVideoDecodeH264PictureInfoFlags {20uint32_t field_pic_flag:1; // Is field picture21uint32_t is_intra:1; // Is intra picture22uint32_t bottom_field_flag:1; // bottom (true) or top (false) field if field_pic_flag is set.23uint32_t is_reference:1; // This only applies to picture info, and not to the DPB lists.24uint32_t complementary_field_pair:1; // complementary field pair, complementary non-reference field pair, complementary reference field pair25} StdVideoDecodeH264PictureInfoFlags;2627typedef struct StdVideoDecodeH264PictureInfo {28uint8_t seq_parameter_set_id; // Selecting SPS from the Picture Parameters29uint8_t pic_parameter_set_id; // Selecting PPS from the Picture Parameters and the SPS30uint16_t reserved; // for structure members 32-bit packing/alignment31uint16_t frame_num; // 7.4.3 Slice header semantics32uint16_t idr_pic_id; // 7.4.3 Slice header semantics33// PicOrderCnt is based on TopFieldOrderCnt and BottomFieldOrderCnt. See 8.2.1 Decoding process for picture order count type 0 - 234int32_t PicOrderCnt[2]; // TopFieldOrderCnt and BottomFieldOrderCnt fields.35StdVideoDecodeH264PictureInfoFlags flags;36} StdVideoDecodeH264PictureInfo;3738typedef struct StdVideoDecodeH264ReferenceInfoFlags {39uint32_t top_field_flag:1; // Reference is used for top field reference.40uint32_t bottom_field_flag:1; // Reference is used for bottom field reference.41uint32_t is_long_term:1; // this is a long term reference42uint32_t is_non_existing:1; // Must be handled in accordance with 8.2.5.2: Decoding process for gaps in frame_num43} StdVideoDecodeH264ReferenceInfoFlags;4445typedef struct StdVideoDecodeH264ReferenceInfo {46// FrameNum = is_long_term ? long_term_frame_idx : frame_num47uint16_t FrameNum; // 7.4.3.3 Decoded reference picture marking semantics48uint16_t reserved; // for structure members 32-bit packing/alignment49int32_t PicOrderCnt[2]; // TopFieldOrderCnt and BottomFieldOrderCnt fields.50StdVideoDecodeH264ReferenceInfoFlags flags;51} StdVideoDecodeH264ReferenceInfo;5253typedef struct StdVideoDecodeH264MvcElementFlags {54uint32_t non_idr:1;55uint32_t anchor_pic:1;56uint32_t inter_view:1;57} StdVideoDecodeH264MvcElementFlags;5859typedef struct StdVideoDecodeH264MvcElement {60StdVideoDecodeH264MvcElementFlags flags;61uint16_t viewOrderIndex;62uint16_t viewId;63uint16_t temporalId; // move out?64uint16_t priorityId; // move out?65uint16_t numOfAnchorRefsInL0;66uint16_t viewIdOfAnchorRefsInL0[15];67uint16_t numOfAnchorRefsInL1;68uint16_t viewIdOfAnchorRefsInL1[15];69uint16_t numOfNonAnchorRefsInL0;70uint16_t viewIdOfNonAnchorRefsInL0[15];71uint16_t numOfNonAnchorRefsInL1;72uint16_t viewIdOfNonAnchorRefsInL1[15];73} StdVideoDecodeH264MvcElement;7475typedef struct StdVideoDecodeH264Mvc {76uint32_t viewId0;77uint32_t mvcElementCount;78StdVideoDecodeH264MvcElement* pMvcElements;79} StdVideoDecodeH264Mvc;808182#ifdef __cplusplus83}84#endif8586#endif // VULKAN_VIDEO_CODEC_H264STD_DECODE_H_878889