1/* 2 * DXVA2 HW acceleration 3 * 4 * copyright (c) 2009 Laurent Aimar 5 * 6 * This file is part of FFmpeg. 7 * 8 * FFmpeg is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2.1 of the License, or (at your option) any later version. 12 * 13 * FFmpeg is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with FFmpeg; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 */ 22 23#ifndef AVCODEC_DXVA_H 24#define AVCODEC_DXVA_H 25 26#include <stdint.h> 27 28#include <dxva2api.h> 29 30/** 31 * This structure is used to provides the necessary configurations and data 32 * to the DXVA2 FFmpeg HWAccel implementation. 33 * 34 * The application must make it available as AVCodecContext.hwaccel_context. 35 */ 36struct dxva_context { 37 /** 38 * DXVA2 decoder object 39 */ 40 IDirectXVideoDecoder *decoder; 41 42 /** 43 * DXVA2 configuration used to create the decoder 44 */ 45 const DXVA2_ConfigPictureDecode *cfg; 46 47 /** 48 * The number of surface in the surface array 49 */ 50 unsigned surface_count; 51 52 /** 53 * The array of Direct3D surfaces used to create the decoder 54 */ 55 LPDIRECT3DSURFACE9 *surface; 56 57 /** 58 * A bit field configuring the workarounds needed for using the decoder 59 */ 60 uint64_t workaround; 61 62 /** 63 * Private to the FFmpeg AVHWAccel implementation 64 */ 65 unsigned report_id; 66}; 67 68#endif /* AVCODEC_DXVA_H */ 69