diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2019-11-14 15:06:27 +0100 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-11-14 12:02:51 -0300 |
commit | f01f9f179389befe9bce7639088e453146a39915 (patch) | |
tree | 009b87646b8b68c3c82158a2778db8bc2a6e8ee2 | |
parent | 41b05b849f215b03eeb9e3608571ba47de64182a (diff) | |
download | ffmpeg-f01f9f179389befe9bce7639088e453146a39915.tar.gz |
avformat/av1dec: Redo flushing of bsf
The current approach has two different calls to av_bsf_send_packet():
A normal one, sending a packet; and an extraordinary one just for
flushing. These can be unified into one by making use of the newly
documented fact that av_bsf_send_packet() allows to signal flushing via
empty packets (i.e. packets without data and side-data).
This also fixes CID 1455685 which resulted from the fact that the call
for flushing was not checked given that it couldn't fail.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r-- | libavformat/av1dec.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/libavformat/av1dec.c b/libavformat/av1dec.c index a0cad55668..5e7a057cb7 100644 --- a/libavformat/av1dec.c +++ b/libavformat/av1dec.c @@ -193,7 +193,6 @@ retry: if (avio_feof(s->pb)) { if (c->temporal_unit_size || c->frame_unit_size) return AVERROR(EIO); - av_bsf_send_packet(c->bsf, NULL); goto end; } @@ -222,6 +221,7 @@ retry: c->temporal_unit_size -= obu_unit_size + len; c->frame_unit_size -= obu_unit_size + len; +end: ret = av_bsf_send_packet(c->bsf, pkt); if (ret < 0) { av_log(s, AV_LOG_ERROR, "Failed to send packet to " @@ -229,7 +229,6 @@ retry: return ret; } -end: ret = av_bsf_receive_packet(c->bsf, pkt); if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) av_log(s, AV_LOG_ERROR, "av1_frame_merge filter failed to " |