Audio: support for libavcodec < 55

This commit is contained in:
Martin Pulec
2013-11-13 17:54:16 +01:00
parent f06aded30b
commit 32101ef8c1
2 changed files with 16 additions and 8 deletions

View File

@@ -2423,7 +2423,6 @@ else
fi
else # Linux, OS X
PKG_CHECK_MODULES([LIBAVCODEC], [libavcodec >= 53.35.0 ], [found_libavcodec=yes], [found_libavcodec=no])
PKG_CHECK_MODULES([LIBAVCODEC_GE_55], [libavcodec >= 55.0.0 ], [libavcodec_ge_55=yes], [libavcodec_ge_55=no])
PKG_CHECK_MODULES([LIBAVUTIL], [libavutil >= 51.22.1 ], [found_libavutil=yes], [found_libavutil=no])
fi
@@ -2433,12 +2432,11 @@ then
AC_DEFINE([HAVE_LAVC], [1], [Build with LAVC support])
AC_SUBST(LIBAVCODEC_COMPRESS_LIB_TARGET, "lib/ultragrid/vcompress_libavcodec.so.$video_compress_abi_version")
AC_SUBST(LIBAVCODEC_DECOMPRESS_LIB_TARGET, "lib/ultragrid/vdecompress_libavcodec.so.$video_decompress_abi_version")
if test $libavcodec_ge_55 = yes; then
AC_SUBST(LIBAVCODEC_AUDIO_CODEC_LIB_TARGET, "lib/ultragrid/acodec_libavcodec.so.$audio_codec_abi_version")
AC_DEFINE([HAVE_LAVC_AUDIO], [1], [Build with LAVC audio support])
libavcodec_audio=yes
LIBAVCODEC_AUDIO_CODEC_OBJ=src/audio/codec/libavcodec.o
fi
AC_SUBST(LIBAVCODEC_AUDIO_CODEC_LIB_TARGET, "lib/ultragrid/acodec_libavcodec.so.$audio_codec_abi_version")
AC_DEFINE([HAVE_LAVC_AUDIO], [1], [Build with LAVC audio support])
LIBAVCODEC_AUDIO_CODEC_OBJ=src/audio/codec/libavcodec.o
LIB_TARGETS="$LIB_TARGETS $LIBAVCODEC_COMPRESS_LIB_TARGET $LIBAVCODEC_DECOMPRESS_LIB_TARGET $LIBAVCODEC_AUDIO_CODEC_LIB_TARGET"
LIBAVCODEC_COMPRESS_OBJ=src/video_compress/libavcodec.o
LIBAVCODEC_DECOMPRESS_OBJ=src/video_decompress/libavcodec.o
@@ -2587,7 +2585,7 @@ RESULT=\
Realtime DXT (OpenGL) ....... $rtdxt
JPEG ........................ $jpeg (static: $jpeg_static)
UYVY dummy compression ...... $uyvy
Libavcodec .................. $libavcodec (audio: $libavcodec_audio)
Libavcodec .................. $libavcodec
scale postprocessor ......... $scale
testcard extras ............. $testcard_extras_req

View File

@@ -55,7 +55,9 @@
#include "audio/codec/libavcodec.h"
#include <libavcodec/avcodec.h>
#if LIBAVCODEC_VERSION_MAJOR >= 55
#include <libavutil/channel_layout.h>
#endif
#include <libavutil/mem.h>
#include "audio/audio.h"
@@ -99,7 +101,9 @@ static const audio_codec_t_to_codec_id_mapping_t mapping[] =
[AC_MULAW] = { .codec_id = AV_CODEC_ID_PCM_MULAW },
[AC_ADPCM_IMA_WAV] = { .codec_id = AV_CODEC_ID_ADPCM_IMA_WAV },
[AC_SPEEX] = { .codec_id = AV_CODEC_ID_SPEEX },
#if LIBAVCODEC_VERSION_MAJOR >= 55
[AC_OPUS] = { .codec_id = AV_CODEC_ID_OPUS },
#endif
[AC_G722] = { .codec_id = AV_CODEC_ID_ADPCM_G722 },
[AC_G726] = { .codec_id = AV_CODEC_ID_ADPCM_G726 },
};
@@ -240,7 +244,9 @@ static bool reinitialize_coder(struct libavcodec_codec_state *s, struct audio_de
s->av_frame->nb_samples = s->codec_ctx->frame_size;
s->av_frame->format = s->codec_ctx->sample_fmt;
#if LIBAVCODEC_VERSION_MAJOR >= 55
s->av_frame->channel_layout = AV_CH_LAYOUT_MONO;
#endif
int channels = 1;
/* the codec gives us the frame size, in samples,
@@ -432,7 +438,11 @@ static void libavcodec_done(void *state)
free(s->tmp.data);
av_free_packet(&s->pkt);
av_freep(&s->samples);
#if LIBAVCODEC_VERSION_MAJOR >= 55
avcodec_free_frame(&s->av_frame);
#else
av_free(s->av_frame);
#endif
free(s);
}