James Almer: > Signed-off-by: James Almer <jamr...@gmail.com> > --- > libavformat/matroskadec.c | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c > index 374831baa3..9fad78c78b 100644 > --- a/libavformat/matroskadec.c > +++ b/libavformat/matroskadec.c > @@ -365,6 +365,8 @@ typedef struct MatroskaDemuxContext { > /* byte position of the segment inside the stream */ > int64_t segment_start; > > + AVPacket *pkt; > + > /* the packet queue */ > AVPacketList *queue; > AVPacketList *queue_end; > @@ -2885,6 +2887,10 @@ static int matroska_read_header(AVFormatContext *s) > } > ebml_free(ebml_syntax, &ebml); > > + matroska->pkt = av_packet_alloc(); > + if (!matroska->pkt)
Missing AVERROR(ENOMEM). (I actually have an idea to completely remove the packet list from matroskadec.) > + goto fail; > + > /* The next thing is a segment. */ > pos = avio_tell(matroska->ctx->pb); > res = ebml_parse(matroska, matroska_segments, matroska); > @@ -2947,7 +2953,7 @@ static int matroska_read_header(AVFormatContext *s) > st->disposition |= AV_DISPOSITION_ATTACHED_PIC; > st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; > > - av_init_packet(pkt); > + av_packet_unref(pkt); > pkt->buf = attachments[j].bin.buf; > attachments[j].bin.buf = NULL; > pkt->data = attachments[j].bin.data; > @@ -3180,7 +3186,7 @@ static int matroska_parse_rm_audio(MatroskaDemuxContext > *matroska, > > while (track->audio.pkt_cnt) { > int ret; > - AVPacket pktl, *pkt = &pktl; > + AVPacket *pkt = matroska->pkt; > > ret = av_new_packet(pkt, a); > if (ret < 0) { > @@ -3317,7 +3323,7 @@ static int matroska_parse_webvtt(MatroskaDemuxContext > *matroska, > uint64_t duration, > int64_t pos) > { > - AVPacket pktl, *pkt = &pktl; > + AVPacket *pkt = matroska->pkt; > uint8_t *id, *settings, *text, *buf; > int id_len, settings_len, text_len; > uint8_t *p, *q; > @@ -3434,7 +3440,7 @@ static int matroska_parse_frame(MatroskaDemuxContext > *matroska, > { > uint8_t *pkt_data = data; > int res = 0; > - AVPacket pktl, *pkt = &pktl; > + AVPacket *pkt = matroska->pkt; > > if (st->codecpar->codec_id == AV_CODEC_ID_WAVPACK) { > res = matroska_parse_wavpack(track, &pkt_data, &pkt_size); > @@ -3464,7 +3470,7 @@ static int matroska_parse_frame(MatroskaDemuxContext > *matroska, > if (!pkt_size && !additional_size) > goto no_output; > > - av_init_packet(pkt); > + av_packet_unref(pkt); > if (!buf) > pkt->buf = av_buffer_create(pkt_data, pkt_size + > AV_INPUT_BUFFER_PADDING_SIZE, > NULL, NULL, 0); > @@ -3838,6 +3844,7 @@ static int matroska_read_close(AVFormatContext *s) > int n; > > matroska_clear_queue(matroska); > + av_packet_free(&matroska->pkt); > > for (n = 0; n < matroska->tracks.nb_elem; n++) > if (tracks[n].type == MATROSKA_TRACK_TYPE_AUDIO) > _______________________________________________ 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".