FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
vda.h
Go to the documentation of this file.
1
/*
2
* VDA HW acceleration
3
*
4
* copyright (c) 2011 Sebastien Zwickert
5
*
6
* This file is part of FFmpeg.
7
*
8
* FFmpeg is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public
10
* License as published by the Free Software Foundation; either
11
* version 2.1 of the License, or (at your option) any later version.
12
*
13
* FFmpeg is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
* Lesser General Public License for more details.
17
*
18
* You should have received a copy of the GNU Lesser General Public
19
* License along with FFmpeg; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
*/
22
23
#ifndef AVCODEC_VDA_H
24
#define AVCODEC_VDA_H
25
26
/**
27
* @file
28
* @ingroup lavc_codec_hwaccel_vda
29
* Public libavcodec VDA header.
30
*/
31
32
#include <stdint.h>
33
34
// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes
35
// http://openradar.appspot.com/8026390
36
#undef __GNUC_STDC_INLINE__
37
38
#define Picture QuickdrawPicture
39
#include <VideoDecodeAcceleration/VDADecoder.h>
40
#undef Picture
41
42
#include "
libavcodec/version.h
"
43
44
// extra flags not defined in VDADecoder.h
45
enum
{
46
kVDADecodeInfo_Asynchronous
= 1UL << 0,
47
kVDADecodeInfo_FrameDropped
= 1UL << 1
48
};
49
50
/**
51
* @defgroup lavc_codec_hwaccel_vda VDA
52
* @ingroup lavc_codec_hwaccel
53
*
54
* @{
55
*/
56
57
/**
58
* This structure is used to provide the necessary configurations and data
59
* to the VDA FFmpeg HWAccel implementation.
60
*
61
* The application must make it available as AVCodecContext.hwaccel_context.
62
*/
63
struct
vda_context
{
64
/**
65
* VDA decoder object.
66
*
67
* - encoding: unused
68
* - decoding: Set/Unset by libavcodec.
69
*/
70
VDADecoder
decoder
;
71
72
/**
73
* The Core Video pixel buffer that contains the current image data.
74
*
75
* encoding: unused
76
* decoding: Set by libavcodec. Unset by user.
77
*/
78
CVPixelBufferRef
cv_buffer
;
79
80
/**
81
* Use the hardware decoder in synchronous mode.
82
*
83
* encoding: unused
84
* decoding: Set by user.
85
*/
86
int
use_sync_decoding
;
87
88
/**
89
* The frame width.
90
*
91
* - encoding: unused
92
* - decoding: Set/Unset by user.
93
*/
94
int
width
;
95
96
/**
97
* The frame height.
98
*
99
* - encoding: unused
100
* - decoding: Set/Unset by user.
101
*/
102
int
height
;
103
104
/**
105
* The frame format.
106
*
107
* - encoding: unused
108
* - decoding: Set/Unset by user.
109
*/
110
int
format
;
111
112
/**
113
* The pixel format for output image buffers.
114
*
115
* - encoding: unused
116
* - decoding: Set/Unset by user.
117
*/
118
OSType
cv_pix_fmt_type
;
119
120
/**
121
* The current bitstream buffer.
122
*
123
* - encoding: unused
124
* - decoding: Set/Unset by libavcodec.
125
*/
126
uint8_t
*
priv_bitstream
;
127
128
/**
129
* The current size of the bitstream.
130
*
131
* - encoding: unused
132
* - decoding: Set/Unset by libavcodec.
133
*/
134
int
priv_bitstream_size
;
135
136
/**
137
* The reference size used for fast reallocation.
138
*
139
* - encoding: unused
140
* - decoding: Set/Unset by libavcodec.
141
*/
142
int
priv_allocated_size
;
143
144
/**
145
* Use av_buffer to manage buffer.
146
* When the flag is set, the CVPixelBuffers returned by the decoder will
147
* be released automatically, so you have to retain them if necessary.
148
* Not setting this flag may cause memory leak.
149
*
150
* encoding: unused
151
* decoding: Set by user.
152
*/
153
int
use_ref_buffer
;
154
};
155
156
/** Create the video decoder. */
157
int
ff_vda_create_decoder
(
struct
vda_context
*vda_ctx,
158
uint8_t
*extradata,
159
int
extradata_size);
160
161
/** Destroy the video decoder. */
162
int
ff_vda_destroy_decoder
(
struct
vda_context
*vda_ctx);
163
164
/**
165
* @}
166
*/
167
168
#endif
/* AVCODEC_VDA_H */
Generated on Sun Mar 23 2014 23:50:04 for FFmpeg by
1.8.2