1/* 2 * DXVA2 HW acceleration 3 * 4 * copyright (c) 2009 Laurent Aimar 5 * 6 * This file is part of Libav. 7 * 8 * Libav 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 * Libav 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 Libav; 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 <d3d9.h> 29#include <dxva2api.h> 30 31#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards 32 33/** 34 * This structure is used to provides the necessary configurations and data 35 * to the DXVA2 Libav HWAccel implementation. 36 * 37 * The application must make it available as AVCodecContext.hwaccel_context. 38 */ 39struct dxva_context { 40 /** 41 * DXVA2 decoder object 42 */ 43 IDirectXVideoDecoder *decoder; 44 45 /** 46 * DXVA2 configuration used to create the decoder 47 */ 48 const DXVA2_ConfigPictureDecode *cfg; 49 50 /** 51 * The number of surface in the surface array 52 */ 53 unsigned surface_count; 54 55 /** 56 * The array of Direct3D surfaces used to create the decoder 57 */ 58 LPDIRECT3DSURFACE9 *surface; 59 60 /** 61 * A bit field configuring the workarounds needed for using the decoder 62 */ 63 uint64_t workaround; 64 65 /** 66 * Private to the Libav AVHWAccel implementation 67 */ 68 unsigned report_id; 69}; 70 71#endif /* AVCODEC_DXVA_H */ 72