vdpau.h (2916B)
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 */