Commit fcbb9471 authored by Peter Ross's avatar Peter Ross Committed by Michael Niedermayer

riffenc: add option to ff_put_bmp_header to ignore extradata

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent d08ea75a
...@@ -525,7 +525,7 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size, ...@@ -525,7 +525,7 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size,
avio_wl16(pb, 40 + enc->extradata_size); /* size */ avio_wl16(pb, 40 + enc->extradata_size); /* size */
/* BITMAPINFOHEADER header */ /* BITMAPINFOHEADER header */
ff_put_bmp_header(pb, enc, ff_codec_bmp_tags, 1); ff_put_bmp_header(pb, enc, ff_codec_bmp_tags, 1, 0);
} }
end_header(pb, hpos); end_header(pb, hpos);
} }
......
...@@ -293,7 +293,7 @@ static int avi_write_header(AVFormatContext *s) ...@@ -293,7 +293,7 @@ static int avi_write_header(AVFormatContext *s)
// are not (yet) supported. // are not (yet) supported.
if (stream->codec_id != AV_CODEC_ID_XSUB) break; if (stream->codec_id != AV_CODEC_ID_XSUB) break;
case AVMEDIA_TYPE_VIDEO: case AVMEDIA_TYPE_VIDEO:
ff_put_bmp_header(pb, stream, ff_codec_bmp_tags, 0); ff_put_bmp_header(pb, stream, ff_codec_bmp_tags, 0, 0);
break; break;
case AVMEDIA_TYPE_AUDIO: case AVMEDIA_TYPE_AUDIO:
if ((ret = ff_put_wav_header(pb, stream)) < 0) { if ((ret = ff_put_wav_header(pb, stream)) < 0) {
......
...@@ -559,7 +559,7 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo ...@@ -559,7 +559,7 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo
ret = AVERROR(EINVAL); ret = AVERROR(EINVAL);
} }
ff_put_bmp_header(dyn_cp, codec, ff_codec_bmp_tags, 0); ff_put_bmp_header(dyn_cp, codec, ff_codec_bmp_tags, 0, 0);
} }
} else if (codec->codec_type == AVMEDIA_TYPE_AUDIO) { } else if (codec->codec_type == AVMEDIA_TYPE_AUDIO) {
......
...@@ -45,7 +45,7 @@ void ff_end_tag(AVIOContext *pb, int64_t start); ...@@ -45,7 +45,7 @@ void ff_end_tag(AVIOContext *pb, int64_t start);
*/ */
int ff_get_bmp_header(AVIOContext *pb, AVStream *st, unsigned *esize); 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); void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *tags, int for_asf, int ignore_extradata);
int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc); int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc);
enum AVCodecID ff_wav_codec_get_id(unsigned int tag, int bps); enum AVCodecID ff_wav_codec_get_id(unsigned int tag, int bps);
int ff_get_wav_header(AVIOContext *pb, AVCodecContext *codec, int size); int ff_get_wav_header(AVIOContext *pb, AVCodecContext *codec, int size);
......
...@@ -201,10 +201,10 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc) ...@@ -201,10 +201,10 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc)
/* BITMAPINFOHEADER header */ /* BITMAPINFOHEADER header */
void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc,
const AVCodecTag *tags, int for_asf) const AVCodecTag *tags, int for_asf, int ignore_extradata)
{ {
/* size */ /* size */
avio_wl32(pb, 40 + enc->extradata_size); avio_wl32(pb, 40 + (ignore_extradata ? 0 : enc->extradata_size));
avio_wl32(pb, enc->width); avio_wl32(pb, enc->width);
//We always store RGB TopDown //We always store RGB TopDown
avio_wl32(pb, enc->codec_tag ? enc->height : -enc->height); avio_wl32(pb, enc->codec_tag ? enc->height : -enc->height);
...@@ -220,10 +220,12 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, ...@@ -220,10 +220,12 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc,
avio_wl32(pb, 0); avio_wl32(pb, 0);
avio_wl32(pb, 0); avio_wl32(pb, 0);
if (!ignore_extradata) {
avio_write(pb, enc->extradata, enc->extradata_size); avio_write(pb, enc->extradata, enc->extradata_size);
if (!for_asf && enc->extradata_size & 1) if (!for_asf && enc->extradata_size & 1)
avio_w8(pb, 0); avio_w8(pb, 0);
}
} }
void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, void ff_parse_specific_params(AVCodecContext *stream, int *au_rate,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment