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 */