Statistics
| Branch: | Revision:

ffmpeg / libavcodec / vaapi.h @ 2912e87a

History | View | Annotate | Download (3.8 KB)

1
/*
2
 * Video Acceleration API (shared data between Libav 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 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_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 Libav 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 */