From 6ce5dd228c40159c774543425dd1f94a5d670542 Mon Sep 17 00:00:00 2001 From: James Almer Date: Tue, 27 Feb 2018 00:09:47 -0300 Subject: avformat/mxg: return reference counted packets Reviewed-by: wm4 Signed-off-by: James Almer --- libavformat/mxg.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'libavformat/mxg.c') diff --git a/libavformat/mxg.c b/libavformat/mxg.c index 6fbf99cfa3..fe5879ecf0 100644 --- a/libavformat/mxg.c +++ b/libavformat/mxg.c @@ -169,11 +169,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt) continue; } + size = mxg->buffer_ptr - mxg->soi_ptr; + ret = av_new_packet(pkt, size); + if (ret < 0) + return ret; + memcpy(pkt->data, mxg->soi_ptr, size); + pkt->pts = pkt->dts = mxg->dts; pkt->stream_index = 0; - pkt->buf = NULL; - pkt->size = mxg->buffer_ptr - mxg->soi_ptr; - pkt->data = mxg->soi_ptr; if (mxg->soi_ptr - mxg->buffer > mxg->cache_size) { if (mxg->cache_size > 0) { @@ -206,12 +209,14 @@ static int mxg_read_packet(AVFormatContext *s, AVPacket *pkt) mxg->buffer_ptr += size; if (marker == APP13 && size >= 16) { /* audio data */ + ret = av_new_packet(pkt, size - 14); + if (ret < 0) + return ret; + memcpy(pkt->data, startmarker_ptr + 16, size - 14); + /* time (GMT) of first sample in usec since 1970, little-endian */ pkt->pts = pkt->dts = AV_RL64(startmarker_ptr + 8); pkt->stream_index = 1; - pkt->buf = NULL; - pkt->size = size - 14; - pkt->data = startmarker_ptr + 16; if (startmarker_ptr - mxg->buffer > mxg->cache_size) { if (mxg->cache_size > 0) { -- cgit v1.2.3