Martin Storsjö
2018-09-12 20:23:36 UTC
MSVC expands the preprocessor directives differently, making the
version check fail in the previous form.
---
I'm pretty sure I've seen a better description of this issue somewhere,
I don't remember off-hand right now where that was. But I think the
gist of it was that the previous form was undefined according to the
C standard, even if GCC and clang handle it in the same way.
---
libavcodec/libfdk-aacdec.c | 9 ++++++---
libavcodec/libfdk-aacenc.c | 9 ++++++---
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/libavcodec/libfdk-aacdec.c b/libavcodec/libfdk-aacdec.c
index ca70a49ad4..63856232d9 100644
--- a/libavcodec/libfdk-aacdec.c
+++ b/libavcodec/libfdk-aacdec.c
@@ -25,10 +25,13 @@
#include "avcodec.h"
#include "internal.h"
+#ifdef AACDECODER_LIB_VL0
#define FDKDEC_VER_AT_LEAST(vl0, vl1) \
- (defined(AACDECODER_LIB_VL0) && \
- ((AACDECODER_LIB_VL0 > vl0) || \
- (AACDECODER_LIB_VL0 == vl0 && AACDECODER_LIB_VL1 >= vl1)))
+ ((AACDECODER_LIB_VL0 > vl0) || \
+ (AACDECODER_LIB_VL0 == vl0 && AACDECODER_LIB_VL1 >= vl1))
+#else
+#define FDKDEC_VER_AT_LEAST(vl0, vl1) 0
+#endif
#if !FDKDEC_VER_AT_LEAST(2, 5) // < 2.5.10
#define AAC_PCM_MAX_OUTPUT_CHANNELS AAC_PCM_OUTPUT_CHANNELS
diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c
index f71a276403..3b492ef8f4 100644
--- a/libavcodec/libfdk-aacenc.c
+++ b/libavcodec/libfdk-aacenc.c
@@ -26,10 +26,13 @@
#include "audio_frame_queue.h"
#include "internal.h"
+#ifdef AACENCODER_LIB_VL0
#define FDKENC_VER_AT_LEAST(vl0, vl1) \
- (defined(AACENCODER_LIB_VL0) && \
- ((AACENCODER_LIB_VL0 > vl0) || \
- (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1)))
+ ((AACENCODER_LIB_VL0 > vl0) || \
+ (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1))
+#else
+#define FDKENC_VER_AT_LEAST(vl0, vl1) 0
+#endif
typedef struct AACContext {
const AVClass *class;
version check fail in the previous form.
---
I'm pretty sure I've seen a better description of this issue somewhere,
I don't remember off-hand right now where that was. But I think the
gist of it was that the previous form was undefined according to the
C standard, even if GCC and clang handle it in the same way.
---
libavcodec/libfdk-aacdec.c | 9 ++++++---
libavcodec/libfdk-aacenc.c | 9 ++++++---
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/libavcodec/libfdk-aacdec.c b/libavcodec/libfdk-aacdec.c
index ca70a49ad4..63856232d9 100644
--- a/libavcodec/libfdk-aacdec.c
+++ b/libavcodec/libfdk-aacdec.c
@@ -25,10 +25,13 @@
#include "avcodec.h"
#include "internal.h"
+#ifdef AACDECODER_LIB_VL0
#define FDKDEC_VER_AT_LEAST(vl0, vl1) \
- (defined(AACDECODER_LIB_VL0) && \
- ((AACDECODER_LIB_VL0 > vl0) || \
- (AACDECODER_LIB_VL0 == vl0 && AACDECODER_LIB_VL1 >= vl1)))
+ ((AACDECODER_LIB_VL0 > vl0) || \
+ (AACDECODER_LIB_VL0 == vl0 && AACDECODER_LIB_VL1 >= vl1))
+#else
+#define FDKDEC_VER_AT_LEAST(vl0, vl1) 0
+#endif
#if !FDKDEC_VER_AT_LEAST(2, 5) // < 2.5.10
#define AAC_PCM_MAX_OUTPUT_CHANNELS AAC_PCM_OUTPUT_CHANNELS
diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c
index f71a276403..3b492ef8f4 100644
--- a/libavcodec/libfdk-aacenc.c
+++ b/libavcodec/libfdk-aacenc.c
@@ -26,10 +26,13 @@
#include "audio_frame_queue.h"
#include "internal.h"
+#ifdef AACENCODER_LIB_VL0
#define FDKENC_VER_AT_LEAST(vl0, vl1) \
- (defined(AACENCODER_LIB_VL0) && \
- ((AACENCODER_LIB_VL0 > vl0) || \
- (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1)))
+ ((AACENCODER_LIB_VL0 > vl0) || \
+ (AACENCODER_LIB_VL0 == vl0 && AACENCODER_LIB_VL1 >= vl1))
+#else
+#define FDKENC_VER_AT_LEAST(vl0, vl1) 0
+#endif
typedef struct AACContext {
const AVClass *class;
--
2.15.2 (Apple Git-101.1)
2.15.2 (Apple Git-101.1)