summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2008-09-03 00:05:55 +0000
committerRonald S. Bultje <rsbultje@gmail.com>2008-09-03 00:05:55 +0000
commit79d5045d33db3abdf6d18e6ed650d3a7025e19ba (patch)
tree9788960b14246b4c21d3e064e0197ebfc6c7cce4
parent2a43a093edd8e717cc14d3cf14a8562f7f711f02 (diff)
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
-rw-r--r--libavformat/rm.h3
-rw-r--r--libavformat/rmdec.c7
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'):