cosmetics, rename loop to frame_available
[ffmpeg.git] / libavcodec / vaapi.h
1 /*
2  * Video Acceleration API (shared data between FFmpeg and the video player)
3  * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1
4  *
5  * Copyright (C) 2008-2009 Splitted-Desktop Systems
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_VAAPI_H
25 #define AVCODEC_VAAPI_H
26
27 #include <stdint.h>
28
29 /**
30  * \defgroup VAAPI_Decoding VA API Decoding
31  * \ingroup Decoder
32  * @{
33  */
34
35 /**
36  * This structure is used to share data between the FFmpeg library and
37  * the client video application.
38  * This shall be zero-allocated and available as
39  * AVCodecContext.hwaccel_context. All user members can be set once
40  * during initialization or through each AVCodecContext.get_buffer()
41  * function call. In any case, they must be valid prior to calling
42  * decoding functions.
43  */
44 struct vaapi_context {
45     /**
46      * Window system dependent data
47      *
48      * - encoding: unused
49      * - decoding: Set by user
50      */
51     void *display;
52
53     /**
54      * Configuration ID
55      *
56      * - encoding: unused
57      * - decoding: Set by user
58      */
59     uint32_t config_id;
60
61     /**
62      * Context ID (video decode pipeline)
63      *
64      * - encoding: unused
65      * - decoding: Set by user
66      */
67     uint32_t context_id;
68
69     /**
70      * VAPictureParameterBuffer ID
71      *
72      * - encoding: unused
73      * - decoding: Set by libavcodec
74      */
75     uint32_t pic_param_buf_id;
76
77     /**
78      * VAIQMatrixBuffer ID
79      *
80      * - encoding: unused
81      * - decoding: Set by libavcodec
82      */
83     uint32_t iq_matrix_buf_id;
84
85     /**
86      * VABitPlaneBuffer ID (for VC-1 decoding)
87      *
88      * - encoding: unused
89      * - decoding: Set by libavcodec
90      */
91     uint32_t bitplane_buf_id;
92
93     /**
94      * Slice parameter/data buffer IDs
95      *
96      * - encoding: unused
97      * - decoding: Set by libavcodec
98      */
99     uint32_t *slice_buf_ids;
100
101     /**
102      * Number of effective slice buffer IDs to send to the HW
103      *
104      * - encoding: unused
105      * - decoding: Set by libavcodec
106      */
107     unsigned int n_slice_buf_ids;
108
109     /**
110      * Size of pre-allocated slice_buf_ids
111      *
112      * - encoding: unused
113      * - decoding: Set by libavcodec
114      */
115     unsigned int slice_buf_ids_alloc;
116
117     /**
118      * Pointer to VASliceParameterBuffers
119      *
120      * - encoding: unused
121      * - decoding: Set by libavcodec
122      */
123     void *slice_params;
124
125     /**
126      * Size of a VASliceParameterBuffer element
127      *
128      * - encoding: unused
129      * - decoding: Set by libavcodec
130      */
131     unsigned int slice_param_size;
132
133     /**
134      * Size of pre-allocated slice_params
135      *
136      * - encoding: unused
137      * - decoding: Set by libavcodec
138      */
139     unsigned int slice_params_alloc;
140
141     /**
142      * Number of slices currently filled in
143      *
144      * - encoding: unused
145      * - decoding: Set by libavcodec
146      */
147     unsigned int slice_count;
148
149     /**
150      * Pointer to slice data buffer base
151      * - encoding: unused
152      * - decoding: Set by libavcodec
153      */
154     const uint8_t *slice_data;
155
156     /**
157      * Current size of slice data
158      *
159      * - encoding: unused
160      * - decoding: Set by libavcodec
161      */
162     uint32_t slice_data_size;
163 };
164
165 /* @} */
166
167 #endif /* AVCODEC_VAAPI_H */