From 79d5045d33db3abdf6d18e6ed650d3a7025e19ba Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Wed, 3 Sep 2008 00:05:55 +0000 Subject: [PATCH] Use chunk-size in function calling mdpr_read_codecdata() rather than in the function itself. This way, old-style (.ra4) RTSP/RDT OpaqueData chunks can be parsed using this function as well (they don't have the size bits). See discussion on ML in "[PATCH] rmdec.c - small read_mdpr_codecdata() API modification". Originally committed as revision 15163 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/rm.h | 3 ++- libavformat/rmdec.c | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libavformat/rm.h b/libavformat/rm.h index 802af74775..a57e517bab 100644 --- a/libavformat/rm.h +++ b/libavformat/rm.h @@ -70,9 +70,10 @@ typedef struct { * @param s context containing RMContext and ByteIOContext for stream reading * @param st the stream that the MDPR chunk belongs to and where to store the * parameters read from the chunk into + * @param codec_data_size size of the MDPR chunk * @return 0 on success, errno codes on error */ -int ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st); +int ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st, int codec_data_size); /** * Parse one rm-stream packet from the input bytestream. diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index aa8bda7e3c..6414fa771a 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -190,14 +190,13 @@ static int rm_read_audio_stream_info(AVFormatContext *s, AVStream *st, } int -ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st) +ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st, int codec_data_size) { ByteIOContext *pb = s->pb; unsigned int v; - int codec_data_size, size; + int size; int64_t codec_pos; - codec_data_size = get_be32(pb); codec_pos = url_ftell(pb); v = get_be32(pb); if (v == MKTAG(0xfd, 'a', 'r', '.')) { @@ -351,7 +350,7 @@ static int rm_read_header(AVFormatContext *s, AVFormatParameters *ap) get_str8(pb, buf, sizeof(buf)); /* mimetype */ st->codec->codec_type = CODEC_TYPE_DATA; av_set_pts_info(st, 64, 1, 1000); - if (ff_rm_read_mdpr_codecdata(s, st) < 0) + if (ff_rm_read_mdpr_codecdata(s, st, get_be32(pb)) < 0) return -1; break; case MKTAG('D', 'A', 'T', 'A'):