@ -145,8 +145,10 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
int size , i ;
int64_t gsize ;
AVRational dar [ 128 ] ;
uint32_t bitrate [ 128 ] ;
memset ( dar , 0 , sizeof ( dar ) ) ;
memset ( bitrate , 0 , sizeof ( bitrate ) ) ;
get_guid ( pb , & g ) ;
if ( memcmp ( & g , & asf_header , sizeof ( GUID ) ) )
@ -421,13 +423,13 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
}
} else if ( ! memcmp ( & g , & ext_stream_header , sizeof ( GUID ) ) ) {
int ext_len , payload_ext_ct , stream_ct ;
uint32_t ext_d ;
uint32_t ext_d , leak_rate , stream_num ;
int64_t pos_ex_st ;
pos_ex_st = url_ftell ( pb ) ;
get_le64 ( pb ) ; // starttime
get_le64 ( pb ) ; // endtime
get_le32 ( pb ) ; // leak-datarate
leak_rate = get_le32 ( pb ) ; // leak-datarate
get_le32 ( pb ) ; // bucket-datasize
get_le32 ( pb ) ; // init-bucket-fullness
get_le32 ( pb ) ; // alt-leak-datarate
@ -435,12 +437,15 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
get_le32 ( pb ) ; // alt-init-bucket-fullness
get_le32 ( pb ) ; // max-object-size
get_le32 ( pb ) ; // flags (reliable,seekable,no_cleanpoints?,resend-live-cleanpoints, rest of bits reserved)
get_le16 ( pb ) ; // stream-num
stream_num = get_le16 ( pb ) ; // stream-num
get_le16 ( pb ) ; // stream-language-id-index
get_le64 ( pb ) ; // avg frametime in 100ns units
stream_ct = get_le16 ( pb ) ; //stream-name-count
payload_ext_ct = get_le16 ( pb ) ; //payload-extension-system-count
if ( stream_num < 128 )
bitrate [ stream_num ] = leak_rate ;
for ( i = 0 ; i < stream_ct ; i + + ) {
get_le16 ( pb ) ;
ext_len = get_le16 ( pb ) ;
@ -504,8 +509,11 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
for ( i = 0 ; i < 128 ; i + + ) {
int stream_num = asf - > asfid2avid [ i ] ;
if ( stream_num > = 0 & & dar [ i ] . num > 0 & & dar [ i ] . den > 0 ) {
if ( stream_num > = 0 ) {
AVCodecContext * codec = s - > streams [ stream_num ] - > codec ;
if ( ! codec - > bit_rate )
codec - > bit_rate = bitrate [ i ] ;
if ( dar [ i ] . num > 0 & & dar [ i ] . den > 0 )
av_reduce ( & codec - > sample_aspect_ratio . num ,
& codec - > sample_aspect_ratio . den ,
dar [ i ] . num , dar [ i ] . den , INT_MAX ) ;