Signed-off-by: James Almer <jamr...@gmail.com> --- libavformat/internal.h | 3 +-- libavformat/options.c | 6 +++++- libavformat/utils.c | 21 ++++++++++++--------- 3 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/libavformat/internal.h b/libavformat/internal.h index 3182409dfb..a0649956e8 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -85,8 +85,7 @@ struct AVFormatInternal { * be identified, as parsing cannot be done without knowing the * codec. */ - struct PacketListEntry *raw_packet_buffer; - struct PacketListEntry *raw_packet_buffer_end; + struct AVPacketList *raw_packet_buffer; /** * Packets split by the parser get queued here. */ diff --git a/libavformat/options.c b/libavformat/options.c index 9fe1500cee..ee7a533aa0 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -221,7 +221,11 @@ AVFormatContext *avformat_alloc_context(void) return NULL; } internal->packet_buffer = av_packet_list_alloc(); - if (!internal->packet_buffer) { + internal->raw_packet_buffer = av_packet_list_alloc(); + if (!internal->packet_buffer || + !internal->raw_packet_buffer) { + av_packet_list_free(&internal->packet_buffer); + av_packet_list_free(&internal->raw_packet_buffer); av_free(internal); av_free(ic); return NULL; diff --git a/libavformat/utils.c b/libavformat/utils.c index 88ce64496d..02c0ead44b 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -452,8 +452,7 @@ int avformat_queue_attached_pictures(AVFormatContext *s) continue; } - ret = avpriv_packet_list_put(&s->internal->raw_packet_buffer, - &s->internal->raw_packet_buffer_end, + ret = av_packet_list_put(s->internal->raw_packet_buffer, &s->streams[i]->attached_pic, av_packet_ref, 0); if (ret < 0) @@ -793,13 +792,18 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt) { int ret, i, err; AVStream *st; +#if FF_API_PACKET_LIST + struct PacketList *raw_packet_buffer = (struct PacketList *)s->internal->raw_packet_buffer; +#else + AVPacketList *raw_packet_buffer = s->internal->raw_packet_buffer; +#endif pkt->data = NULL; pkt->size = 0; av_init_packet(pkt); for (;;) { - PacketListEntry *pktl = s->internal->raw_packet_buffer; + PacketListEntry *pktl = raw_packet_buffer->head; const AVPacket *pkt1; if (pktl) { @@ -808,8 +812,7 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt) if ((err = probe_codec(s, st, NULL)) < 0) return err; if (st->internal->request_probe <= 0) { - avpriv_packet_list_get(&s->internal->raw_packet_buffer, - &s->internal->raw_packet_buffer_end, pkt); + av_packet_list_get(s->internal->raw_packet_buffer, pkt, 0); s->internal->raw_packet_buffer_remaining_size += pkt->size; return 0; } @@ -881,14 +884,13 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt) if (!pktl && st->internal->request_probe <= 0) return ret; - err = avpriv_packet_list_put(&s->internal->raw_packet_buffer, - &s->internal->raw_packet_buffer_end, + err = av_packet_list_put(s->internal->raw_packet_buffer, pkt, NULL, 0); if (err < 0) { av_packet_unref(pkt); return err; } - pkt1 = &s->internal->raw_packet_buffer_end->pkt; + pkt1 = &raw_packet_buffer->tail->pkt; s->internal->raw_packet_buffer_remaining_size -= pkt1->size; if ((err = probe_codec(s, st, pkt1)) < 0) @@ -1843,7 +1845,7 @@ static void flush_packet_queue(AVFormatContext *s) return; avpriv_packet_list_free(&s->internal->parse_queue, &s->internal->parse_queue_end); av_packet_list_flush(s->internal->packet_buffer); - avpriv_packet_list_free(&s->internal->raw_packet_buffer, &s->internal->raw_packet_buffer_end); + av_packet_list_flush(s->internal->raw_packet_buffer); s->internal->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; } @@ -4471,6 +4473,7 @@ void avformat_free_context(AVFormatContext *s) av_freep(&s->streams); flush_packet_queue(s); av_packet_list_free(&s->internal->packet_buffer); + av_packet_list_free(&s->internal->raw_packet_buffer); av_freep(&s->internal); av_freep(&s->url); av_free(s); -- 2.29.2 _______________________________________________ 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".