C++ does not allow to mix different enums, so e.g. code comparing
ACodecID with CodecID would fail to compile with gcc.

This very evil hack should fix this problem.
---
 doc/APIchanges             |    2 ++
 libavcodec/Makefile        |    1 +
 libavcodec/avcodec.h       |   11 ++++++++---
 libavcodec/old_codec_ids.h |    6 +-----
 4 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index 436e994..9cadf4f 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,8 @@ API changes, most recent first:
 
 2012-08-xx - xxxxxxx - lavc 54.25 - avcodec.h
   Rename CodecID to AVCodecID and all CODEC_ID_* to AV_CODEC_ID_*.
+  To ensure maximum compatibility, CodecID is now #defined as
+  AVCodecID.
 
 2012-08-03 - xxxxxxx - lavu 51.37.1 - cpu.h
                        lsws 2.1.1   - swscale.h
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 9bff68f..1c2c8ac 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -714,6 +714,7 @@ SKIPHEADERS                            += %_tablegen.h      
            \
                                           fft-internal.h                \
                                           tableprint.h                  \
                                           $(ARCH)/vp56_arith.h          \
+                                          old_codec_ids.h               \
 
 SKIPHEADERS-$(CONFIG_DXVA2)            += dxva2.h dxva2_internal.h
 SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER)  += libschroedinger.h
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index b807ae4..8c28b65 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -76,9 +76,6 @@
  * @{
  */
 
-#if FF_API_CODEC_ID
-#include "old_codec_ids.h"
-#endif
 
 /**
  * Identify the syntax and semantics of the bitstream.
@@ -428,8 +425,16 @@ enum AVCodecID {
     AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 
Systems
                                 * stream (only used by libavformat) */
     AV_CODEC_ID_FFMETADATA = 0x21000,   ///< Dummy codec for streams 
containing only metadata information.
+
+#if FF_API_CODEC_ID
+#include "old_codec_ids.h"
+#endif
 };
 
+#if FF_API_CODEC_ID
+#define CodecID AVCodecID
+#endif
+
 #if FF_API_OLD_DECODE_AUDIO
 /* in bytes */
 #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
diff --git a/libavcodec/old_codec_ids.h b/libavcodec/old_codec_ids.h
index 95b6b73..2b72e38 100644
--- a/libavcodec/old_codec_ids.h
+++ b/libavcodec/old_codec_ids.h
@@ -19,8 +19,6 @@
 #ifndef AVCODEC_OLD_CODEC_IDS_H
 #define AVCODEC_OLD_CODEC_IDS_H
 
-#include "libavutil/attributes.h"
-
 /*
  * This header exists to prevent new codec IDs from being accidentally added to
  * the deprecated list.
@@ -29,8 +27,7 @@
  * Do not add new items to this list. Use the AVCodecID enum instead.
  */
 
-enum CodecID {
-    CODEC_ID_NONE,
+    CODEC_ID_NONE = AV_CODEC_ID_NONE,
 
     /* video codecs */
     CODEC_ID_MPEG1VIDEO,
@@ -365,6 +362,5 @@ enum CodecID {
     CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 
Systems
                                 * stream (only used by libavformat) */
     CODEC_ID_FFMETADATA = 0x21000,   ///< Dummy codec for streams containing 
only metadata information.
-} attribute_deprecated;
 
 #endif /* AVCODEC_OLD_CODEC_IDS_H */
-- 
1.7.10.4

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to