diff options
author | bertrand <bertrand@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-01-24 05:30:41 +0000 |
---|---|---|
committer | bertrand <bertrand@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-01-24 05:30:41 +0000 |
commit | bd45bf098fa7a0f07bc73482fddce3ee9056d369 (patch) | |
tree | 3e446652b499193e1a2f248a038b47eafc16e43a /libmpdemux | |
parent | d68675fee90f018d702e50ffda8bc831b2828d50 (diff) | |
download | mpv-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')
-rw-r--r-- | libmpdemux/asfheader.c | 30 |
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 |