Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
beeba916
Commit
beeba916
authored
Aug 19, 2012
by
Nicolas George
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavfi: add a closed field to AVFilerLink.
It will help forward errors and maintain consistency.
parent
ac07f941
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
36 additions
and
0 deletions
+36
-0
audio.c
libavfilter/audio.c
+5
-0
avfilter.c
libavfilter/avfilter.c
+9
-0
avfilter.h
libavfilter/avfilter.h
+17
-0
video.c
libavfilter/video.c
+5
-0
No files found.
libavfilter/audio.c
View file @
beeba916
...
...
@@ -172,6 +172,11 @@ int ff_filter_samples_framed(AVFilterLink *link, AVFilterBufferRef *samplesref)
FF_TPRINTF_START
(
NULL
,
filter_samples
);
ff_tlog_link
(
NULL
,
link
,
1
);
if
(
link
->
closed
)
{
avfilter_unref_buffer
(
samplesref
);
return
AVERROR_EOF
;
}
if
(
!
(
filter_samples
=
dst
->
filter_samples
))
filter_samples
=
default_filter_samples
;
...
...
libavfilter/avfilter.c
View file @
beeba916
...
...
@@ -159,6 +159,11 @@ void avfilter_link_free(AVFilterLink **link)
av_freep
(
link
);
}
void
avfilter_link_set_closed
(
AVFilterLink
*
link
,
int
closed
)
{
link
->
closed
=
closed
;
}
int
avfilter_insert_filter
(
AVFilterLink
*
link
,
AVFilterContext
*
filt
,
unsigned
filt_srcpad_idx
,
unsigned
filt_dstpad_idx
)
{
...
...
@@ -325,6 +330,8 @@ int ff_request_frame(AVFilterLink *link)
int
ret
=
-
1
;
FF_TPRINTF_START
(
NULL
,
request_frame
);
ff_tlog_link
(
NULL
,
link
,
1
);
if
(
link
->
closed
)
return
AVERROR_EOF
;
if
(
link
->
srcpad
->
request_frame
)
ret
=
link
->
srcpad
->
request_frame
(
link
);
else
if
(
link
->
src
->
inputs
[
0
])
...
...
@@ -335,6 +342,8 @@ int ff_request_frame(AVFilterLink *link)
ff_filter_samples_framed
(
link
,
pbuf
);
return
0
;
}
if
(
ret
==
AVERROR_EOF
)
link
->
closed
=
1
;
return
ret
;
}
...
...
libavfilter/avfilter.h
View file @
beeba916
...
...
@@ -697,6 +697,18 @@ struct AVFilterLink {
* by the filters.
*/
AVFilterBufferRef
*
cur_buf_copy
;
/**
* True if the link is closed.
* If set, all attemps of start_frame, filter_samples or request_frame
* will fail with AVERROR_EOF, and if necessary the reference will be
* destroyed.
* If request_frame returns AVERROR_EOF, this flag is set on the
* corresponding link.
* It can be set also be set by either the source or the destination
* filter.
*/
int
closed
;
};
/**
...
...
@@ -716,6 +728,11 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad,
*/
void
avfilter_link_free
(
AVFilterLink
**
link
);
/**
* Set the closed field of a link.
*/
void
avfilter_link_set_closed
(
AVFilterLink
*
link
,
int
closed
);
/**
* Negotiate the media format, dimensions, etc of all inputs to a filter.
*
...
...
libavfilter/video.c
View file @
beeba916
...
...
@@ -248,6 +248,11 @@ int ff_start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
FF_TPRINTF_START
(
NULL
,
start_frame
);
ff_tlog_link
(
NULL
,
link
,
0
);
ff_tlog
(
NULL
,
" "
);
ff_tlog_ref
(
NULL
,
picref
,
1
);
if
(
link
->
closed
)
{
avfilter_unref_buffer
(
picref
);
return
AVERROR_EOF
;
}
if
(
!
(
start_frame
=
dst
->
start_frame
))
start_frame
=
default_start_frame
;
...
...
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