misc/winutils/include/libavcodec/dxva2.h
changeset 7813 7ac83d79b897
equal deleted inserted replaced
7812:00696c1450da 7813:7ac83d79b897
       
     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 /**
       
    27  * @file
       
    28  * @ingroup lavc_codec_hwaccel_dxva2
       
    29  * Public libavcodec DXVA2 header.
       
    30  */
       
    31 
       
    32 #include <stdint.h>
       
    33 
       
    34 #include <d3d9.h>
       
    35 #include <dxva2api.h>
       
    36 
       
    37 /**
       
    38  * @defgroup lavc_codec_hwaccel_dxva2 DXVA2
       
    39  * @ingroup lavc_codec_hwaccel
       
    40  *
       
    41  * @{
       
    42  */
       
    43 
       
    44 #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
       
    45 
       
    46 /**
       
    47  * This structure is used to provides the necessary configurations and data
       
    48  * to the DXVA2 Libav HWAccel implementation.
       
    49  *
       
    50  * The application must make it available as AVCodecContext.hwaccel_context.
       
    51  */
       
    52 struct dxva_context {
       
    53     /**
       
    54      * DXVA2 decoder object
       
    55      */
       
    56     IDirectXVideoDecoder *decoder;
       
    57 
       
    58     /**
       
    59      * DXVA2 configuration used to create the decoder
       
    60      */
       
    61     const DXVA2_ConfigPictureDecode *cfg;
       
    62 
       
    63     /**
       
    64      * The number of surface in the surface array
       
    65      */
       
    66     unsigned surface_count;
       
    67 
       
    68     /**
       
    69      * The array of Direct3D surfaces used to create the decoder
       
    70      */
       
    71     LPDIRECT3DSURFACE9 *surface;
       
    72 
       
    73     /**
       
    74      * A bit field configuring the workarounds needed for using the decoder
       
    75      */
       
    76     uint64_t workaround;
       
    77 
       
    78     /**
       
    79      * Private to the Libav AVHWAccel implementation
       
    80      */
       
    81     unsigned report_id;
       
    82 };
       
    83 
       
    84 /**
       
    85  * @}
       
    86  */
       
    87 
       
    88 #endif /* AVCODEC_DXVA_H */