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 <andreas.rheinhardt@gmail.com>tags/n4.3
@@ -495,15 +495,12 @@ int ff_framehash_write_header(AVFormatContext *s); | |||||
int ff_read_packet(AVFormatContext *s, AVPacket *pkt); | 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 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 | * @param flush 1 if no further packets are available as input and all | ||||
* remaining packets should be output | * remaining packets should be output | ||||
* @return 1 if a packet was output, 0 if no packet could be output, | * @return 1 if a packet was output, 0 if no packet could be output, | ||||
@@ -1158,7 +1158,7 @@ int ff_interleaved_peek(AVFormatContext *s, int stream, | |||||
/** | /** | ||||
* Interleave an AVPacket correctly so it can be muxed. | * Interleave an AVPacket correctly so it can be muxed. | ||||
* @param out the interleaved packet will be output here | * @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 | * @param flush 1 if no further packets are available as input and all | ||||
* remaining packets should be output | * remaining packets should be output | ||||
* @return 1 if a packet was output, 0 if no packet could 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 (;; ) { | for (;; ) { | ||||
AVPacket opkt; | AVPacket opkt; | ||||
int ret = interleave_packet(s, &opkt, pkt, flush); | int ret = interleave_packet(s, &opkt, pkt, flush); | ||||
if (pkt) { | |||||
memset(pkt, 0, sizeof(*pkt)); | |||||
av_init_packet(pkt); | |||||
pkt = NULL; | |||||
} | |||||
if (ret <= 0) | if (ret <= 0) | ||||
return ret; | return ret; | ||||
pkt = NULL; | |||||
ret = write_packet(s, &opkt); | ret = write_packet(s, &opkt); | ||||
av_packet_unref(&opkt); | av_packet_unref(&opkt); | ||||