summaryrefslogtreecommitdiffstats
path: root/libmpdemux/asfheader.c
diff options
context:
space:
mode:
authorbertrand <bertrand@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-24 05:30:41 +0000
committerbertrand <bertrand@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-01-24 05:30:41 +0000
commitbd45bf098fa7a0f07bc73482fddce3ee9056d369 (patch)
tree3e446652b499193e1a2f248a038b47eafc16e43a /libmpdemux/asfheader.c
parentd68675fee90f018d702e50ffda8bc831b2828d50 (diff)
downloadmpv-bd45bf098fa7a0f07bc73482fddce3ee9056d369.tar.bz2
mpv-bd45bf098fa7a0f07bc73482fddce3ee9056d369.tar.xz
Add a parser for the "ASF group stream object" and display the bitrate values
of all the streams. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4334 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/asfheader.c')
-rw-r--r--libmpdemux/asfheader.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/libmpdemux/asfheader.c b/libmpdemux/asfheader.c
index 8b4856eadd..0dfce1ed1c 100644
--- a/libmpdemux/asfheader.c
+++ b/libmpdemux/asfheader.c
@@ -34,6 +34,7 @@ extern int verbose; // defined in mplayer.c
#define ASF_GUID_PREFIX_header_2_0 0xD6E229D1
#define ASF_GUID_PREFIX_file_header 0x8CABDCA1
#define ASF_GUID_PREFIX_content_desc 0x75b22633
+#define ASF_GUID_PREFIX_stream_group 0x7bf875ce
static ASF_header_t asfh;
@@ -270,6 +271,35 @@ while(!stream_eof(demuxer->stream)){
free(string);
break;
}
+ case ASF_GUID_PREFIX_stream_group: {
+ uint16_t stream_count, stream_id, i;
+ uint32_t max_bitrate;
+ char *object=NULL, *ptr=NULL;
+ printf("============ ASF Stream group == START ===\n");
+ printf(" object size = %d\n", objh.size);
+ object = (char*)malloc(objh.size);
+ if( object==NULL ) {
+ printf("Memory allocation failed\n");
+ return 0;
+ }
+ stream_read( demuxer->stream, object, objh.size );
+ // FIXME: We need some endian handling below...
+ ptr = object;
+ stream_count = *(uint16_t*)ptr;
+ ptr += sizeof(uint16_t);
+ printf(" stream count=[0x%x][%u]\n", stream_count, stream_count );
+ for( i=0 ; i<stream_count && ptr<((char*)object+objh.size) ; i++ ) {
+ stream_id = *(uint16_t*)ptr;
+ ptr += sizeof(uint16_t);
+ printf(" stream id=[0x%x][%u]\n", stream_id, stream_id );
+ max_bitrate = *(uint32_t*)ptr;
+ ptr += sizeof(uint32_t);
+ printf(" max bitrate=[0x%x][%u]\n", max_bitrate, max_bitrate );
+ }
+ printf("============ ASF Stream group == END ===\n");
+ free( object );
+ break;
+ }
} // switch GUID
if(ASF_LOAD_GUID_PREFIX(objh.guid)==ASF_GUID_PREFIX_data_chunk) break; // movi chunk