Commit fb14e37d authored by Nicolas George's avatar Nicolas George

ffmpeg: re-enable use of buffersrc flags.

AV_BUFFERSRC_FLAG_PUSH is necessary to detect closed streams.
parent b0012de4
...@@ -220,7 +220,9 @@ static void sub2video_push_ref(InputStream *ist, int64_t pts) ...@@ -220,7 +220,9 @@ static void sub2video_push_ref(InputStream *ist, int64_t pts)
av_assert1(frame->data[0]); av_assert1(frame->data[0]);
ist->sub2video.last_pts = frame->pts = pts; ist->sub2video.last_pts = frame->pts = pts;
for (i = 0; i < ist->nb_filters; i++) 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) static void sub2video_update(InputStream *ist, AVSubtitle *sub)
...@@ -1641,8 +1643,9 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output) ...@@ -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}, decoded_frame->nb_samples, &ist->filter_in_rescale_delta_last,
(AVRational){1, ist->st->codec->sample_rate}); (AVRational){1, ist->st->codec->sample_rate});
for (i = 0; i < ist->nb_filters; i++) for (i = 0; i < ist->nb_filters; i++)
av_buffersrc_write_frame(ist->filters[i]->filter, decoded_frame); av_buffersrc_add_frame_flags(ist->filters[i]->filter, decoded_frame,
/* TODO re-add AV_BUFFERSRC_FLAG_PUSH */ AV_BUFFERSRC_FLAG_KEEP_REF |
AV_BUFFERSRC_FLAG_PUSH);
decoded_frame->pts = AV_NOPTS_VALUE; decoded_frame->pts = AV_NOPTS_VALUE;
...@@ -1751,8 +1754,9 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output) ...@@ -1751,8 +1754,9 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
AV_BUFFERSRC_FLAG_NO_COPY | AV_BUFFERSRC_FLAG_NO_COPY |
AV_BUFFERSRC_FLAG_PUSH); AV_BUFFERSRC_FLAG_PUSH);
} else } else
if(av_buffersrc_write_frame(ist->filters[i]->filter, decoded_frame)<0) { if(av_buffersrc_add_frame_flags(ist->filters[i]->filter, decoded_frame,
/* TODO add back AV_BUFFERSRC_FLAG_PUSH */ AV_BUFFERSRC_FLAG_KEEP_REF |
AV_BUFFERSRC_FLAG_PUSH)<0) {
av_log(NULL, AV_LOG_FATAL, "Failed to inject frame into filter network\n"); av_log(NULL, AV_LOG_FATAL, "Failed to inject frame into filter network\n");
exit(1); exit(1);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment