Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
folium-app
GitHub Repository: folium-app/Folium
Path: blob/a-new-beginning/libavcodec.xcframework/macos-arm64/libavcodec.framework/Versions/A/Headers/d3d11va.h
2 views
1
/*
2
* Direct3D11 HW acceleration
3
*
4
* copyright (c) 2009 Laurent Aimar
5
* copyright (c) 2015 Steve Lhomme
6
*
7
* This file is part of FFmpeg.
8
*
9
* FFmpeg is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
13
*
14
* FFmpeg is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with FFmpeg; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
24
#ifndef AVCODEC_D3D11VA_H
25
#define AVCODEC_D3D11VA_H
26
27
/**
28
* @file
29
* @ingroup lavc_codec_hwaccel_d3d11va
30
* Public libavcodec D3D11VA header.
31
*/
32
33
#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602
34
#undef _WIN32_WINNT
35
#define _WIN32_WINNT 0x0602
36
#endif
37
38
#include <stdint.h>
39
#include <d3d11.h>
40
41
/**
42
* @defgroup lavc_codec_hwaccel_d3d11va Direct3D11
43
* @ingroup lavc_codec_hwaccel
44
*
45
* @{
46
*/
47
48
#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards
49
#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface
50
51
/**
52
* This structure is used to provides the necessary configurations and data
53
* to the Direct3D11 FFmpeg HWAccel implementation.
54
*
55
* The application must make it available as AVCodecContext.hwaccel_context.
56
*
57
* Use av_d3d11va_alloc_context() exclusively to allocate an AVD3D11VAContext.
58
*/
59
typedef struct AVD3D11VAContext {
60
/**
61
* D3D11 decoder object
62
*/
63
ID3D11VideoDecoder *decoder;
64
65
/**
66
* D3D11 VideoContext
67
*/
68
ID3D11VideoContext *video_context;
69
70
/**
71
* D3D11 configuration used to create the decoder
72
*/
73
D3D11_VIDEO_DECODER_CONFIG *cfg;
74
75
/**
76
* The number of surface in the surface array
77
*/
78
unsigned surface_count;
79
80
/**
81
* The array of Direct3D surfaces used to create the decoder
82
*/
83
ID3D11VideoDecoderOutputView **surface;
84
85
/**
86
* A bit field configuring the workarounds needed for using the decoder
87
*/
88
uint64_t workaround;
89
90
/**
91
* Private to the FFmpeg AVHWAccel implementation
92
*/
93
unsigned report_id;
94
95
/**
96
* Mutex to access video_context
97
*/
98
HANDLE context_mutex;
99
} AVD3D11VAContext;
100
101
/**
102
* Allocate an AVD3D11VAContext.
103
*
104
* @return Newly-allocated AVD3D11VAContext or NULL on failure.
105
*/
106
AVD3D11VAContext *av_d3d11va_alloc_context(void);
107
108
/**
109
* @}
110
*/
111
112
#endif /* AVCODEC_D3D11VA_H */
113
114