diff options
author | Stephen Hutchinson <qyot27@gmail.com> | 2021-01-03 17:58:36 -0500 |
---|---|---|
committer | Stephen Hutchinson <qyot27@gmail.com> | 2021-03-11 14:21:30 -0500 |
commit | 16e8ea0dde6c0de9bb94d1634e0ed0ad85fd642e (patch) | |
tree | dc5f8cb5d1318c792517b7cf9a4b2d1427e8f7fe | |
parent | 8b74458d9303454fcbe9869a00df0c08461dfd4c (diff) | |
download | ffmpeg-16e8ea0dde6c0de9bb94d1634e0ed0ad85fd642e.tar.gz |
avisynth: fix audio on big endian
AviSynth+ outputs audio in the same format as the
OS, so assuming little endian formats as input
on big endian OSes results in nothing but static.
Signed-off-by: Stephen Hutchinson <qyot27@gmail.com>
-rw-r--r-- | libavformat/avisynth.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c index 64fb6cc98f..21ae8c183a 100644 --- a/libavformat/avisynth.c +++ b/libavformat/avisynth.c @@ -42,6 +42,13 @@ #define AVISYNTH_LIB AVISYNTH_NAME SLIBSUF #endif +/* Endianness guards for audio */ +#if HAVE_BIGENDIAN + #define PCM(format) (AV_CODEC_ID_PCM_ ## format ## BE) +#else + #define PCM(format) (AV_CODEC_ID_PCM_ ## format ## LE) +#endif + #include <avisynth/avisynth_c.h> typedef struct AviSynthLibrary { @@ -513,16 +520,16 @@ static int avisynth_create_stream_audio(AVFormatContext *s, AVStream *st) st->codecpar->codec_id = AV_CODEC_ID_PCM_U8; break; case AVS_SAMPLE_INT16: - st->codecpar->codec_id = AV_CODEC_ID_PCM_S16LE; + st->codecpar->codec_id = PCM(S16); break; case AVS_SAMPLE_INT24: - st->codecpar->codec_id = AV_CODEC_ID_PCM_S24LE; + st->codecpar->codec_id = PCM(S24); break; case AVS_SAMPLE_INT32: - st->codecpar->codec_id = AV_CODEC_ID_PCM_S32LE; + st->codecpar->codec_id = PCM(S32); break; case AVS_SAMPLE_FLOAT: - st->codecpar->codec_id = AV_CODEC_ID_PCM_F32LE; + st->codecpar->codec_id = PCM(F32); break; default: av_log(s, AV_LOG_ERROR, |