diff --git a/libavformat/riffenc.c b/libavformat/riffenc.c index df98b3b117..687bcb0c44 100644 --- a/libavformat/riffenc.c +++ b/libavformat/riffenc.c @@ -200,6 +200,18 @@ int ff_put_wav_header(AVFormatContext *s, AVIOContext *pb, par->codec_tag != 0x0001 /* PCM */ || riff_extradata - riff_extradata_start) { /* WAVEFORMATEX */ + if (par->codec_tag == 0x1610) { + /* HEAACWAVEFORMAT */ + avio_wl16(pb, par->extradata_size + 12); /* cbSize */ + avio_wl16(pb, !par->extradata_size); // wPayloadType, 0 = Raw, 1 = ADTS + avio_wl16(pb, 0xFE); // wAudioProfileLevelIndication, 0xFE = unspecified + avio_wl16(pb, 0); // wStructType, 0 = AudioSpecificConfig() + avio_wl16(pb, 0); // wReserved1 + avio_wl32(pb, 0); // dwReserved2 + } else if (par->codec_tag == 0xFF && !par->extradata_size) { + av_log(s, AV_LOG_ERROR, "ADTS is only supported with codec tag 0x1610\n"); + return AVERROR(EINVAL); + } else avio_wl16(pb, riff_extradata - riff_extradata_start); /* cbSize */ } /* else PCMWAVEFORMAT */ avio_write(pb, riff_extradata_start, riff_extradata - riff_extradata_start); diff --git a/libavformat/version.h b/libavformat/version.h index 0d044ef7c6..8c1af81917 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -32,7 +32,7 @@ #include "version_major.h" #define LIBAVFORMAT_VERSION_MINOR 6 -#define LIBAVFORMAT_VERSION_MICRO 102 +#define LIBAVFORMAT_VERSION_MICRO 103 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \