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
* memory buffer sink API for audio and video
25
*/
26
27
#include "
avfilter.h
"
28
29
#if FF_API_AVFILTERBUFFER
30
/**
31
* Get an audio/video buffer data from buffer_sink and put it in bufref.
32
*
33
* This function works with both audio and video buffer sinks.
34
*
35
* @param buffer_sink pointer to a buffersink or abuffersink context
36
* @param flags a combination of AV_BUFFERSINK_FLAG_* flags
37
* @return >= 0 in case of success, a negative AVERROR code in case of
38
* failure
39
*/
40
attribute_deprecated
41
int
av_buffersink_get_buffer_ref(
AVFilterContext
*buffer_sink,
42
AVFilterBufferRef **bufref,
int
flags
);
43
44
/**
45
* Get the number of immediately available frames.
46
*/
47
attribute_deprecated
48
int
av_buffersink_poll_frame
(
AVFilterContext
*ctx);
49
50
/**
51
* Get a buffer with filtered data from sink and put it in buf.
52
*
53
* @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
54
* @param buf pointer to the buffer will be written here if buf is non-NULL. buf
55
* must be freed by the caller using avfilter_unref_buffer().
56
* Buf may also be NULL to query whether a buffer is ready to be
57
* output.
58
*
59
* @return >= 0 in case of success, a negative AVERROR code in case of
60
* failure.
61
*/
62
attribute_deprecated
63
int
av_buffersink_read(
AVFilterContext
*ctx, AVFilterBufferRef **
buf
);
64
65
/**
66
* Same as av_buffersink_read, but with the ability to specify the number of
67
* samples read. This function is less efficient than av_buffersink_read(),
68
* because it copies the data around.
69
*
70
* @param ctx pointer to a context of the abuffersink AVFilter.
71
* @param buf pointer to the buffer will be written here if buf is non-NULL. buf
72
* must be freed by the caller using avfilter_unref_buffer(). buf
73
* will contain exactly nb_samples audio samples, except at the end
74
* of stream, when it can contain less than nb_samples.
75
* Buf may also be NULL to query whether a buffer is ready to be
76
* output.
77
*
78
* @warning do not mix this function with av_buffersink_read(). Use only one or
79
* the other with a single sink, not both.
80
*/
81
attribute_deprecated
82
int
av_buffersink_read_samples(
AVFilterContext
*ctx, AVFilterBufferRef **
buf
,
83
int
nb_samples);
84
#endif
85
86
/**
87
* Get a frame with filtered data from sink and put it in frame.
88
*
89
* @param ctx pointer to a buffersink or abuffersink filter context.
90
* @param frame pointer to an allocated frame that will be filled with data.
91
* The data must be freed using av_frame_unref() / av_frame_free()
92
* @param flags a combination of AV_BUFFERSINK_FLAG_* flags
93
*
94
* @return >= 0 in for success, a negative AVERROR code for failure.
95
*/
96
int
av_buffersink_get_frame_flags
(
AVFilterContext
*ctx,
AVFrame
*
frame
,
int
flags
);
97
98
/**
99
* Tell av_buffersink_get_buffer_ref() to read video/samples buffer
100
* reference, but not remove it from the buffer. This is useful if you
101
* need only to read a video/samples buffer, without to fetch it.
102
*/
103
#define AV_BUFFERSINK_FLAG_PEEK 1
104
105
/**
106
* Tell av_buffersink_get_buffer_ref() not to request a frame from its input.
107
* If a frame is already buffered, it is read (and removed from the buffer),
108
* but if no frame is present, return AVERROR(EAGAIN).
109
*/
110
#define AV_BUFFERSINK_FLAG_NO_REQUEST 2
111
112
/**
113
* Struct to use for initializing a buffersink context.
114
*/
115
typedef
struct
{
116
const
enum
AVPixelFormat
*
pixel_fmts
;
///< list of allowed pixel formats, terminated by AV_PIX_FMT_NONE
117
}
AVBufferSinkParams
;
118
119
/**
120
* Create an AVBufferSinkParams structure.
121
*
122
* Must be freed with av_free().
123
*/
124
AVBufferSinkParams
*
av_buffersink_params_alloc
(
void
);
125
126
/**
127
* Struct to use for initializing an abuffersink context.
128
*/
129
typedef
struct
{
130
const
enum
AVSampleFormat
*
sample_fmts
;
///< list of allowed sample formats, terminated by AV_SAMPLE_FMT_NONE
131
const
int64_t *
channel_layouts
;
///< list of allowed channel layouts, terminated by -1
132
const
int
*
channel_counts
;
///< list of allowed channel counts, terminated by -1
133
int
all_channel_counts
;
///< if not 0, accept any channel count or layout
134
int
*
sample_rates
;
///< list of allowed sample rates, terminated by -1
135
}
AVABufferSinkParams
;
136
137
/**
138
* Create an AVABufferSinkParams structure.
139
*
140
* Must be freed with av_free().
141
*/
142
AVABufferSinkParams
*
av_abuffersink_params_alloc
(
void
);
143
144
/**
145
* Set the frame size for an audio buffer sink.
146
*
147
* All calls to av_buffersink_get_buffer_ref will return a buffer with
148
* exactly the specified number of samples, or AVERROR(EAGAIN) if there is
149
* not enough. The last buffer at EOF will be padded with 0.
150
*/
151
void
av_buffersink_set_frame_size
(
AVFilterContext
*ctx,
unsigned
frame_size
);
152
153
/**
154
* Get the frame rate of the input.
155
*/
156
AVRational
av_buffersink_get_frame_rate
(
AVFilterContext
*ctx);
157
158
/**
159
* Get a frame with filtered data from sink and put it in frame.
160
*
161
* @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
162
* @param frame pointer to an allocated frame that will be filled with data.
163
* The data must be freed using av_frame_unref() / av_frame_free()
164
*
165
* @return >= 0 in case of success, a negative AVERROR code in case of
166
* failure.
167
*/
168
int
av_buffersink_get_frame
(
AVFilterContext
*ctx,
AVFrame
*
frame
);
169
170
/**
171
* Same as av_buffersink_get_frame(), but with the ability to specify the number
172
* of samples read. This function is less efficient than
173
* av_buffersink_get_frame(), because it copies the data around.
174
*
175
* @param ctx pointer to a context of the abuffersink AVFilter.
176
* @param frame pointer to an allocated frame that will be filled with data.
177
* The data must be freed using av_frame_unref() / av_frame_free()
178
* frame will contain exactly nb_samples audio samples, except at
179
* the end of stream, when it can contain less than nb_samples.
180
*
181
* @warning do not mix this function with av_buffersink_get_frame(). Use only one or
182
* the other with a single sink, not both.
183
*/
184
int
av_buffersink_get_samples
(
AVFilterContext
*ctx,
AVFrame
*
frame
,
int
nb_samples);
185
186
#endif
/* AVFILTER_BUFFERSINK_H */
Generated on Sat Jan 25 2014 19:51:59 for FFmpeg by
1.8.2