From 1ef0e8a6bf894974445e303c6e428aac7f0aaa75 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 8 Feb 2013 13:54:36 +0100 Subject: [PATCH 1/2] asfdec: do not assume every AVStream has a corresponding ASFStream This won't be true for ID3 attached picture. Also stop allocating now useless dummy ASFStreams for ASF native attached pictures. --- libavformat/asfdec.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index 0a315d4e36..d4694310fc 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -22,6 +22,7 @@ //#define DEBUG #include "libavutil/attributes.h" +#include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/bswap.h" #include "libavutil/common.h" @@ -193,7 +194,6 @@ static int asf_read_picture(AVFormatContext *s, int len) enum AVCodecID id = AV_CODEC_ID_NONE; char mimetype[64]; uint8_t *desc = NULL; - ASFStream *ast = NULL; AVStream *st = NULL; int ret, type, picsize, desc_len; @@ -248,12 +248,10 @@ static int asf_read_picture(AVFormatContext *s, int len) goto fail; st = avformat_new_stream(s, NULL); - ast = av_mallocz(sizeof(*ast)); - if (!st || !ast) { + if (!st) { ret = AVERROR(ENOMEM); goto fail; } - st->priv_data = ast; st->disposition |= AV_DISPOSITION_ATTACHED_PIC; st->codec->codec_type = AVMEDIA_TYPE_VIDEO; st->codec->codec_id = id; @@ -271,7 +269,6 @@ static int asf_read_picture(AVFormatContext *s, int len) return 0; fail: - av_freep(&ast); av_freep(&desc); av_free_packet(&pkt); return ret; @@ -1107,6 +1104,7 @@ static int ff_asf_parse_packet(AVFormatContext *s, AVIOContext *pb, AVPacket *pk asf->asf_st = s->streams[asf->stream_index]->priv_data; } asf_st = asf->asf_st; + av_assert0(asf_st); if (asf->packet_replic_size == 1) { // frag_offset is here used as the beginning timestamp @@ -1316,6 +1314,8 @@ static void asf_reset_header(AVFormatContext *s) for (i = 0; i < s->nb_streams; i++) { asf_st = s->streams[i]->priv_data; + if (!asf_st) + continue; av_free_packet(&asf_st->pkt); asf_st->frag_offset = 0; asf_st->seq = 0; @@ -1364,6 +1364,7 @@ static int64_t asf_read_pts(AVFormatContext *s, int stream_index, i = pkt->stream_index; asf_st = s->streams[i]->priv_data; + av_assert0(asf_st); // assert((asf_st->packet_pos - s->data_offset) % s->packet_size == 0); pos = asf_st->packet_pos; From 81726a4f0b8a43e19898e2a36fdde80583bafff0 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 8 Feb 2013 14:00:28 +0100 Subject: [PATCH 2/2] FATE: add tests for additional flavors of asf cover art --- tests/fate/cover-art.mak | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/fate/cover-art.mak b/tests/fate/cover-art.mak index dadfcd8901..56a384e5fb 100644 --- a/tests/fate/cover-art.mak +++ b/tests/fate/cover-art.mak @@ -14,6 +14,14 @@ FATE_COVER_ART += fate-cover-art-wma fate-cover-art-wma: CMD = md5 -i $(SAMPLES)/cover_art/Californication_cover.wma -an -c:v copy -f rawvideo fate-cover-art-wma: REF = 0808bd0e1b61542a16e1906812dd924b +FATE_COVER_ART += fate-cover-art-wma-id3 +fate-cover-art-wma-id3: CMD = md5 -i $(SAMPLES)/cover_art/wma_with_ID3_APIC_trimmed.wma -an -c:v copy -f rawvideo +fate-cover-art-wma-id3: REF = e6a8dd03687d5178bc13fc7d3316696e + +FATE_COVER_ART += fate-cover-art-wma-metadatalib +fate-cover-art-wma-metadatalib: CMD = md5 -i $(SAMPLES)/cover_art/wma_with_metadata_library_object_tag_trimmed.wma -map 0:v -c:v copy -f rawvideo +fate-cover-art-wma-metadatalib: REF = 32e8bd4fad546f63d881a0256f083aea + FATE_COVER_ART += fate-cover-art-wv fate-cover-art-wv: CMD = md5 -i $(SAMPLES)/cover_art/luckynight_cover.wv -an -c:v copy -f rawvideo fate-cover-art-wv: REF = 45333c983c45af54449dff10af144317