diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2013-03-10 14:07:29 +0100 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2013-03-10 14:07:29 +0100 |
commit | fb14e37dd0b68b67036662fb2382a11cc65ee2dd (patch) | |
tree | 157ff702cce82b6d85bc7c1a35b58b473c99949b | |
parent | b0012de420f20d5731b90af1f2a3e7093f2195d9 (diff) | |
download | ffmpeg-fb14e37dd0b68b67036662fb2382a11cc65ee2dd.tar.gz |
ffmpeg: re-enable use of buffersrc flags.
AV_BUFFERSRC_FLAG_PUSH is necessary to detect closed streams.
-rw-r--r-- | ffmpeg.c | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -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); } |