X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmm.c;h=d1acfef445178b49d755428b3d3683e92986968e;hb=bc70684e74a185d7b80c8b80bdedda659cb581b8;hp=8a1382e03cc73bc550e6c18713cafc1be2dbf1de;hpb=cd8087444bb459c7c62e21913adfef5ec09675cc;p=ffmpeg diff --git a/libavformat/mm.c b/libavformat/mm.c index 8a1382e03cc..d1acfef4451 100644 --- a/libavformat/mm.c +++ b/libavformat/mm.c @@ -58,7 +58,7 @@ typedef struct MmDemuxContext { unsigned int audio_pts, video_pts; } MmDemuxContext; -static int probe(AVProbeData *p) +static int probe(const AVProbeData *p) { int len, type, fps, w, h; if (p->buf_size < MM_HEADER_LEN_AV + MM_PREAMBLE_SIZE) @@ -142,6 +142,7 @@ static int read_packet(AVFormatContext *s, AVIOContext *pb = s->pb; unsigned char preamble[MM_PREAMBLE_SIZE]; unsigned int type, length; + int ret; while(1) { @@ -161,8 +162,8 @@ static int read_packet(AVFormatContext *s, case MM_TYPE_INTRA_HHV : case MM_TYPE_INTER_HHV : /* output preamble + data */ - if (av_new_packet(pkt, length + MM_PREAMBLE_SIZE)) - return AVERROR(ENOMEM); + if ((ret = av_new_packet(pkt, length + MM_PREAMBLE_SIZE)) < 0) + return ret; memcpy(pkt->data, preamble, MM_PREAMBLE_SIZE); if (avio_read(pb, pkt->data + MM_PREAMBLE_SIZE, length) != length) return AVERROR(EIO); @@ -174,8 +175,10 @@ static int read_packet(AVFormatContext *s, return 0; case MM_TYPE_AUDIO : - if (av_get_packet(s->pb, pkt, length)<0) - return AVERROR(ENOMEM); + if (s->nb_streams < 2) + return AVERROR_INVALIDDATA; + if ((ret = av_get_packet(s->pb, pkt, length)) < 0) + return ret; pkt->stream_index = 1; pkt->pts = mm->audio_pts++; return 0; @@ -187,7 +190,7 @@ static int read_packet(AVFormatContext *s, } } -AVInputFormat ff_mm_demuxer = { +const AVInputFormat ff_mm_demuxer = { .name = "mm", .long_name = NULL_IF_CONFIG_SMALL("American Laser Games MM"), .priv_data_size = sizeof(MmDemuxContext),