diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2013-08-29 12:29:46 -0700 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2013-09-03 11:31:55 -0700 |
commit | dbf96806482b2c48de4ba1da9a03e2bb7516b8c2 (patch) | |
tree | 102531985954bb98d15bbf7dfe8495f33e8ed4ca /libMpegTPEnc/src/tpenc_asc.cpp | |
parent | 3aec97e388e29a1d03f0197b27b893bc6aaf8ac3 (diff) | |
download | fdk-aac-dbf96806482b2c48de4ba1da9a03e2bb7516b8c2.tar.gz fdk-aac-dbf96806482b2c48de4ba1da9a03e2bb7516b8c2.tar.bz2 fdk-aac-dbf96806482b2c48de4ba1da9a03e2bb7516b8c2.zip |
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
Diffstat (limited to 'libMpegTPEnc/src/tpenc_asc.cpp')
-rw-r--r-- | libMpegTPEnc/src/tpenc_asc.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
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 ); |