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
buffersrc.h
Go to the documentation of this file.
1
/*
2
*
3
* This file is part of FFmpeg.
4
*
5
* FFmpeg is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU Lesser General Public
7
* License as published by the Free Software Foundation; either
8
* version 2.1 of the License, or (at your option) any later version.
9
*
10
* FFmpeg is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* Lesser General Public License for more details.
14
*
15
* You should have received a copy of the GNU Lesser General Public
16
* License along with FFmpeg; if not, write to the Free Software
17
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
*/
19
20
#ifndef AVFILTER_BUFFERSRC_H
21
#define AVFILTER_BUFFERSRC_H
22
23
/**
24
* @file
25
* @ingroup lavfi_buffersrc
26
* Memory buffer source API.
27
*/
28
29
#include "
libavcodec/avcodec.h
"
30
#include "
avfilter.h
"
31
32
/**
33
* @defgroup lavfi_buffersrc Buffer source API
34
* @ingroup lavfi
35
* @{
36
*/
37
38
enum
{
39
40
/**
41
* Do not check for format changes.
42
*/
43
AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT
= 1,
44
45
#if FF_API_AVFILTERBUFFER
46
/**
47
* Ignored
48
*/
49
AV_BUFFERSRC_FLAG_NO_COPY = 2,
50
#endif
51
52
/**
53
* Immediately push the frame to the output.
54
*/
55
AV_BUFFERSRC_FLAG_PUSH
= 4,
56
57
/**
58
* Keep a reference to the frame.
59
* If the frame if reference-counted, create a new reference; otherwise
60
* copy the frame data.
61
*/
62
AV_BUFFERSRC_FLAG_KEEP_REF
= 8,
63
64
};
65
66
/**
67
* Add buffer data in picref to buffer_src.
68
*
69
* @param buffer_src pointer to a buffer source context
70
* @param picref a buffer reference, or NULL to mark EOF
71
* @param flags a combination of AV_BUFFERSRC_FLAG_*
72
* @return >= 0 in case of success, a negative AVERROR code
73
* in case of failure
74
*/
75
int
av_buffersrc_add_ref
(
AVFilterContext
*buffer_src,
76
AVFilterBufferRef *picref,
int
flags
);
77
78
/**
79
* Get the number of failed requests.
80
*
81
* A failed request is when the request_frame method is called while no
82
* frame is present in the buffer.
83
* The number is reset when a frame is added.
84
*/
85
unsigned
av_buffersrc_get_nb_failed_requests
(
AVFilterContext
*buffer_src);
86
87
#if FF_API_AVFILTERBUFFER
88
/**
89
* Add a buffer to a filtergraph.
90
*
91
* @param ctx an instance of the buffersrc filter
92
* @param buf buffer containing frame data to be passed down the filtergraph.
93
* This function will take ownership of buf, the user must not free it.
94
* A NULL buf signals EOF -- i.e. no more frames will be sent to this filter.
95
*
96
* @deprecated use av_buffersrc_write_frame() or av_buffersrc_add_frame()
97
*/
98
attribute_deprecated
99
int
av_buffersrc_buffer(
AVFilterContext
*ctx, AVFilterBufferRef *
buf
);
100
#endif
101
102
/**
103
* Add a frame to the buffer source.
104
*
105
* @param ctx an instance of the buffersrc filter
106
* @param frame frame to be added. If the frame is reference counted, this
107
* function will make a new reference to it. Otherwise the frame data will be
108
* copied.
109
*
110
* @return 0 on success, a negative AVERROR on error
111
*
112
* This function is equivalent to av_buffersrc_add_frame_flags() with the
113
* AV_BUFFERSRC_FLAG_KEEP_REF flag.
114
*/
115
int
av_buffersrc_write_frame
(
AVFilterContext
*ctx,
const
AVFrame
*
frame
);
116
117
/**
118
* Add a frame to the buffer source.
119
*
120
* @param ctx an instance of the buffersrc filter
121
* @param frame frame to be added. If the frame is reference counted, this
122
* function will take ownership of the reference(s) and reset the frame.
123
* Otherwise the frame data will be copied. If this function returns an error,
124
* the input frame is not touched.
125
*
126
* @return 0 on success, a negative AVERROR on error.
127
*
128
* @note the difference between this function and av_buffersrc_write_frame() is
129
* that av_buffersrc_write_frame() creates a new reference to the input frame,
130
* while this function takes ownership of the reference passed to it.
131
*
132
* This function is equivalent to av_buffersrc_add_frame_flags() without the
133
* AV_BUFFERSRC_FLAG_KEEP_REF flag.
134
*/
135
int
av_buffersrc_add_frame
(
AVFilterContext
*ctx,
AVFrame
*
frame
);
136
137
/**
138
* Add a frame to the buffer source.
139
*
140
* By default, if the frame is reference-counted, this function will take
141
* ownership of the reference(s) and reset the frame. This can be controled
142
* using the flags.
143
*
144
* If this function returns an error, the input frame is not touched.
145
*
146
* @param buffer_src pointer to a buffer source context
147
* @param frame a frame, or NULL to mark EOF
148
* @param flags a combination of AV_BUFFERSRC_FLAG_*
149
* @return >= 0 in case of success, a negative AVERROR code
150
* in case of failure
151
*/
152
int
av_buffersrc_add_frame_flags
(
AVFilterContext
*buffer_src,
153
AVFrame
*
frame
,
int
flags
);
154
155
156
/**
157
* @}
158
*/
159
160
#endif
/* AVFILTER_BUFFERSRC_H */
Generated on Sun Mar 23 2014 23:50:08 for FFmpeg by
1.8.2