From dbf96806482b2c48de4ba1da9a03e2bb7516b8c2 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Thu, 29 Aug 2013 12:29:46 -0700 Subject: Encoder explicit signaling * AAC-Encoder - Revise explicit signaling method which is required for downsampled SBR. The parameter is optional and default configuration is implicit signaling for dualrate SBR as before. In case of downsampled SBR and HE-AAC explicit signaling is configured as default. Modified file(s): documentation\aacEncoder.pdf libAACenc\include\aacenc_lib.h libAACenc\src\aacenc_lib.cpp libMpegTPEnc\src\tpenc_asc.cpp libMpegTPEnc\src\version libSYS\include\FDK_audio.h libSYS\src\genericStds.cpp Bug 9428126 Change-Id: I35138140346f17384d109ee5829be9ea5bab80fc --- libMpegTPEnc/src/tpenc_asc.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'libMpegTPEnc/src/tpenc_asc.cpp') diff --git a/libMpegTPEnc/src/tpenc_asc.cpp b/libMpegTPEnc/src/tpenc_asc.cpp index 5ba71c8..3f10ca4 100644 --- a/libMpegTPEnc/src/tpenc_asc.cpp +++ b/libMpegTPEnc/src/tpenc_asc.cpp @@ -474,7 +474,7 @@ int transportEnc_writeASC ( break; } - if (config->extAOT == AOT_SBR || config->extAOT == AOT_PS) + if (config->sbrSignaling==SIG_EXPLICIT_HIERARCHICAL && config->sbrPresent) writeAot(asc, config->extAOT); else writeAot(asc, config->aot); @@ -492,7 +492,7 @@ int transportEnc_writeASC ( FDKwriteBits( asc, getChannelConfig(config->channelMode), 4 ); - if (config->extAOT == AOT_SBR || config->extAOT == AOT_PS) { + if (config->sbrSignaling==SIG_EXPLICIT_HIERARCHICAL && config->sbrPresent) { writeSampleRate(asc, config->extSamplingRate); writeAot(asc, config->aot); } @@ -545,6 +545,26 @@ int transportEnc_writeASC ( break; } + /* backward compatible explicit signaling of extension AOT */ + if (config->sbrSignaling==SIG_EXPLICIT_BW_COMPATIBLE) + { + TP_ASC_EXTENSION_ID ascExtId = ASCEXT_UNKOWN; + + if (config->sbrPresent) { + ascExtId=ASCEXT_SBR; + FDKwriteBits( asc, ascExtId, 11 ); + writeAot(asc, config->extAOT); + FDKwriteBits( asc, 1, 1 ); /* sbrPresentFlag=1 */ + writeSampleRate(asc, config->extSamplingRate); + if (config->psPresent) { + ascExtId=ASCEXT_PS; + FDKwriteBits( asc, ascExtId, 11 ); + FDKwriteBits( asc, 1, 1 ); /* psPresentFlag=1 */ + } + } + + } + /* Make sure all bits are sync'ed */ FDKsyncCache( asc ); -- cgit v1.2.3