1 #ifndef _VKTVIDEOSESSIONNVUTILS_HPP
2 #define _VKTVIDEOSESSIONNVUTILS_HPP
3 /*-------------------------------------------------------------------------
4  * Vulkan Conformance Tests
5  * ------------------------
6  *
7  * Copyright (c) 2021 The Khronos Group Inc.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  *//*!
22  * \file
23  * \brief Video Session NV Utils
24  *//*--------------------------------------------------------------------*/
25 
26 #include "deUniquePtr.hpp"
27 #include "extNvidiaVideoParserIf.hpp"
28 #include "vkPlatform.hpp"
29 
30 namespace vkt
31 {
32 namespace video
33 {
34 
35 class IfcVulkanVideoDecodeParser
36 {
37 public:
38 	virtual bool						parseByteStream						(deUint8* pData, deInt64 size)													= 0;
39 	virtual bool						initialize							(NvidiaVulkanParserVideoDecodeClient*	nvidiaVulkanParserVideoDecodeClient)	= 0;
40 	virtual bool						deinitialize						(void)																			= 0;
41 
~IfcVulkanVideoDecodeParser()42 	virtual								~IfcVulkanVideoDecodeParser			() {}
43 };
44 
45 class IfcNvFunctions
46 {
47 public:
48 	virtual	IfcVulkanVideoDecodeParser*	createIfcVulkanVideoDecodeParser	(VkVideoCodecOperationFlagBitsKHR codecOperation, const VkExtensionProperties* stdExtensionVersion) = 0;
~IfcNvFunctions()49 	virtual								~IfcNvFunctions						() {};
50 };
51 
52 de::MovePtr<IfcNvFunctions>	createIfcNvFunctions (const vk::Platform& platform);
53 
54 } // video
55 } // vkt
56 
57 #endif // _VKTVIDEOSESSIONNVUTILS_HPP
58