X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fcinedec.c;h=f1fae6e5db631762454a32d7f7f17b9d4e421c90;hb=2606c48391377681541111263de41c79adeffa49;hp=de34fb963820188a8c9965263978cb4a408d33d9;hpb=5ab44ff20cdc0e05adecbd0cd352d25fcb930094;p=ffmpeg diff --git a/libavformat/cinedec.c b/libavformat/cinedec.c index de34fb96382..f1fae6e5db6 100644 --- a/libavformat/cinedec.c +++ b/libavformat/cinedec.c @@ -56,7 +56,7 @@ enum { #define CFA_BLGRAY 0x20000000U #define CFA_BRGRAY 0x10000000U -static int cine_read_probe(AVProbeData *p) +static int cine_read_probe(const AVProbeData *p) { int HeaderSize; if (p->buf[0] == 'C' && p->buf[1] == 'I' && // Type @@ -168,6 +168,10 @@ static int cine_read_header(AVFormatContext *avctx) avio_skip(pb, 616); // Binning .. bFlipH if (!avio_rl32(pb) ^ vflip) { st->codecpar->extradata = av_strdup("BottomUp"); + if (!st->codecpar->extradata) { + st->codecpar->extradata_size = 0; + return AVERROR(ENOMEM); + } st->codecpar->extradata_size = 9; } @@ -284,10 +288,10 @@ static int cine_read_packet(AVFormatContext *avctx, AVPacket *pkt) AVIOContext *pb = avctx->pb; int n, size, ret; - if (cine->pts >= st->duration) + if (cine->pts >= st->internal->nb_index_entries) return AVERROR_EOF; - avio_seek(pb, st->index_entries[cine->pts].pos, SEEK_SET); + avio_seek(pb, st->internal->index_entries[cine->pts].pos, SEEK_SET); n = avio_rl32(pb); if (n < 8) return AVERROR_INVALIDDATA; @@ -318,7 +322,7 @@ static int cine_read_seek(AVFormatContext *avctx, int stream_index, int64_t time return 0; } -AVInputFormat ff_cine_demuxer = { +const AVInputFormat ff_cine_demuxer = { .name = "cine", .long_name = NULL_IF_CONFIG_SMALL("Phantom Cine"), .priv_data_size = sizeof(CineDemuxContext),