[FFmpeg-devel] [PATCH v5 2/2] lavf/mpegenc: fix termination on error conditions
Nicolas Gaullier
nicolas.gaullier at cji.paris
Sat Mar 26 00:54:52 EET 2022
Avoid an infinite 'retry' loop in output_packet when flushing.
Signed-off-by: Nicolas Gaullier <nicolas.gaullier at cji.paris>
---
libavformat/mpegenc.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c
index e0955a7d33..e113a42867 100644
--- a/libavformat/mpegenc.c
+++ b/libavformat/mpegenc.c
@@ -1002,7 +1002,7 @@ static int output_packet(AVFormatContext *ctx, int flush)
MpegMuxContext *s = ctx->priv_data;
AVStream *st;
StreamInfo *stream;
- int i, avail_space = 0, es_size, trailer_size;
+ int i, has_avail_data = 0, avail_space = 0, es_size, trailer_size;
int best_i = -1;
int best_score = INT_MIN;
int ignore_constraints = 0;
@@ -1028,6 +1028,7 @@ retry:
if (avail_data == 0)
continue;
av_assert0(avail_data > 0);
+ has_avail_data = 1;
if (space < s->packet_size && !ignore_constraints)
continue;
@@ -1048,6 +1049,8 @@ retry:
int64_t best_dts = INT64_MAX;
int has_premux = 0;
+ if (!has_avail_data)
+ return 0;
for (i = 0; i < ctx->nb_streams; i++) {
AVStream *st = ctx->streams[i];
StreamInfo *stream = st->priv_data;
--
2.34.0.windows.1
More information about the ffmpeg-devel
mailing list