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
libavfilter
buffersink.h
Go to the documentation of this file.
1
/*
2
* This file is part of FFmpeg.
3
*
4
* FFmpeg is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
8
*
9
* FFmpeg is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
13
*
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with FFmpeg; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
19
#ifndef AVFILTER_BUFFERSINK_H
20
#define AVFILTER_BUFFERSINK_H
21
22
/**
23
* @file
24
* @ingroup lavfi_buffersink
25
* memory buffer sink API for audio and video
26
*/
27
28
#include "
avfilter.h
"
29
30
/**
31
* @defgroup lavfi_buffersink Buffer sink API
32
* @ingroup lavfi
33
* @{
34
*/
35
36
#if FF_API_AVFILTERBUFFER
37
/**
38
* Get an audio/video buffer data from buffer_sink and put it in bufref.
39
*
40
* This function works with both audio and video buffer sinks.
41
*
42
* @param buffer_sink pointer to a buffersink or abuffersink context
43
* @param flags a combination of AV_BUFFERSINK_FLAG_* flags
44
* @return >= 0 in case of success, a negative AVERROR code in case of
45
* failure
46
*/
47
attribute_deprecated
48
int
av_buffersink_get_buffer_ref(
AVFilterContext
*buffer_sink,
49
AVFilterBufferRef **bufref,
int
flags
);
50
51
/**
52
* Get the number of immediately available frames.
53
*/
54
attribute_deprecated
55
int
av_buffersink_poll_frame
(
AVFilterContext
*ctx);
56
57
/**
58
* Get a buffer with filtered data from sink and put it in buf.
59
*
60
* @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
61
* @param buf pointer to the buffer will be written here if buf is non-NULL. buf
62
* must be freed by the caller using avfilter_unref_buffer().
63
* Buf may also be NULL to query whether a buffer is ready to be
64
* output.
65
*
66
* @return >= 0 in case of success, a negative AVERROR code in case of
67
* failure.
68
*/
69
attribute_deprecated
70
int
av_buffersink_read(
AVFilterContext
*ctx, AVFilterBufferRef **
buf
);
71
72
/**
73
* Same as av_buffersink_read, but with the ability to specify the number of
74
* samples read. This function is less efficient than av_buffersink_read(),
75
* because it copies the data around.
76
*
77
* @param ctx pointer to a context of the abuffersink AVFilter.
78
* @param buf pointer to the buffer will be written here if buf is non-NULL. buf
79
* must be freed by the caller using avfilter_unref_buffer(). buf
80
* will contain exactly nb_samples audio samples, except at the end
81
* of stream, when it can contain less than nb_samples.
82
* Buf may also be NULL to query whether a buffer is ready to be
83
* output.
84
*
85
* @warning do not mix this function with av_buffersink_read(). Use only one or
86
* the other with a single sink, not both.
87
*/
88
attribute_deprecated
89
int
av_buffersink_read_samples(
AVFilterContext
*ctx, AVFilterBufferRef **
buf
,
90
int
nb_samples);
91
#endif
92
93
/**
94
* Get a frame with filtered data from sink and put it in frame.
95
*
96
* @param ctx pointer to a buffersink or abuffersink filter context.
97
* @param frame pointer to an allocated frame that will be filled with data.
98
* The data must be freed using av_frame_unref() / av_frame_free()
99
* @param flags a combination of AV_BUFFERSINK_FLAG_* flags
100
*
101
* @return >= 0 in for success, a negative AVERROR code for failure.
102
*/
103
int
av_buffersink_get_frame_flags
(
AVFilterContext
*ctx,
AVFrame
*
frame
,
int
flags
);
104
105
/**
106
* Tell av_buffersink_get_buffer_ref() to read video/samples buffer
107
* reference, but not remove it from the buffer. This is useful if you
108
* need only to read a video/samples buffer, without to fetch it.
109
*/
110
#define AV_BUFFERSINK_FLAG_PEEK 1
111
112
/**
113
* Tell av_buffersink_get_buffer_ref() not to request a frame from its input.
114
* If a frame is already buffered, it is read (and removed from the buffer),
115
* but if no frame is present, return AVERROR(EAGAIN).
116
*/
117
#define AV_BUFFERSINK_FLAG_NO_REQUEST 2
118
119
/**
120
* Struct to use for initializing a buffersink context.
121
*/
122
typedef
struct
{
123
const
enum
AVPixelFormat
*
pixel_fmts
;
///< list of allowed pixel formats, terminated by AV_PIX_FMT_NONE
124
}
AVBufferSinkParams
;
125
126
/**
127
* Create an AVBufferSinkParams structure.
128
*
129
* Must be freed with av_free().
130
*/
131
AVBufferSinkParams
*
av_buffersink_params_alloc
(
void
);
132
133
/**
134
* Struct to use for initializing an abuffersink context.
135
*/
136
typedef
struct
{
137
const
enum
AVSampleFormat
*
sample_fmts
;
///< list of allowed sample formats, terminated by AV_SAMPLE_FMT_NONE
138
const
int64_t *
channel_layouts
;
///< list of allowed channel layouts, terminated by -1
139
const
int
*
channel_counts
;
///< list of allowed channel counts, terminated by -1
140
int
all_channel_counts
;
///< if not 0, accept any channel count or layout
141
int
*
sample_rates
;
///< list of allowed sample rates, terminated by -1
142
}
AVABufferSinkParams
;
143
144
/**
145
* Create an AVABufferSinkParams structure.
146
*
147
* Must be freed with av_free().
148
*/
149
AVABufferSinkParams
*
av_abuffersink_params_alloc
(
void
);
150
151
/**
152
* Set the frame size for an audio buffer sink.
153
*
154
* All calls to av_buffersink_get_buffer_ref will return a buffer with
155
* exactly the specified number of samples, or AVERROR(EAGAIN) if there is
156
* not enough. The last buffer at EOF will be padded with 0.
157
*/
158
void
av_buffersink_set_frame_size
(
AVFilterContext
*ctx,
unsigned
frame_size
);
159
160
/**
161
* Get the frame rate of the input.
162
*/
163
AVRational
av_buffersink_get_frame_rate
(
AVFilterContext
*ctx);
164
165
/**
166
* Get a frame with filtered data from sink and put it in frame.
167
*
168
* @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
169
* @param frame pointer to an allocated frame that will be filled with data.
170
* The data must be freed using av_frame_unref() / av_frame_free()
171
*
172
* @return
173
* - >= 0 if a frame was successfully returned.
174
* - AVERROR(EAGAIN) if no frames are available at this point; more
175
* input frames must be added to the filtergraph to get more output.
176
* - AVERROR_EOF if there will be no more output frames on this sink.
177
* - A different negative AVERROR code in other failure cases.
178
*/
179
int
av_buffersink_get_frame
(
AVFilterContext
*ctx,
AVFrame
*
frame
);
180
181
/**
182
* Same as av_buffersink_get_frame(), but with the ability to specify the number
183
* of samples read. This function is less efficient than
184
* av_buffersink_get_frame(), because it copies the data around.
185
*
186
* @param ctx pointer to a context of the abuffersink AVFilter.
187
* @param frame pointer to an allocated frame that will be filled with data.
188
* The data must be freed using av_frame_unref() / av_frame_free()
189
* frame will contain exactly nb_samples audio samples, except at
190
* the end of stream, when it can contain less than nb_samples.
191
*
192
* @return The return codes have the same meaning as for
193
* av_buffersink_get_samples().
194
*
195
* @warning do not mix this function with av_buffersink_get_frame(). Use only one or
196
* the other with a single sink, not both.
197
*/
198
int
av_buffersink_get_samples
(
AVFilterContext
*ctx,
AVFrame
*
frame
,
int
nb_samples);
199
200
/**
201
* @}
202
*/
203
204
#endif
/* AVFILTER_BUFFERSINK_H */
Generated on Sun Mar 23 2014 23:50:08 for FFmpeg by
1.8.2