1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-06-14 22:15:12 +02:00

fftools/ffmpeg_mux: split of_write_packet()

It is currently called from two places:
- output_packet() in ffmpeg.c, which submits the newly available output
  packet to the muxer
- from of_check_init() in ffmpeg_mux.c after the header has been
  written, to flush the muxing queue

Some packets will thus be processed by this function twice, so it
requires an extra parameter to indicate the place it is called from and
avoid modifying some state twice.

This is fragile and hard to follow, so split this function into two.
Also rename of_write_packet() to of_submit_packet() to better reflect
its new purpose.
This commit is contained in:
Anton Khirnov
2021-12-12 13:37:37 +01:00
parent 6999a3cb18
commit ec00b005f9
3 changed files with 37 additions and 33 deletions

View File

@ -724,11 +724,11 @@ static void output_packet(OutputFile *of, AVPacket *pkt,
if (ret < 0)
goto finish;
while ((ret = av_bsf_receive_packet(ost->bsf_ctx, pkt)) >= 0)
of_write_packet(of, pkt, ost, 0);
of_submit_packet(of, pkt, ost);
if (ret == AVERROR(EAGAIN))
ret = 0;
} else if (!eof)
of_write_packet(of, pkt, ost, 0);
of_submit_packet(of, pkt, ost);
finish:
if (ret < 0 && ret != AVERROR_EOF) {