Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Michael Niedermayer authored on 2012/05/31 07:46:02... | ... |
@@ -578,6 +578,7 @@ static int avi_read_header(AVFormatContext *s) |
578 | 578 |
avio_skip(pb, size); |
579 | 579 |
} else { |
580 | 580 |
uint64_t cur_pos = avio_tell(pb); |
581 |
+ unsigned esize; |
|
581 | 582 |
if (cur_pos < list_end) |
582 | 583 |
size = FFMIN(size, list_end - cur_pos); |
583 | 584 |
st = s->streams[stream_index]; |
... | ... |
@@ -591,7 +592,7 @@ static int avi_read_header(AVFormatContext *s) |
591 | 591 |
avio_skip(pb, size); |
592 | 592 |
break; |
593 | 593 |
} |
594 |
- tag1 = ff_get_bmp_header(pb, st); |
|
594 |
+ tag1 = ff_get_bmp_header(pb, st, &esize); |
|
595 | 595 |
|
596 | 596 |
if (tag1 == MKTAG('D', 'X', 'S', 'B') || tag1 == MKTAG('D','X','S','A')) { |
597 | 597 |
st->codec->codec_type = AVMEDIA_TYPE_SUBTITLE; |
... | ... |
@@ -653,10 +653,11 @@ enum CodecID ff_wav_codec_get_id(unsigned int tag, int bps) |
653 | 653 |
return id; |
654 | 654 |
} |
655 | 655 |
|
656 |
-int ff_get_bmp_header(AVIOContext *pb, AVStream *st) |
|
656 |
+int ff_get_bmp_header(AVIOContext *pb, AVStream *st, unsigned *esize) |
|
657 | 657 |
{ |
658 | 658 |
int tag1; |
659 |
- avio_rl32(pb); /* size */ |
|
659 |
+ if(esize) *esize = avio_rl32(pb); |
|
660 |
+ else avio_rl32(pb); |
|
660 | 661 |
st->codec->width = avio_rl32(pb); |
661 | 662 |
st->codec->height = (int32_t)avio_rl32(pb); |
662 | 663 |
avio_rl16(pb); /* planes */ |
... | ... |
@@ -44,7 +44,7 @@ void ff_end_tag(AVIOContext *pb, int64_t start); |
44 | 44 |
* bits_per_encoded_sample fields. Does not read extradata. |
45 | 45 |
* @return codec tag |
46 | 46 |
*/ |
47 |
-int ff_get_bmp_header(AVIOContext *pb, AVStream *st); |
|
47 |
+int ff_get_bmp_header(AVIOContext *pb, AVStream *st, unsigned *esize); |
|
48 | 48 |
|
49 | 49 |
void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf); |
50 | 50 |
int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc); |
... | ... |
@@ -522,7 +522,7 @@ static int parse_videoinfoheader2(AVFormatContext *s, AVStream *st) |
522 | 522 |
AVIOContext *pb = wtv->pb; |
523 | 523 |
|
524 | 524 |
avio_skip(pb, 72); // picture aspect ratio is unreliable |
525 |
- ff_get_bmp_header(pb, st); |
|
525 |
+ ff_get_bmp_header(pb, st, NULL); |
|
526 | 526 |
|
527 | 527 |
return 72 + 40; |
528 | 528 |
} |