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