summaryrefslogtreecommitdiff
path: root/libavformat/asf.c
diff options
context:
space:
mode:
authorRyan Martell <rdm4@martellventures.com>2007-02-20 23:44:11 +0000
committerPanagiotis Issaris <takis.issaris@uhasselt.be>2007-02-20 23:44:11 +0000
commit0e3b6a6f55eaa060166ab4f02f4d22cfc75d8d27 (patch)
treec448f4d444d8cce543adc270a6d4c630250cc27e /libavformat/asf.c
parent8ffed8d89f104de6769418ad08c829f3d259d4f1 (diff)
Add the stream_bitrate GUID to the asf parsing code, and set stream bitrate
properties accordingly. Patch by Ryan Martell, rdm4 % martellventures com. Originally committed as revision 8046 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/asf.c')
-rw-r--r--libavformat/asf.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/libavformat/asf.c b/libavformat/asf.c
index 5f4f6c6d10..fc9ba1f81a 100644
--- a/libavformat/asf.c
+++ b/libavformat/asf.c
@@ -34,6 +34,9 @@ static const GUID index_guid = {
0x90, 0x08, 0x00, 0x33, 0xb1, 0xe5, 0xcf, 0x11, 0x89, 0xf4, 0x00, 0xa0, 0xc9, 0x03, 0x49, 0xcb
};
+static const GUID stream_bitrate_guid = { /* (http://get.to/sdp) */
+ 0xce, 0x75, 0xf8, 0x7b, 0x8d, 0x46, 0xd1, 0x11, 0x8d, 0x82, 0x00, 0x60, 0x97, 0xc9, 0xa2, 0xb2
+};
/**********************************/
/* decoding */
@@ -68,6 +71,7 @@ static void print_guid(const GUID *g)
else PRINT_IF_GUID(g, ext_stream_embed_stream_header);
else PRINT_IF_GUID(g, ext_stream_audio_stream);
else PRINT_IF_GUID(g, metadata_header);
+ else PRINT_IF_GUID(g, stream_bitrate_guid);
else
printf("(GUID: unknown) ");
for(i=0;i<16;i++)
@@ -345,6 +349,21 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
get_str16_nolen(pb, len3, s->copyright, sizeof(s->copyright));
get_str16_nolen(pb, len4, s->comment , sizeof(s->comment));
url_fskip(pb, len5);
+ } else if (!memcmp(&g, &stream_bitrate_guid, sizeof(GUID))) {
+ int stream_count = get_le16(pb);
+ int j;
+
+// av_log(NULL, AV_LOG_ERROR, "stream bitrate properties\n");
+// av_log(NULL, AV_LOG_ERROR, "streams %d\n", streams);
+ for(j = 0; j < stream_count; j++) {
+ int flags, bitrate, stream_id;
+
+ flags= get_le16(pb);
+ bitrate= get_le32(pb);
+ stream_id= (flags & 0x7f);
+// av_log(NULL, AV_LOG_ERROR, "flags: 0x%x stream id %d, bitrate %d\n", flags, stream_id, bitrate);
+ asf->stream_bitrates[stream_id-1]= bitrate;
+ }
} else if (!memcmp(&g, &extended_content_header, sizeof(GUID))) {
int desc_count, i;