Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavfilter
vf_split.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2007 Bobby Bingham
3
*
4
* This file is part of Libav.
5
*
6
* Libav is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* Libav is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with Libav; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
26
#include "
avfilter.h
"
27
28
static
void
start_frame
(
AVFilterLink
*inlink,
AVFilterBufferRef
*picref)
29
{
30
avfilter_start_frame
(inlink->
dst
->
outputs
[0],
31
avfilter_ref_buffer
(picref, ~
AV_PERM_WRITE
));
32
avfilter_start_frame
(inlink->
dst
->
outputs
[1],
33
avfilter_ref_buffer
(picref, ~
AV_PERM_WRITE
));
34
}
35
36
static
void
draw_slice
(
AVFilterLink
*inlink,
int
y,
int
h,
int
slice_dir)
37
{
38
avfilter_draw_slice
(inlink->
dst
->
outputs
[0], y, h, slice_dir);
39
avfilter_draw_slice
(inlink->
dst
->
outputs
[1], y, h, slice_dir);
40
}
41
42
static
void
end_frame
(
AVFilterLink
*inlink)
43
{
44
avfilter_end_frame
(inlink->
dst
->
outputs
[0]);
45
avfilter_end_frame
(inlink->
dst
->
outputs
[1]);
46
47
avfilter_unref_buffer
(inlink->
cur_buf
);
48
}
49
50
AVFilter
avfilter_vf_split
= {
51
.
name
=
"split"
,
52
.description =
NULL_IF_CONFIG_SMALL
(
"Pass on the input to two outputs."
),
53
54
.inputs = (
AVFilterPad
[]) {{ .name =
"default"
,
55
.type =
AVMEDIA_TYPE_VIDEO
,
56
.get_video_buffer=
avfilter_null_get_video_buffer
,
57
.start_frame =
start_frame
,
58
.draw_slice =
draw_slice
,
59
.end_frame =
end_frame
, },
60
{ .name =
NULL
}},
61
.outputs = (
AVFilterPad
[]) {{ .name =
"output1"
,
62
.type =
AVMEDIA_TYPE_VIDEO
, },
63
{ .name =
"output2"
,
64
.type =
AVMEDIA_TYPE_VIDEO
, },
65
{ .name =
NULL
}},
66
};