@ -691,20 +691,22 @@ static int asf_read_properties(AVFormatContext *s, const GUIDParseTable *g)
static int parse_video_info ( AVIOContext * pb , AVStream * st )
{
uint16_t size ;
uint16_t size_asf ; // ASF-specific Format Data size
uint32_t size_bmp ; // BMP_HEADER-specific Format Data size
unsigned int tag ;
st - > codecpar - > width = avio_rl32 ( pb ) ;
st - > codecpar - > height = avio_rl32 ( pb ) ;
avio_skip ( pb , 1 ) ; // skip reserved flags
size = avio_rl16 ( pb ) ; // size of the Format Data
tag = ff_get_bmp_header ( pb , st ) ;
size_asf = avio_rl16 ( pb ) ;
tag = ff_get_bmp_header ( pb , st , & size_bmp ) ;
st - > codecpar - > codec_tag = tag ;
st - > codecpar - > codec_id = ff_codec_get_id ( ff_codec_bmp_tags , tag ) ;
size_bmp = FFMAX ( size_asf , size_bmp ) ;
if ( size > BMP_HEADER_SIZE ) {
if ( size_bmp > BMP_HEADER_SIZE ) {
int ret ;
st - > codecpar - > extradata_size = size - BMP_HEADER_SIZE ;
st - > codecpar - > extradata_size = size_bmp - BMP_HEADER_SIZE ;
if ( ! ( st - > codecpar - > extradata = av_malloc ( st - > codecpar - > extradata_size +
AV_INPUT_BUFFER_PADDING_SIZE ) ) ) {
st - > codecpar - > extradata_size = 0 ;