ff_put_wav_header: add flag to force WAVEFORMATEX
authorDaniel Verkamp <daniel@drv.nu>
Wed, 30 Apr 2014 02:26:05 +0000 (19:26 -0700)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 30 Apr 2014 14:41:35 +0000 (16:41 +0200)
commit5e7d21c7ad02e37caa1bcb50ab8ad64e7d7fb86c
tree20eb13371083ec6c50fe3533141c240f51780624
parentbb6d00f01417718315d7944c6c33950ea88fb287
ff_put_wav_header: add flag to force WAVEFORMATEX

Partially undoes commit 2c4e08d89327595f7f4be57dda4b3775e1198d5e:

    riff: always generate a proper WAVEFORMATEX structure in
    ff_put_wav_header

A new flag, FF_PUT_WAV_HEADER_FORCE_WAVEFORMATEX, is added to force the
use of WAVEFORMATEX rather than PCMWAVEFORMAT even for PCM codecs.

This flag is used in the Matroska muxer (the cause of the original
change) and in the ASF muxer, because the specifications for
these formats indicate explicitly that WAVEFORMATEX should be used.

Muxers for other formats will return to the original behavior of writing
PCMWAVEFORMAT when writing a header for raw PCM.

In particular, this causes raw PCM in WAV to generate the canonical
44-byte header expected by some tools.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
54 files changed:
libavformat/asfenc.c
libavformat/avienc.c
libavformat/matroskaenc.c
libavformat/movenc.c
libavformat/riff.h
libavformat/riffenc.c
libavformat/wavenc.c
libavformat/wtvenc.c
tests/fate/filter-audio.mak
tests/ref/acodec/adpcm-adx
tests/ref/acodec/adpcm-ima_qt
tests/ref/acodec/adpcm-ima_wav
tests/ref/acodec/adpcm-ms
tests/ref/acodec/adpcm-swf
tests/ref/acodec/adpcm-yamaha
tests/ref/acodec/alac
tests/ref/acodec/flac
tests/ref/acodec/g723_1
tests/ref/acodec/mp2
tests/ref/acodec/mp2fixed
tests/ref/acodec/pcm-alaw
tests/ref/acodec/pcm-f32be
tests/ref/acodec/pcm-f32le
tests/ref/acodec/pcm-f64be
tests/ref/acodec/pcm-f64le
tests/ref/acodec/pcm-mulaw
tests/ref/acodec/pcm-s16be
tests/ref/acodec/pcm-s16be_planar
tests/ref/acodec/pcm-s16le
tests/ref/acodec/pcm-s16le_planar
tests/ref/acodec/pcm-s24be
tests/ref/acodec/pcm-s24le
tests/ref/acodec/pcm-s24le_planar
tests/ref/acodec/pcm-s32be
tests/ref/acodec/pcm-s32le
tests/ref/acodec/pcm-s32le_planar
tests/ref/acodec/pcm-s8
tests/ref/acodec/pcm-s8_planar
tests/ref/acodec/pcm-u16be
tests/ref/acodec/pcm-u16le
tests/ref/acodec/pcm-u24be
tests/ref/acodec/pcm-u24le
tests/ref/acodec/pcm-u32be
tests/ref/acodec/pcm-u32le
tests/ref/acodec/pcm-u8
tests/ref/acodec/roqaudio
tests/ref/fate/mapchan-6ch-extract-2
tests/ref/fate/mapchan-6ch-extract-2-downmix-mono
tests/ref/fate/mapchan-silent-mono
tests/ref/lavf/w64
tests/ref/lavf/wav
tests/ref/seek/acodec-pcm-s16le
tests/ref/seek/acodec-pcm-u8
tests/ref/seek/lavf-wav