From 00aa6dea3f3c1f15e55ba7d0dd99071065b7a3c7 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Sat, 11 Apr 2020 13:48:50 +0200 Subject: [PATCH] avformat/mux: Remove redundant resetting Now that ff_interleave_add_packet() always returns blank packets, the input packet to ff_interleave_packet_per_dts() will always be blank on return as well (if supplied) and the same goes for interleave_packet() in mux.c. Document these facts and remove the redundant resetting that happened in av_interleaved_write_frame(). The last reference to the (long removed) destruct field that AVPackets once had has been removed as well when updating the documentation of ff_interleave_packet_per_dts(). Signed-off-by: Andreas Rheinhardt --- libavformat/internal.h | 11 ++++------- libavformat/mux.c | 9 +++------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/libavformat/internal.h b/libavformat/internal.h index e9d7d6754a..7e4284b217 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -495,15 +495,12 @@ int ff_framehash_write_header(AVFormatContext *s); int ff_read_packet(AVFormatContext *s, AVPacket *pkt); /** - * Interleave a packet per dts in an output media file. + * Interleave an AVPacket per dts so it can be muxed. * - * Packets with pkt->destruct == av_destruct_packet will be freed inside this - * function, so they cannot be used after it. Note that calling av_packet_unref() - * on them is still safe. - * - * @param s media file handle + * @param s an AVFormatContext for output. pkt resp. out will be added to + * resp. taken from its packet buffer. * @param out the interleaved packet will be output here - * @param pkt the input packet + * @param pkt the input packet; will be blank on return if not NULL * @param flush 1 if no further packets are available as input and all * remaining packets should be output * @return 1 if a packet was output, 0 if no packet could be output, diff --git a/libavformat/mux.c b/libavformat/mux.c index 92e5636dbe..5fc42d57b6 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -1158,7 +1158,7 @@ int ff_interleaved_peek(AVFormatContext *s, int stream, /** * Interleave an AVPacket correctly so it can be muxed. * @param out the interleaved packet will be output here - * @param in the input packet + * @param in the input packet; will always be blank on return if not NULL * @param flush 1 if no further packets are available as input and all * remaining packets should be output * @return 1 if a packet was output, 0 if no packet could be output, @@ -1213,14 +1213,11 @@ int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt) for (;; ) { AVPacket opkt; int ret = interleave_packet(s, &opkt, pkt, flush); - if (pkt) { - memset(pkt, 0, sizeof(*pkt)); - av_init_packet(pkt); - pkt = NULL; - } if (ret <= 0) return ret; + pkt = NULL; + ret = write_packet(s, &opkt); av_packet_unref(&opkt);