summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-06-03 02:59:10 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-06-03 02:59:14 +0200
commit2976e2a102cd8202e0f7b9e601d62354b7ad1c72 (patch)
treeb0b2663c448af7ee268e74414f62e94bbefcc581
parentd2021f74ed5e14d2675065550ff95a225c0b60cf (diff)
parent50a4d076ce630db9b5b72c3e6348970e13ae1fb6 (diff)
Merge remote-tracking branch 'cigaes/master'
* cigaes/master: lavfi/trim: mark link closed on EOF. ffmpeg: ignore EOF when pushing frames to filters. Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--ffmpeg.c6
-rw-r--r--libavfilter/trim.c4
2 files changed, 7 insertions, 3 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 886039b485..c9ac577dd2 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1623,6 +1623,8 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
f = decoded_frame;
err = av_buffersrc_add_frame_flags(ist->filters[i]->filter, f,
AV_BUFFERSRC_FLAG_PUSH);
+ if (err == AVERROR_EOF)
+ err = 0; /* ignore */
if (err < 0)
break;
}
@@ -1726,7 +1728,9 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
} else
f = decoded_frame;
ret = av_buffersrc_add_frame_flags(ist->filters[i]->filter, f, AV_BUFFERSRC_FLAG_PUSH);
- if (ret < 0) {
+ if (ret == AVERROR_EOF) {
+ ret = 0; /* ignore */
+ } else if (ret < 0) {
av_log(NULL, AV_LOG_FATAL,
"Failed to inject frame into filter network: %s\n", av_err2str(ret));
exit(1);
diff --git a/libavfilter/trim.c b/libavfilter/trim.c
index 96c30b4d76..29c7c50178 100644
--- a/libavfilter/trim.c
+++ b/libavfilter/trim.c
@@ -162,7 +162,7 @@ static int trim_filter_frame(AVFilterLink *inlink, AVFrame *frame)
drop = 0;
if (drop) {
- s->eof = 1;
+ s->eof = inlink->closed = 1;
goto drop;
}
}
@@ -296,7 +296,7 @@ static int atrim_filter_frame(AVFilterLink *inlink, AVFrame *frame)
}
if (drop) {
- s->eof = 1;
+ s->eof = inlink->closed = 1;
goto drop;
}
}