aboutsummaryrefslogtreecommitdiffstats
path: root/fftools/ffmpeg_mux.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2023-07-13 13:34:32 +0200
committerAnton Khirnov <anton@khirnov.net>2023-07-20 20:30:13 +0200
commite0f4259689357182e8d555d093e8843f7bf19e5f (patch)
treec48dfdf554375dd1474f0d746dd7a86140df4ccf /fftools/ffmpeg_mux.c
parent2b4afe816916192148875fe4d9087fd2c03d05a6 (diff)
downloadffmpeg-e0f4259689357182e8d555d093e8843f7bf19e5f.tar.gz
fftools/ffmpeg_mux: return errors from of_output_packet() instead of aborting
Diffstat (limited to 'fftools/ffmpeg_mux.c')
-rw-r--r--fftools/ffmpeg_mux.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c
index a6cc824496..24cdf00469 100644
--- a/fftools/ffmpeg_mux.c
+++ b/fftools/ffmpeg_mux.c
@@ -330,7 +330,7 @@ static int submit_packet(Muxer *mux, AVPacket *pkt, OutputStream *ost)
return 0;
}
-void of_output_packet(OutputFile *of, OutputStream *ost, AVPacket *pkt)
+int of_output_packet(OutputFile *of, OutputStream *ost, AVPacket *pkt)
{
Muxer *mux = mux_from_of(of);
MuxStream *ms = ms_from_ost(ost);
@@ -359,7 +359,7 @@ void of_output_packet(OutputFile *of, OutputStream *ost, AVPacket *pkt)
while (!bsf_eof) {
ret = av_bsf_receive_packet(ms->bsf_ctx, ms->bsf_pkt);
if (ret == AVERROR(EAGAIN))
- return;
+ return 0;
else if (ret == AVERROR_EOF)
bsf_eof = 1;
else if (ret < 0) {
@@ -377,16 +377,14 @@ void of_output_packet(OutputFile *of, OutputStream *ost, AVPacket *pkt)
goto mux_fail;
}
- return;
+ return 0;
mux_fail:
err_msg = "submitting a packet to the muxer";
fail:
av_log(ost, AV_LOG_ERROR, "Error %s\n", err_msg);
- if (exit_on_error)
- exit_program(1);
-
+ return exit_on_error ? ret : 0;
}
int of_streamcopy(OutputStream *ost, const AVPacket *pkt, int64_t dts)
@@ -405,10 +403,8 @@ int of_streamcopy(OutputStream *ost, const AVPacket *pkt, int64_t dts)
pkt = NULL;
// EOF: flush output bitstream filters.
- if (!pkt) {
- of_output_packet(of, ost, NULL);
- return 0;
- }
+ if (!pkt)
+ return of_output_packet(of, ost, NULL);
if (!ms->streamcopy_started && !(pkt->flags & AV_PKT_FLAG_KEY) &&
!ms->copy_initial_nonkeyframes)
@@ -461,7 +457,9 @@ int of_streamcopy(OutputStream *ost, const AVPacket *pkt, int64_t dts)
}
}
- of_output_packet(of, ost, opkt);
+ ret = of_output_packet(of, ost, opkt);
+ if (ret < 0)
+ return ret;
ms->streamcopy_started = 1;