Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
external
ffmpeg
Commits
e9b992d0
Commit
e9b992d0
authored
Jul 14, 2012
by
Anton Khirnov
Browse files
lavfi: add error handling to draw_slice().
parent
ebc8d974
Changes
30
Hide whitespace changes
Inline
Side-by-side
libavfilter/avfilter.h
View file @
e9b992d0
...
...
@@ -295,8 +295,10 @@ struct AVFilterPad {
* and should do its processing.
*
* Input video pads only.
*
* @return >= 0 on success, a negative AVERROR on error.
*/
void
(
*
draw_slice
)(
AVFilterLink
*
link
,
int
y
,
int
height
,
int
slice_dir
);
int
(
*
draw_slice
)(
AVFilterLink
*
link
,
int
y
,
int
height
,
int
slice_dir
);
/**
* Samples filtering callback. This is where a filter receives audio data
...
...
libavfilter/fifo.c
View file @
e9b992d0
...
...
@@ -100,7 +100,10 @@ static void queue_pop(FifoContext *s)
static
void
end_frame
(
AVFilterLink
*
inlink
)
{
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
}
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
/**
* Move data pointers and pts offset samples forward.
...
...
libavfilter/internal.h
View file @
e9b992d0
...
...
@@ -106,8 +106,10 @@ struct AVFilterPad {
* and should do its processing.
*
* Input video pads only.
*
* @return >= 0 on success, a negative AVERROR on error.
*/
void
(
*
draw_slice
)(
AVFilterLink
*
link
,
int
y
,
int
height
,
int
slice_dir
);
int
(
*
draw_slice
)(
AVFilterLink
*
link
,
int
y
,
int
height
,
int
slice_dir
);
/**
* Samples filtering callback. This is where a filter receives audio data
...
...
libavfilter/split.c
View file @
e9b992d0
...
...
@@ -77,13 +77,17 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref)
return
ret
;
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
AVFilterContext
*
ctx
=
inlink
->
dst
;
int
i
;
int
i
,
ret
=
0
;
for
(
i
=
0
;
i
<
ctx
->
nb_outputs
;
i
++
)
ff_draw_slice
(
ctx
->
outputs
[
i
],
y
,
h
,
slice_dir
);
for
(
i
=
0
;
i
<
ctx
->
nb_outputs
;
i
++
)
{
ret
=
ff_draw_slice
(
ctx
->
outputs
[
i
],
y
,
h
,
slice_dir
);
if
(
ret
<
0
)
break
;
}
return
ret
;
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
...
...
libavfilter/vf_blackframe.c
View file @
e9b992d0
...
...
@@ -74,7 +74,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
return
0
;
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
AVFilterContext
*
ctx
=
inlink
->
dst
;
BlackFrameContext
*
blackframe
=
ctx
->
priv
;
...
...
@@ -88,7 +88,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
p
+=
picref
->
linesize
[
0
];
}
ff_draw_slice
(
ctx
->
outputs
[
0
],
y
,
h
,
slice_dir
);
return
ff_draw_slice
(
ctx
->
outputs
[
0
],
y
,
h
,
slice_dir
);
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
...
...
libavfilter/vf_boxblur.c
View file @
e9b992d0
...
...
@@ -306,7 +306,7 @@ static void vblur(uint8_t *dst, int dst_linesize, const uint8_t *src, int src_li
h
,
radius
,
power
,
temp
);
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y0
,
int
h0
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y0
,
int
h0
,
int
slice_dir
)
{
AVFilterContext
*
ctx
=
inlink
->
dst
;
BoxBlurContext
*
boxblur
=
ctx
->
priv
;
...
...
@@ -330,7 +330,7 @@ static void draw_slice(AVFilterLink *inlink, int y0, int h0, int slice_dir)
w
[
plane
],
h
[
plane
],
boxblur
->
radius
[
plane
],
boxblur
->
power
[
plane
],
boxblur
->
temp
);
ff_draw_slice
(
outlink
,
y0
,
h0
,
slice_dir
);
return
ff_draw_slice
(
outlink
,
y0
,
h0
,
slice_dir
);
}
AVFilter
avfilter_vf_boxblur
=
{
...
...
libavfilter/vf_crop.c
View file @
e9b992d0
...
...
@@ -297,13 +297,13 @@ static int start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
return
ff_start_frame
(
link
->
dst
->
outputs
[
0
],
ref2
);
}
static
void
draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
AVFilterContext
*
ctx
=
link
->
dst
;
CropContext
*
crop
=
ctx
->
priv
;
if
(
y
>=
crop
->
y
+
crop
->
h
||
y
+
h
<=
crop
->
y
)
return
;
return
0
;
if
(
y
<
crop
->
y
)
{
h
-=
crop
->
y
-
y
;
...
...
@@ -312,7 +312,7 @@ static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir)
if
(
y
+
h
>
crop
->
y
+
crop
->
h
)
h
=
crop
->
y
+
crop
->
h
-
y
;
ff_draw_slice
(
ctx
->
outputs
[
0
],
y
-
crop
->
y
,
h
,
slice_dir
);
return
ff_draw_slice
(
ctx
->
outputs
[
0
],
y
-
crop
->
y
,
h
,
slice_dir
);
}
static
void
end_frame
(
AVFilterLink
*
link
)
...
...
libavfilter/vf_delogo.c
View file @
e9b992d0
...
...
@@ -245,7 +245,10 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
return
0
;
}
static
void
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
{
...
...
libavfilter/vf_drawbox.c
View file @
e9b992d0
...
...
@@ -94,7 +94,7 @@ static int config_input(AVFilterLink *inlink)
return
0
;
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y0
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y0
,
int
h
,
int
slice_dir
)
{
DrawBoxContext
*
drawbox
=
inlink
->
dst
->
priv
;
int
plane
,
x
,
y
,
xb
=
drawbox
->
x
,
yb
=
drawbox
->
y
;
...
...
@@ -120,7 +120,7 @@ static void draw_slice(AVFilterLink *inlink, int y0, int h, int slice_dir)
}
}
ff_draw_slice
(
inlink
->
dst
->
outputs
[
0
],
y0
,
h
,
1
);
return
ff_draw_slice
(
inlink
->
dst
->
outputs
[
0
],
y0
,
h
,
1
);
}
AVFilter
avfilter_vf_drawbox
=
{
...
...
libavfilter/vf_drawtext.c
View file @
e9b992d0
...
...
@@ -791,7 +791,10 @@ static int draw_text(AVFilterContext *ctx, AVFilterBufferRef *picref,
return
0
;
}
static
void
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
inline
int
normalize_double
(
int
*
n
,
double
d
)
{
...
...
libavfilter/vf_fade.c
View file @
e9b992d0
...
...
@@ -97,7 +97,7 @@ static int config_props(AVFilterLink *inlink)
return
0
;
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
FadeContext
*
fade
=
inlink
->
dst
->
priv
;
AVFilterBufferRef
*
outpic
=
inlink
->
cur_buf
;
...
...
@@ -134,7 +134,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
}
}
ff_draw_slice
(
inlink
->
dst
->
outputs
[
0
],
y
,
h
,
slice_dir
);
return
ff_draw_slice
(
inlink
->
dst
->
outputs
[
0
],
y
,
h
,
slice_dir
);
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
...
...
libavfilter/vf_fieldorder.c
View file @
e9b992d0
...
...
@@ -144,7 +144,7 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
return
0
;
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
AVFilterContext
*
ctx
=
inlink
->
dst
;
FieldOrderContext
*
fieldorder
=
ctx
->
priv
;
...
...
@@ -158,8 +158,9 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
* and that complexity will be added later */
if
(
!
inpicref
->
video
->
interlaced
||
inpicref
->
video
->
top_field_first
==
fieldorder
->
dst_tff
)
{
ff_draw_slice
(
outlink
,
y
,
h
,
slice_dir
);
return
ff_draw_slice
(
outlink
,
y
,
h
,
slice_dir
);
}
return
0
;
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
...
...
libavfilter/vf_fps.c
View file @
e9b992d0
...
...
@@ -248,8 +248,9 @@ static int null_start_frame(AVFilterLink *link, AVFilterBufferRef *buf)
return
0
;
}
static
void
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
AVFilter
avfilter_vf_fps
=
{
...
...
libavfilter/vf_frei0r.c
View file @
e9b992d0
...
...
@@ -340,7 +340,10 @@ static int query_formats(AVFilterContext *ctx)
return
0
;
}
static
void
null_draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
}
static
int
null_draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
{
...
...
libavfilter/vf_gradfun.c
View file @
e9b992d0
...
...
@@ -210,7 +210,10 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
return
0
;
}
static
void
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
{
...
...
libavfilter/vf_hflip.c
View file @
e9b992d0
...
...
@@ -81,7 +81,7 @@ static int config_props(AVFilterLink *inlink)
return
0
;
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
FlipContext
*
flip
=
inlink
->
dst
->
priv
;
AVFilterBufferRef
*
inpic
=
inlink
->
cur_buf
;
...
...
@@ -142,7 +142,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
}
}
ff_draw_slice
(
inlink
->
dst
->
outputs
[
0
],
y
,
h
,
slice_dir
);
return
ff_draw_slice
(
inlink
->
dst
->
outputs
[
0
],
y
,
h
,
slice_dir
);
}
AVFilter
avfilter_vf_hflip
=
{
...
...
libavfilter/vf_hqdn3d.c
View file @
e9b992d0
...
...
@@ -290,7 +290,10 @@ static int config_input(AVFilterLink *inlink)
return
0
;
}
static
void
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
{
...
...
libavfilter/vf_libopencv.c
View file @
e9b992d0
...
...
@@ -67,7 +67,10 @@ static int query_formats(AVFilterContext *ctx)
return
0
;
}
static
void
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
}
static
int
null_draw_slice
(
AVFilterLink
*
link
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
typedef
struct
{
const
char
*
name
;
...
...
libavfilter/vf_lut.c
View file @
e9b992d0
...
...
@@ -294,7 +294,7 @@ static int config_props(AVFilterLink *inlink)
return
0
;
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
AVFilterContext
*
ctx
=
inlink
->
dst
;
LutContext
*
lut
=
ctx
->
priv
;
...
...
@@ -339,7 +339,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
}
}
ff_draw_slice
(
outlink
,
y
,
h
,
slice_dir
);
return
ff_draw_slice
(
outlink
,
y
,
h
,
slice_dir
);
}
static
const
AVFilterPad
inputs
[]
=
{
...
...
libavfilter/vf_overlay.c
View file @
e9b992d0
...
...
@@ -320,7 +320,7 @@ static void blend_slice(AVFilterContext *ctx,
}
}
static
void
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
static
int
draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
AVFilterContext
*
ctx
=
inlink
->
dst
;
AVFilterLink
*
outlink
=
ctx
->
outputs
[
0
];
...
...
@@ -334,7 +334,7 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
over
->
overpicref
->
video
->
w
,
over
->
overpicref
->
video
->
h
,
y
,
outpicref
->
video
->
w
,
h
);
}
ff_draw_slice
(
outlink
,
y
,
h
,
slice_dir
);
return
ff_draw_slice
(
outlink
,
y
,
h
,
slice_dir
);
}
static
void
end_frame
(
AVFilterLink
*
inlink
)
...
...
@@ -342,7 +342,10 @@ static void end_frame(AVFilterLink *inlink)
ff_end_frame
(
inlink
->
dst
->
outputs
[
0
]);
}
static
void
null_draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
}
static
int
null_draw_slice
(
AVFilterLink
*
inlink
,
int
y
,
int
h
,
int
slice_dir
)
{
return
0
;
}
static
void
null_end_frame
(
AVFilterLink
*
inlink
)
{
}
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment