[Ffmpeg-cvslog] r8046 - in trunk/libavformat: asf.c asf.h

takis subversion
Wed Feb 21 00:44:12 CET 2007


Author: takis
Date: Wed Feb 21 00:44:11 2007
New Revision: 8046

Modified:
   trunk/libavformat/asf.c
   trunk/libavformat/asf.h

Log:
Add the stream_bitrate GUID to the asf parsing code, and set stream bitrate
properties accordingly.
Patch by Ryan Martell, rdm4 % martellventures com.


Modified: trunk/libavformat/asf.c
==============================================================================
--- trunk/libavformat/asf.c	(original)
+++ trunk/libavformat/asf.c	Wed Feb 21 00:44:11 2007
@@ -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;
 

Modified: trunk/libavformat/asf.h
==============================================================================
--- trunk/libavformat/asf.h	(original)
+++ trunk/libavformat/asf.h	Wed Feb 21 00:44:11 2007
@@ -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




More information about the ffmpeg-cvslog mailing list