Mercurial > libavformat.hg
changeset 1806:bf6a0dd6d7be libavformat
Add the stream_bitrate GUID to the asf parsing code, and set stream bitrate
properties accordingly.
Patch by Ryan Martell, rdm4 % martellventures com.
author | takis |
---|---|
date | Tue, 20 Feb 2007 23:44:11 +0000 |
parents | 2c2e787782bb |
children | 4227bfda0df5 |
files | asf.c asf.h |
diffstat | 2 files changed, 20 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/asf.c Tue Feb 20 16:20:08 2007 +0000 +++ b/asf.c Tue Feb 20 23:44:11 2007 +0000 @@ -34,6 +34,9 @@ 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 @@ 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 @@ 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;
--- a/asf.h Tue Feb 20 16:20:08 2007 +0000 +++ b/asf.h Tue Feb 20 23:44:11 2007 +0000 @@ -76,6 +76,7 @@ int is_streamed; int asfid2avid[128]; ///< conversion table from asf ID 2 AVStream ID ASFStream streams[128]; ///< it's max number and it's not that big + uint32_t stream_bitrates[128]; ///< max number of streams, bitrate for each (for streaming) /* non streamed additonnal info */ uint64_t nb_packets; ///< how many packets are there in the file, invalid if broadcasting int64_t duration; ///< in 100ns units