1 /*
2 * Video Decode and Presentation API for UNIX (VDPAU) is used for
3 * HW decode acceleration for MPEG-1/2, H.264 and VC-1.
4 *
5 * Copyright (C) 2008 NVIDIA
6 *
7 * This file is part of FFmpeg.
8 *
9 * FFmpeg 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 * FFmpeg 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 FFmpeg; 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_INTERNAL_H
25 #define AVCODEC_VDPAU_INTERNAL_H
26
27 #include "config.h"
28 #include <stdint.h>
29 #if CONFIG_VDPAU
30 #include <vdpau/vdpau.h>
31 #endif
33
35
38
39 /** Extract VdpVideoSurface from an AVFrame */
41 {
42 return (uintptr_t)pic->
data[3];
43 }
44
45 struct vdpau_picture_context;
46 #if CONFIG_VDPAU
47 union VDPAUPictureInfo {
48 VdpPictureInfoH264 h264;
49 VdpPictureInfoMPEG1Or2 mpeg;
50 VdpPictureInfoVC1 vc1;
51 VdpPictureInfoMPEG4Part2 mpeg4;
52 #ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
53 VdpPictureInfoH264Predictive h264_predictive;
54 #endif
55 };
56
58
59 typedef struct VDPAUHWContext {
61 VdpDevice device;
62 VdpGetProcAddress *get_proc_address;
63 char reset;
65 } VDPAUHWContext;
66
68 /**
69 * VDPAU device handle
70 */
72
73 /**
74 * VDPAU decoder handle
75 */
77
78 /**
79 * VDPAU device driver
80 */
82
83 /**
84 * VDPAU decoder render callback
85 */
86 VdpDecoderRender *render;
87
91
92 struct vdpau_picture_context {
93 /**
94 * VDPAU picture information.
95 */
96 union VDPAUPictureInfo info;
97
98 /**
99 * Allocated size of the bitstream_buffers table.
100 */
101 int bitstream_buffers_allocated;
102
103 /**
104 * Useful bitstream buffers in the bitstream buffers table.
105 */
106 int bitstream_buffers_used;
107
108 /**
109 * Table of bitstream buffers.
110 */
111 VdpBitstreamBuffer *bitstream_buffers;
112 };
113
116 #endif //CONFIG_VDPAU
117
119
123 struct vdpau_picture_context *pic);
126 uint32_t buf_size);
127
128
130 int buf_size);
131
133 int buf_size, int slice_count);
134
138
140 int buf_size);
141
143 int buf_size);
144
145 #endif /* AVCODEC_VDPAU_INTERNAL_H */