X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Frl2.c;h=5d30bf8bd6a022bd72ee74168bc7b6c8f81d173a;hb=2bb2c2bd75e5f4b28a945511cda77e0a1a44c758;hp=e7b9fd9f985439e479331fa8e6a977b9c21f4298;hpb=3b3bbdd3e63a3a1eaf69b861f72cf74f1669afe1;p=ffmpeg diff --git a/libavformat/rl2.c b/libavformat/rl2.c index e7b9fd9f985..5d30bf8bd6a 100644 --- a/libavformat/rl2.c +++ b/libavformat/rl2.c @@ -32,9 +32,12 @@ * optional background_frame */ +#include + #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "avformat.h" +#include "internal.h" #define EXTRADATA1_SIZE (6 + 256 * 3) ///< video base, clr, palette @@ -68,11 +71,9 @@ static int rl2_probe(AVProbeData *p) /** * read rl2 header data and setup the avstreams * @param s demuxer context - * @param ap format parameters * @return 0 on success, AVERROR otherwise */ -static av_cold int rl2_read_header(AVFormatContext *s, - AVFormatParameters *ap) +static av_cold int rl2_read_header(AVFormatContext *s) { AVIOContext *pb = s->pb; AVStream *st; @@ -108,6 +109,10 @@ static av_cold int rl2_read_header(AVFormatContext *s, rate = avio_rl16(pb); channels = avio_rl16(pb); def_sound_size = avio_rl16(pb); + if (!channels || channels > 42) { + av_log(s, AV_LOG_ERROR, "Invalid number of channels: %d\n", channels); + return AVERROR_INVALIDDATA; + } /** setup video stream */ st = avformat_new_stream(s, NULL); @@ -115,7 +120,7 @@ static av_cold int rl2_read_header(AVFormatContext *s, return AVERROR(ENOMEM); st->codec->codec_type = AVMEDIA_TYPE_VIDEO; - st->codec->codec_id = CODEC_ID_RL2; + st->codec->codec_id = AV_CODEC_ID_RL2; st->codec->codec_tag = 0; /* no fourcc */ st->codec->width = 320; st->codec->height = 200; @@ -144,7 +149,7 @@ static av_cold int rl2_read_header(AVFormatContext *s, if (!st) return AVERROR(ENOMEM); st->codec->codec_type = AVMEDIA_TYPE_AUDIO; - st->codec->codec_id = CODEC_ID_PCM_U8; + st->codec->codec_id = AV_CODEC_ID_PCM_U8; st->codec->codec_tag = 1; st->codec->channels = channels; st->codec->bits_per_coded_sample = 8; @@ -153,10 +158,10 @@ static av_cold int rl2_read_header(AVFormatContext *s, st->codec->bits_per_coded_sample; st->codec->block_align = st->codec->channels * st->codec->bits_per_coded_sample / 8; - av_set_pts_info(st,32,1,rate); + avpriv_set_pts_info(st,32,1,rate); } - av_set_pts_info(s->streams[0], 32, pts_num, pts_den); + avpriv_set_pts_info(s->streams[0], 32, pts_num, pts_den); chunk_size = av_malloc(frame_count * sizeof(uint32_t)); audio_size = av_malloc(frame_count * sizeof(uint32_t)); @@ -287,11 +292,10 @@ static int rl2_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp AVInputFormat ff_rl2_demuxer = { .name = "rl2", - .long_name = NULL_IF_CONFIG_SMALL("RL2 format"), + .long_name = NULL_IF_CONFIG_SMALL("RL2"), .priv_data_size = sizeof(Rl2DemuxContext), .read_probe = rl2_probe, .read_header = rl2_read_header, .read_packet = rl2_read_packet, .read_seek = rl2_read_seek, }; -