mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
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>
This commit is contained in:
parent
8b74458d93
commit
16e8ea0dde
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user