riffenc: add option to ff_put_bmp_header to ignore extradata
Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit fcbb94712d9873a37cdc8b526e368154b5982186) Conflicts: libavformat/riffenc.c
This commit is contained in:
parent
3e65caf5bc
commit
7ba102d008
@ -457,7 +457,7 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size,
|
||||
avio_wl16(pb, 40 + enc->extradata_size); /* size */
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
@ -291,7 +291,7 @@ static int avi_write_header(AVFormatContext *s)
|
||||
// are not (yet) supported.
|
||||
if (stream->codec_id != AV_CODEC_ID_XSUB) break;
|
||||
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;
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
if ((ret = ff_put_wav_header(pb, stream)) < 0) {
|
||||
|
@ -512,7 +512,7 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, AVCodecCo
|
||||
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) {
|
||||
|
@ -569,9 +569,9 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc)
|
||||
}
|
||||
|
||||
/* BITMAPINFOHEADER header */
|
||||
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)
|
||||
{
|
||||
avio_wl32(pb, 40 + enc->extradata_size); /* size */
|
||||
avio_wl32(pb, 40 + (ignore_extradata ? 0 : enc->extradata_size)); /* size */
|
||||
avio_wl32(pb, enc->width);
|
||||
//We always store RGB TopDown
|
||||
avio_wl32(pb, enc->codec_tag ? enc->height : -enc->height);
|
||||
@ -586,10 +586,12 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecContext *enc, const AVCodecTag *t
|
||||
avio_wl32(pb, 0);
|
||||
avio_wl32(pb, 0);
|
||||
|
||||
if (!ignore_extradata) {
|
||||
avio_write(pb, enc->extradata, enc->extradata_size);
|
||||
|
||||
if (!for_asf && enc->extradata_size & 1)
|
||||
avio_w8(pb, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void ff_parse_specific_params(AVCodecContext *stream, int *au_rate, int *au_ssize, int *au_scale)
|
||||
|
@ -46,7 +46,7 @@ void ff_end_tag(AVIOContext *pb, int64_t start);
|
||||
*/
|
||||
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);
|
||||
enum AVCodecID ff_wav_codec_get_id(unsigned int tag, int bps);
|
||||
int ff_get_wav_header(AVIOContext *pb, AVCodecContext *codec, int size);
|
||||
|
Loading…
x
Reference in New Issue
Block a user