diff mbox series

[FFmpeg-devel] avcodec/libilbc: Support newer libiLBC versions

Message ID 20210311004859.1412145-1-andreas.rheinhardt@gmail.com
State Accepted
Commit f4f5da0d9167bb3ebf7519ded2a9965bac5404bf
Headers show
Series [FFmpeg-devel] avcodec/libilbc: Support newer libiLBC versions | expand

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

Andreas Rheinhardt March 11, 2021, 12:48 a.m. UTC
Beginning with version 3.0, libiLBC switched the types of some parts
of their public API to size_t and renamed some types; the old names
continue to work as typedefs, but are deprecated. It furthermore
added version macros.

This commit uses said version macro to use the new types when using
newer libiLBC versions.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
---
 libavcodec/libilbc.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Timothy Gu March 11, 2021, 1:01 a.m. UTC | #1
On Wed, Mar 10, 2021 at 7:49 PM Andreas Rheinhardt
<andreas.rheinhardt@gmail.com> wrote:
> Beginning with version 3.0, libiLBC switched the types of some parts
> of their public API to size_t and renamed some types; the old names
> continue to work as typedefs, but are deprecated. It furthermore
> added version macros.
>
> This commit uses said version macro to use the new types when using
> newer libiLBC versions.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
> ---
>  libavcodec/libilbc.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)

LGTM. Thanks!

[...]

Best,
Timothy
diff mbox series

Patch

diff --git a/libavcodec/libilbc.c b/libavcodec/libilbc.c
index 08f951ac2d..9c82589918 100644
--- a/libavcodec/libilbc.c
+++ b/libavcodec/libilbc.c
@@ -27,6 +27,10 @@ 
 #include "avcodec.h"
 #include "internal.h"
 
+#ifndef LIBILBC_VERSION_MAJOR
+#define LIBILBC_VERSION_MAJOR 2
+#endif
+
 static int get_mode(AVCodecContext *avctx)
 {
     if (avctx->block_align == 38)
@@ -41,7 +45,11 @@  static int get_mode(AVCodecContext *avctx)
 
 typedef struct ILBCDecContext {
     const AVClass *class;
+#if LIBILBC_VERSION_MAJOR < 3
     iLBC_Dec_Inst_t decoder;
+#else
+    IlbcDecoder decoder;
+#endif
     int enhance;
 } ILBCDecContext;
 
@@ -87,7 +95,12 @@  static int ilbc_decode_frame(AVCodecContext *avctx, void *data,
     int ret;
 
     if (s->decoder.no_of_bytes > buf_size) {
+#if LIBILBC_VERSION_MAJOR < 3
         av_log(avctx, AV_LOG_ERROR, "iLBC frame too short (%u, should be %u)\n",
+#else
+        av_log(avctx, AV_LOG_ERROR, "iLBC frame too short (%u, should be "
+                                    "%"SIZE_SPECIFIER")\n",
+#endif
                buf_size, s->decoder.no_of_bytes);
         return AVERROR_INVALIDDATA;
     }
@@ -117,7 +130,11 @@  AVCodec ff_libilbc_decoder = {
 
 typedef struct ILBCEncContext {
     const AVClass *class;
+#if LIBILBC_VERSION_MAJOR < 3
     iLBC_Enc_Inst_t encoder;
+#else
+    IlbcEncoder encoder;
+#endif
     int mode;
 } ILBCEncContext;