summaryrefslogtreecommitdiffstats
path: root/libFDK/src
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2016-04-09 05:44:33 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-04-09 05:44:33 +0000
commit3b6fe4a90f0e82094a7e5826bf0b3517faf9cfcc (patch)
tree359ed01256a717b0161bfba21783634f1250471a /libFDK/src
parent4a5a256a01c0f6aa0ebd1b94bba77a70fcac75ee (diff)
parent3fbcee802021fc12db8fd6e9e346a2111fe333a9 (diff)
downloadfdk-aac-3b6fe4a90f0e82094a7e5826bf0b3517faf9cfcc.tar.gz
fdk-aac-3b6fe4a90f0e82094a7e5826bf0b3517faf9cfcc.tar.bz2
fdk-aac-3b6fe4a90f0e82094a7e5826bf0b3517faf9cfcc.zip
AAC/SBR decoder improvements and bugfixes am: 203e3f2
am: 3fbcee8 * commit '3fbcee802021fc12db8fd6e9e346a2111fe333a9': AAC/SBR decoder improvements and bugfixes Change-Id: Ic370a51ba08eb6079ab1b74413385e35bf29ecba
Diffstat (limited to 'libFDK/src')
-rw-r--r--libFDK/src/FDK_core.cpp2
-rw-r--r--libFDK/src/FDK_tools_rom.cpp198
2 files changed, 197 insertions, 3 deletions
diff --git a/libFDK/src/FDK_core.cpp b/libFDK/src/FDK_core.cpp
index f4b510d..1d8ac7b 100644
--- a/libFDK/src/FDK_core.cpp
+++ b/libFDK/src/FDK_core.cpp
@@ -93,7 +93,7 @@ amm-info@iis.fraunhofer.de
/* FDK tools library info */
#define FDK_TOOLS_LIB_VL0 2
#define FDK_TOOLS_LIB_VL1 3
-#define FDK_TOOLS_LIB_VL2 5
+#define FDK_TOOLS_LIB_VL2 6
#define FDK_TOOLS_LIB_TITLE "FDK Tools"
#ifdef __ANDROID__
#define FDK_TOOLS_LIB_BUILD_DATE ""
diff --git a/libFDK/src/FDK_tools_rom.cpp b/libFDK/src/FDK_tools_rom.cpp
index 49f0ee1..29e37f2 100644
--- a/libFDK/src/FDK_tools_rom.cpp
+++ b/libFDK/src/FDK_tools_rom.cpp
@@ -2236,7 +2236,7 @@ static const rbd_id_t el_aac_cpe1_epc1[] = {
ics_info,
ms,
ltp_data_present,
- ltp_data,
+ /* ltp_data, */
global_gain,
section_data,
scale_factor_data,
@@ -2247,7 +2247,7 @@ static const rbd_id_t el_aac_cpe1_epc1[] = {
next_channel,
ltp_data_present,
- ltp_data,
+ /* ltp_data, */
global_gain,
section_data,
scale_factor_data,
@@ -2290,7 +2290,178 @@ static const element_list_t node_aac_cpe_epc1 = {
{ &node_aac_cpe0_epc1, &node_aac_cpe1_epc1 }
};
+/*
+ * AOT = 20
+ * epConfig = 0
+ */
+static const rbd_id_t el_scal_sce_epc0[] = {
+ ics_info, /* ESC 1 */
+ tns_data_present,
+ ltp_data_present,
+ /* ltp_data, */
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ esc2_rvlc, /* ESC 2 */
+ tns_data, /* ESC 3 */
+ spectral_data, /* ESC 4 */
+ end_of_sequence
+};
+
+static const struct element_list node_scal_sce_epc0 = {
+ el_scal_sce_epc0,
+ { NULL, NULL }
+};
+
+static const rbd_id_t el_scal_cpe_epc0[] = {
+ ics_info, /* ESC 0 */
+ ms,
+ tns_data_present, /* ESC 1 (ch 0) */
+ ltp_data_present,
+ /* ltp_data, */
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ esc2_rvlc, /* ESC 2 (ch 0) */
+ tns_data, /* ESC 3 (ch 0) */
+ spectral_data, /* ESC 4 (ch 0) */
+ next_channel,
+ tns_data_present, /* ESC 1 (ch 1) */
+ ltp_data_present,
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ esc2_rvlc, /* ESC 2 (ch 1) */
+ tns_data, /* ESC 3 (ch 1) */
+ spectral_data, /* ESC 4 (ch 1) */
+ end_of_sequence
+};
+static const struct element_list node_scal_cpe_epc0 = {
+ el_scal_cpe_epc0,
+ { NULL, NULL }
+};
+
+/*
+ * AOT = 20
+ * epConfig = 1
+ */
+static const rbd_id_t el_scal_sce_epc1[] = {
+ ics_info,
+ tns_data_present,
+ ltp_data_present,
+ /* ltp_data, */
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ tns_data,
+ spectral_data,
+ end_of_sequence
+};
+
+static const struct element_list node_scal_sce_epc1 = {
+ el_scal_sce_epc1,
+ { NULL, NULL }
+};
+
+static const rbd_id_t el_scal_cpe_epc1[] = {
+ ics_info,
+ ms,
+ tns_data_present,
+ ltp_data_present,
+ /* ltp_data, */
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ next_channel,
+ tns_data_present,
+ ltp_data_present,
+ /* ltp_data, */
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ next_channel,
+ tns_data,
+ next_channel,
+ tns_data,
+ next_channel,
+ spectral_data,
+ next_channel,
+ spectral_data,
+ end_of_sequence
+};
+
+static const struct element_list node_scal_cpe_epc1 = {
+ el_scal_cpe_epc1,
+ { NULL, NULL }
+};
+
+/*
+ * Pseudo AOT for DRM/DRM+ (similar to AOT 20)
+ * Derived from epConfig = 1
+ */
+static const rbd_id_t el_drm_sce[] = {
+ drmcrc_start_reg,
+ ics_info,
+ tns_data_present,
+ ltp_data_present,
+ /* ltp_data, */
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ tns_data,
+ drmcrc_end_reg,
+ spectral_data,
+ end_of_sequence
+};
+
+static const struct element_list node_drm_sce = {
+ el_drm_sce,
+ { NULL, NULL }
+};
+
+static const rbd_id_t el_drm_cpe[] = {
+ drmcrc_start_reg,
+ ics_info,
+ ms,
+ tns_data_present,
+ ltp_data_present,
+ /* ltp_data, */
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ next_channel,
+ tns_data_present,
+ ltp_data_present,
+ /* ltp_data, */
+ global_gain,
+ section_data,
+ scale_factor_data,
+ esc1_hcr,
+ next_channel,
+ tns_data,
+ next_channel,
+ tns_data,
+ drmcrc_end_reg,
+ next_channel,
+ spectral_data,
+ next_channel,
+ spectral_data,
+ end_of_sequence
+};
+
+static const struct element_list node_drm_cpe = {
+ el_drm_cpe,
+ { NULL, NULL }
+};
/*
* AOT = 39
@@ -2405,6 +2576,19 @@ const element_list_t * getBitstreamElementList(AUDIO_OBJECT_TYPE aot, SCHAR epCo
return &node_aac_cpe_epc1;
}
break;
+ case AOT_ER_AAC_SCAL:
+ if (nChannels == 1) {
+ if (epConfig <= 0)
+ return &node_scal_sce_epc0;
+ else
+ return &node_scal_sce_epc1;
+ } else {
+ if (epConfig <= 0)
+ return &node_scal_cpe_epc0;
+ else
+ return &node_scal_cpe_epc1;
+ }
+ break;
case AOT_ER_AAC_ELD:
if (nChannels == 1) {
if (epConfig <= 0)
@@ -2417,6 +2601,16 @@ const element_list_t * getBitstreamElementList(AUDIO_OBJECT_TYPE aot, SCHAR epCo
else
return &node_eld_cpe_epc1;
}
+ case AOT_DRM_AAC:
+ case AOT_DRM_SBR:
+ case AOT_DRM_MPEG_PS:
+ FDK_ASSERT(epConfig == 1);
+ if (nChannels == 1) {
+ return &node_drm_sce;
+ } else {
+ return &node_drm_cpe;
+ }
+ break;
default:
break;
}