summaryrefslogtreecommitdiff
path: root/ffmpeg.c
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2013-03-10 14:07:29 +0100
committerNicolas George <nicolas.george@normalesup.org>2013-03-10 14:07:29 +0100
commitfb14e37dd0b68b67036662fb2382a11cc65ee2dd (patch)
tree157ff702cce82b6d85bc7c1a35b58b473c99949b /ffmpeg.c
parentb0012de420f20d5731b90af1f2a3e7093f2195d9 (diff)
ffmpeg: re-enable use of buffersrc flags.
AV_BUFFERSRC_FLAG_PUSH is necessary to detect closed streams.
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 6012a5c1de..7b6123a6b8 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -220,7 +220,9 @@ static void sub2video_push_ref(InputStream *ist, int64_t pts)
av_assert1(frame->data[0]);
ist->sub2video.last_pts = frame->pts = pts;
for (i = 0; i < ist->nb_filters; i++)
- av_buffersrc_write_frame(ist->filters[i]->filter, frame);
+ av_buffersrc_add_frame_flags(ist->filters[i]->filter, frame,
+ AV_BUFFERSRC_FLAG_KEEP_REF |
+ AV_BUFFERSRC_FLAG_PUSH);
}
static void sub2video_update(InputStream *ist, AVSubtitle *sub)
@@ -1641,8 +1643,9 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
(AVRational){1, ist->st->codec->sample_rate}, decoded_frame->nb_samples, &ist->filter_in_rescale_delta_last,
(AVRational){1, ist->st->codec->sample_rate});
for (i = 0; i < ist->nb_filters; i++)
- av_buffersrc_write_frame(ist->filters[i]->filter, decoded_frame);
- /* TODO re-add AV_BUFFERSRC_FLAG_PUSH */
+ av_buffersrc_add_frame_flags(ist->filters[i]->filter, decoded_frame,
+ AV_BUFFERSRC_FLAG_KEEP_REF |
+ AV_BUFFERSRC_FLAG_PUSH);
decoded_frame->pts = AV_NOPTS_VALUE;
@@ -1751,8 +1754,9 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
AV_BUFFERSRC_FLAG_NO_COPY |
AV_BUFFERSRC_FLAG_PUSH);
} else
- if(av_buffersrc_write_frame(ist->filters[i]->filter, decoded_frame)<0) {
- /* TODO add back AV_BUFFERSRC_FLAG_PUSH */
+ if(av_buffersrc_add_frame_flags(ist->filters[i]->filter, decoded_frame,
+ AV_BUFFERSRC_FLAG_KEEP_REF |
+ AV_BUFFERSRC_FLAG_PUSH)<0) {
av_log(NULL, AV_LOG_FATAL, "Failed to inject frame into filter network\n");
exit(1);
}