annotate vdpau.h @ 8631:2d7269e13a8d libavcodec

Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can be used by video players. Original patch by NVIDIA corporation.
author cehoyos
date Tue, 20 Jan 2009 09:28:36 +0000
parents 8b80f8285b1b
children aa3670eccc16
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8532
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
1 /*
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
2 * The Video Decode and Presentation API for UNIX (VDPAU) is used for
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
3 * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
4 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
5 * Copyright (C) 2008 NVIDIA
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
6 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
7 * This file is part of FFmpeg.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
8 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
9 * FFmpeg is free software; you can redistribute it and/or
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
11 * License as published by the Free Software Foundation; either
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
12 * version 2.1 of the License, or (at your option) any later version.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
13 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
14 * FFmpeg is distributed in the hope that it will be useful,
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
17 * Lesser General Public License for more details.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
18 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
20 * License along with FFmpeg; if not, write to the Free Software
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
22 */
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
23
8534
b80cf351176e 1l: Forgot to rename header guard.
cehoyos
parents: 8532
diff changeset
24 #ifndef AVCODEC_VDPAU_H
b80cf351176e 1l: Forgot to rename header guard.
cehoyos
parents: 8532
diff changeset
25 #define AVCODEC_VDPAU_H
8532
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
26
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
27 /**
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
28 * \defgroup Decoder VDPAU Decoder and Renderer
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
29 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
30 * VDPAU hardware acceleration has two modules
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
31 * - VDPAU decoding
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
32 * - VDPAU presentation
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
33 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
34 * The VDPAU decoding module parses all headers using FFmpeg
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
35 * parsing mechanisms and uses VDPAU for the actual decoding.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
36 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
37 * As per the current implementation, the actual decoding
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
38 * and rendering (API calls) are done as part of the VDPAU
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
39 * presentation (vo_vdpau.c) module.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
40 *
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
41 * @{
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
42 * \defgroup VDPAU_Decoding VDPAU Decoding
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
43 * \ingroup Decoder
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
44 * @{
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
45 */
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
46
8546
5800aecff5f8 Use <> instead of "" for system headers.
diego
parents: 8534
diff changeset
47 #include <vdpau/vdpau.h>
5800aecff5f8 Use <> instead of "" for system headers.
diego
parents: 8534
diff changeset
48 #include <vdpau/vdpau_x11.h>
8532
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
49
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
50 /** \brief The videoSurface is used for rendering. */
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
51 #define FF_VDPAU_STATE_USED_FOR_RENDER 1
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
52
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
53 /**
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
54 * \brief The videoSurface is needed for reference/prediction.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
55 * The codec manipulates this.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
56 */
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
57 #define FF_VDPAU_STATE_USED_FOR_REFERENCE 2
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
58
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
59 /**
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
60 * \brief This structure is used as a callback between the FFmpeg
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
61 * decoder (vd_) and presentation (vo_) module.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
62 * This is used for defining a video frame containing surface,
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
63 * picture parameter, bitstream information etc which are passed
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
64 * between the FFmpeg decoder and its clients.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
65 */
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
66 struct vdpau_render_state {
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
67 VdpVideoSurface surface; ///< Used as rendered surface, never changed.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
68
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
69 int state; ///< Holds FF_VDPAU_STATE_* values.
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
70
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
71 /** picture parameter information for all supported codecs */
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
72 union VdpPictureInfo {
8601
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8553
diff changeset
73 VdpPictureInfoMPEG1Or2 mpeg;
8532
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
74 VdpPictureInfoH264 h264;
8631
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8601
diff changeset
75 VdpPictureInfoVC1 vc1;
8532
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
76 } info;
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
77
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
78 /** Describe size/location of the compressed video data. */
8553
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8546
diff changeset
79 int bitstream_buffers_allocated;
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8546
diff changeset
80 int bitstream_buffers_used;
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8546
diff changeset
81 VdpBitstreamBuffer *bitstream_buffers;
8532
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
82 };
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
83
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
84 /* @}*/
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents:
diff changeset
85
8534
b80cf351176e 1l: Forgot to rename header guard.
cehoyos
parents: 8532
diff changeset
86 #endif /* AVCODEC_VDPAU_H */