Signed-off-by: James Almer <jamr...@gmail.com> --- libavformat/avienc.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/libavformat/avienc.c b/libavformat/avienc.c index 1b2cb529b9..58bd081fcb 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -85,6 +85,8 @@ typedef struct AVIStream { int64_t last_dts; + AVPacket *empty_packet; + AVIIndex indexes; int64_t strh_flags_offset; @@ -275,9 +277,17 @@ static int avi_write_header(AVFormatContext *s) } for (n = 0; n < s->nb_streams; n++) { + AVIStream *avist; + s->streams[n]->priv_data = av_mallocz(sizeof(AVIStream)); if (!s->streams[n]->priv_data) return AVERROR(ENOMEM); + + avist = s->streams[n]->priv_data; + avist->empty_packet = av_packet_alloc(); + if (!avist->empty_packet) + return AVERROR(ENOMEM); + avist->empty_packet->stream_index = n; } /* header list */ @@ -745,18 +755,13 @@ static int write_skip_frames(AVFormatContext *s, int stream_index, int64_t dts) ff_dlog(s, "dts:%s packet_count:%d stream_index:%d\n", av_ts2str(dts), avist->packet_count, stream_index); while (par->block_align == 0 && dts != AV_NOPTS_VALUE && dts > avist->packet_count && par->codec_id != AV_CODEC_ID_XSUB && avist->packet_count) { - AVPacket empty_packet; if (dts - avist->packet_count > 60000) { av_log(s, AV_LOG_ERROR, "Too large number of skipped frames %"PRId64" > 60000\n", dts - avist->packet_count); return AVERROR(EINVAL); } - av_init_packet(&empty_packet); - empty_packet.size = 0; - empty_packet.data = NULL; - empty_packet.stream_index = stream_index; - avi_write_packet_internal(s, &empty_packet); + avi_write_packet_internal(s, avist->empty_packet); ff_dlog(s, "dup dts:%s packet_count:%d\n", av_ts2str(dts), avist->packet_count); } @@ -985,6 +990,7 @@ static void avi_deinit(AVFormatContext *s) for (int j = 0; j < avist->indexes.ents_allocated / AVI_INDEX_CLUSTER_SIZE; j++) av_freep(&avist->indexes.cluster[j]); av_freep(&avist->indexes.cluster); + av_packet_free(&avist->empty_packet); avist->indexes.ents_allocated = avist->indexes.entry = 0; } } -- 2.30.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".