misc/winutils/include/libavcodec/vdpau.h
changeset 7813 7ac83d79b897
equal deleted inserted replaced
7812:00696c1450da 7813:7ac83d79b897
       
     1 /*
       
     2  * The Video Decode and Presentation API for UNIX (VDPAU) is used for
       
     3  * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1.
       
     4  *
       
     5  * Copyright (C) 2008 NVIDIA
       
     6  *
       
     7  * This file is part of Libav.
       
     8  *
       
     9  * Libav 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  * Libav 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 Libav; if not, write to the Free Software
       
    21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
       
    22  */
       
    23 
       
    24 #ifndef AVCODEC_VDPAU_H
       
    25 #define AVCODEC_VDPAU_H
       
    26 
       
    27 /**
       
    28  * @file
       
    29  * @ingroup lavc_codec_hwaccel_vdpau
       
    30  * Public libavcodec VDPAU header.
       
    31  */
       
    32 
       
    33 
       
    34 /**
       
    35  * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer
       
    36  * @ingroup lavc_codec_hwaccel
       
    37  *
       
    38  * VDPAU hardware acceleration has two modules
       
    39  * - VDPAU decoding
       
    40  * - VDPAU presentation
       
    41  *
       
    42  * The VDPAU decoding module parses all headers using Libav
       
    43  * parsing mechanisms and uses VDPAU for the actual decoding.
       
    44  *
       
    45  * As per the current implementation, the actual decoding
       
    46  * and rendering (API calls) are done as part of the VDPAU
       
    47  * presentation (vo_vdpau.c) module.
       
    48  *
       
    49  * @{
       
    50  */
       
    51 
       
    52 #include <vdpau/vdpau.h>
       
    53 #include <vdpau/vdpau_x11.h>
       
    54 
       
    55 /** @brief The videoSurface is used for rendering. */
       
    56 #define FF_VDPAU_STATE_USED_FOR_RENDER 1
       
    57 
       
    58 /**
       
    59  * @brief The videoSurface is needed for reference/prediction.
       
    60  * The codec manipulates this.
       
    61  */
       
    62 #define FF_VDPAU_STATE_USED_FOR_REFERENCE 2
       
    63 
       
    64 /**
       
    65  * @brief This structure is used as a callback between the Libav
       
    66  * decoder (vd_) and presentation (vo_) module.
       
    67  * This is used for defining a video frame containing surface,
       
    68  * picture parameter, bitstream information etc which are passed
       
    69  * between the Libav decoder and its clients.
       
    70  */
       
    71 struct vdpau_render_state {
       
    72     VdpVideoSurface surface; ///< Used as rendered surface, never changed.
       
    73 
       
    74     int state; ///< Holds FF_VDPAU_STATE_* values.
       
    75 
       
    76     /** picture parameter information for all supported codecs */
       
    77     union VdpPictureInfo {
       
    78         VdpPictureInfoH264        h264;
       
    79         VdpPictureInfoMPEG1Or2    mpeg;
       
    80         VdpPictureInfoVC1          vc1;
       
    81         VdpPictureInfoMPEG4Part2 mpeg4;
       
    82     } info;
       
    83 
       
    84     /** Describe size/location of the compressed video data.
       
    85         Set to 0 when freeing bitstream_buffers. */
       
    86     int bitstream_buffers_allocated;
       
    87     int bitstream_buffers_used;
       
    88     /** The user is responsible for freeing this buffer using av_freep(). */
       
    89     VdpBitstreamBuffer *bitstream_buffers;
       
    90 };
       
    91 
       
    92 /* @}*/
       
    93 
       
    94 #endif /* AVCODEC_VDPAU_H */