diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-05-31 00:46:02 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-05-31 00:46:02 +0200 |
commit | 76853a3e0ce4d4ef09ffcca7307991b8db832cd4 (patch) | |
tree | a2a73b931a7391246ba02de38546e9b3fc83b840 | |
parent | a1fc1d2e1b4a5bcfd07549dce9735f24237aa32e (diff) | |
download | ffmpeg-76853a3e0ce4d4ef09ffcca7307991b8db832cd4.tar.gz |
libavformat: ff_get_bmp_header: return esize too
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/avidec.c | 3 | ||||
-rw-r--r-- | libavformat/riff.c | 5 | ||||
-rw-r--r-- | libavformat/riff.h | 2 | ||||
-rw-r--r-- | libavformat/wtvdec.c | 2 |
4 files changed, 7 insertions, 5 deletions
diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 7057a91111..1638e28674 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -578,6 +578,7 @@ static int avi_read_header(AVFormatContext *s) avio_skip(pb, size); } else { uint64_t cur_pos = avio_tell(pb); + unsigned esize; if (cur_pos < list_end) size = FFMIN(size, list_end - cur_pos); st = s->streams[stream_index]; @@ -591,7 +592,7 @@ static int avi_read_header(AVFormatContext *s) avio_skip(pb, size); break; } - tag1 = ff_get_bmp_header(pb, st); + tag1 = ff_get_bmp_header(pb, st, &esize); if (tag1 == MKTAG('D', 'X', 'S', 'B') || tag1 == MKTAG('D','X','S','A')) { st->codec->codec_type = AVMEDIA_TYPE_SUBTITLE; diff --git a/libavformat/riff.c b/libavformat/riff.c index add8440429..1266f8b3b6 100644 --- a/libavformat/riff.c +++ b/libavformat/riff.c @@ -653,10 +653,11 @@ enum CodecID ff_wav_codec_get_id(unsigned int tag, int bps) return id; } -int ff_get_bmp_header(AVIOContext *pb, AVStream *st) +int ff_get_bmp_header(AVIOContext *pb, AVStream *st, unsigned *esize) { int tag1; - avio_rl32(pb); /* size */ + if(esize) *esize = avio_rl32(pb); + else avio_rl32(pb); st->codec->width = avio_rl32(pb); st->codec->height = (int32_t)avio_rl32(pb); avio_rl16(pb); /* planes */ diff --git a/libavformat/riff.h b/libavformat/riff.h index 67521e25cc..78516df273 100644 --- a/libavformat/riff.h +++ b/libavformat/riff.h @@ -44,7 +44,7 @@ void ff_end_tag(AVIOContext *pb, int64_t start); * bits_per_encoded_sample fields. Does not read extradata. * @return codec tag */ -int ff_get_bmp_header(AVIOContext *pb, AVStream *st); +int ff_get_bmp_header(AVIOContext *pb, AVStream *st, unsigned *esize); void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf); int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc); diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c index e25bb5ff54..9157042d08 100644 --- a/libavformat/wtvdec.c +++ b/libavformat/wtvdec.c @@ -522,7 +522,7 @@ static int parse_videoinfoheader2(AVFormatContext *s, AVStream *st) AVIOContext *pb = wtv->pb; avio_skip(pb, 72); // picture aspect ratio is unreliable - ff_get_bmp_header(pb, st); + ff_get_bmp_header(pb, st, NULL); return 72 + 40; } |