Updated to match new identifier for CRC (AV_CRC_8_EBU).
>From c168e5e7b288edc2730a4a14614ead5c22d67289 Mon Sep 17 00:00:00 2001
From: Aurelien Jacobs
Date: Sun, 17 Dec 2017 19:53:35 +0100
Subject: [PATCH 2/9] sbc: implement SBC decoder (low-complexity subband codec)
This was originally based on libsbc, and was fully integrated into ffmpeg.
---
doc/general.texi | 2 +
libavcodec/Makefile | 2 +
libavcodec/allcodecs.c | 2 +
libavcodec/avcodec.h | 2 +
libavcodec/codec_desc.c | 14 ++
libavcodec/sbc.c | 280
libavcodec/sbc.h | 121
libavcodec/sbcdec.c | 466 +++
libavcodec/sbcdec_data.c | 127 +
libavcodec/sbcdec_data.h | 44 +
10 files changed, 1060 insertions(+)
create mode 100644 libavcodec/sbc.c
create mode 100644 libavcodec/sbc.h
create mode 100644 libavcodec/sbcdec.c
create mode 100644 libavcodec/sbcdec_data.c
create mode 100644 libavcodec/sbcdec_data.h
diff --git a/doc/general.texi b/doc/general.texi
index 26919c9287..ed137f999f 100644
--- a/doc/general.texi
+++ b/doc/general.texi
@@ -1102,6 +1102,8 @@ following image formats are supported:
@tab Real low bitrate AC-3 codec
@item RealAudio Lossless @tab @tab X
@item RealAudio SIPR / ACELP.NET @tab @tab X
+@item SBC (low-complexity subband codec) @tab @tab X
+@tab Used in Bluetooth A2DP
@item Shorten@tab @tab X
@item Sierra VMD audio @tab @tab X
@tab Used in Sierra VMD files.
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index ca72138c02..c46d102227 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -581,6 +581,8 @@ OBJS-$(CONFIG_SUBVIEWER_DECODER) += subviewerdec.o ass.o
OBJS-$(CONFIG_SUNRAST_DECODER) += sunrast.o
OBJS-$(CONFIG_SUNRAST_ENCODER) += sunrastenc.o
OBJS-$(CONFIG_LIBRSVG_DECODER) += librsvgdec.o
+OBJS-$(CONFIG_SBC_DECODER) += sbcdec.o sbcdec_data.o sbc.o
+OBJS-$(CONFIG_MSBC_DECODER)+= sbcdec.o sbcdec_data.o sbc.o
OBJS-$(CONFIG_SVQ1_DECODER)+= svq1dec.o svq1.o svq13.o h263data.o
OBJS-$(CONFIG_SVQ1_ENCODER)+= svq1enc.o svq1.o h263data.o \
h263.o ituh263enc.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index ed1e7ab06e..9e2480d2d4 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -379,6 +379,7 @@ static void register_all(void)
REGISTER_DECODER(MP3ON4FLOAT, mp3on4float);
REGISTER_DECODER(MPC7, mpc7);
REGISTER_DECODER(MPC8, mpc8);
+REGISTER_DECODER(MSBC, msbc);
REGISTER_ENCDEC (NELLYMOSER,nellymoser);
REGISTER_DECODER(ON2AVC,on2avc);
REGISTER_ENCDEC (OPUS, opus);
@@ -392,6 +393,7 @@ static void register_all(void)
REGISTER_DECODER(SHORTEN, shorten);
REGISTER_DECODER(SIPR, sipr);
REGISTER_DECODER(SMACKAUD, smackaud);
+REGISTER_DECODER(SBC, sbc);
REGISTER_ENCDEC (SONIC, sonic);
REGISTER_ENCODER(SONIC_LS, sonic_ls);
REGISTER_DECODER(TAK, tak);
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index ce089b7c4a..5b7ec8541d 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -634,6 +634,8 @@ enum AVCodecID {
AV_CODEC_ID_ATRAC3PAL,
AV_CODEC_ID_DOLBY_E,
AV_CODEC_ID_APTX,
+AV_CODEC_ID_SBC,
+AV_CODEC_ID_MSBC,
/* subtitle codecs */
AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
index c3688de1d6..a69897d379 100644
--- a/libavcodec/codec_desc.c
+++ b/libavcodec/codec_desc.c
@@ -2866,6 +2866,20 @@ static const AVCodecDescriptor codec_descriptors[] = {
.long_name = NULL_IF_CONFIG_SMALL("aptX (Audio Processing Technology for Bluetooth)"),
.props = AV_CODEC_PROP_LOSSY,
},
+{
+.id= AV_CODEC_ID_SBC,
+.type = AVMEDIA_TYPE_AUDIO,
+.name = "sbc",
+.long_name = NULL_IF_CONFIG_SMALL("SBC (low-complexity subband codec)"),
+.props = AV_CODEC_PROP_LOSSY,
+},
+{
+.id= AV_CODEC_ID_MSBC,
+.type = AVMEDIA_TYPE_AUDIO,
+.name = "msbc",
+.long_name = NULL_IF_CONFIG_SMALL("mSBC (wideband speech mono SBC)"),
+.props = AV_CODEC_PROP_LOSSY,
+},
/* subtitle codecs */
{
diff --git a/libavcodec/sbc.c b/libavcodec/sbc.c
new file mode 100644
index 00..af3e9a3fa8
--- /dev/null
+++ b/libavcodec/sbc.c
@@ -0,0 +1,280 @@
+/*
+ * Bluetooth low-complexity, subband codec (SBC)
+ *
+ * Copyright (C) 2017 Aurelien Jacobs
+ * Copyright (C) 2012-2013 Intel Corporation
+ *