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 module ffmpeg.libavcodec.d3d11va;
24 
25 import ffmpeg.libavcodec;
26 
27 extern (C) @nogc nothrow:
28 
29 /**
30  * @file
31  * @ingroup lavc_codec_hwaccel_d3d11va
32  * Public libavcodec D3D11VA header.
33  */
34 
35 enum _WIN32_WINNT = 0x0602;
36 
37 /**
38  * @defgroup lavc_codec_hwaccel_d3d11va Direct3D11
39  * @ingroup lavc_codec_hwaccel
40  *
41  * @{
42  */
43 
44 enum FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG = 1; ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards
45 enum FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO = 2; ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface
46 
47 /**
48  * This structure is used to provides the necessary configurations and data
49  * to the Direct3D11 FFmpeg HWAccel implementation.
50  *
51  * The application must make it available as AVCodecContext.hwaccel_context.
52  *
53  * Use av_d3d11va_alloc_context() exclusively to allocate an AVD3D11VAContext.
54  */
55 struct AVD3D11VAContext;/+
56 {
57     /**
58      * D3D11 decoder object
59      */
60     ID3D11VideoDecoder* decoder;
61 
62     /**
63       * D3D11 VideoContext
64       */
65     ID3D11VideoContext* video_context;
66 
67     /**
68      * D3D11 configuration used to create the decoder
69      */
70     D3D11_VIDEO_DECODER_CONFIG* cfg;
71 
72     /**
73      * The number of surface in the surface array
74      */
75     uint surface_count;
76 
77     /**
78      * The array of Direct3D surfaces used to create the decoder
79      */
80     ID3D11VideoDecoderOutputView** surface;
81 
82     /**
83      * A bit field configuring the workarounds needed for using the decoder
84      */
85     ulong workaround;
86 
87     /**
88      * Private to the FFmpeg AVHWAccel implementation
89      */
90     uint report_id;
91 
92     /**
93       * Mutex to access video_context
94       */
95     HANDLE context_mutex;
96 }+/
97 
98 /**
99  * Allocate an AVD3D11VAContext.
100  *
101  * @return Newly-allocated AVD3D11VAContext or NULL on failure.
102  */
103 AVD3D11VAContext* av_d3d11va_alloc_context ();
104 
105 /**
106  * @}
107  */
108 
109 /* AVCODEC_D3D11VA_H */