mirror of
https://github.com/mstorsjo/fdk-aac.git
synced 2025-02-17 19:50:35 +01:00
Decoder parse ASC
* AAC-Decoder - Add support for explicit backward compatible signaling via ASC extension. Bug 9428126 Change-Id: I0cb8226da07e3684bbb7eb95d10b6040973aa0f6
This commit is contained in:
parent
5016eb7f65
commit
206a397c70
@ -110,7 +110,7 @@ amm-info@iis.fraunhofer.de
|
|||||||
/* Decoder library info */
|
/* Decoder library info */
|
||||||
#define AACDECODER_LIB_VL0 2
|
#define AACDECODER_LIB_VL0 2
|
||||||
#define AACDECODER_LIB_VL1 5
|
#define AACDECODER_LIB_VL1 5
|
||||||
#define AACDECODER_LIB_VL2 4
|
#define AACDECODER_LIB_VL2 5
|
||||||
#define AACDECODER_LIB_TITLE "AAC Decoder Lib"
|
#define AACDECODER_LIB_TITLE "AAC Decoder Lib"
|
||||||
#define AACDECODER_LIB_BUILD_DATE __DATE__
|
#define AACDECODER_LIB_BUILD_DATE __DATE__
|
||||||
#define AACDECODER_LIB_BUILD_TIME __TIME__
|
#define AACDECODER_LIB_BUILD_TIME __TIME__
|
||||||
|
@ -834,6 +834,62 @@ bail:
|
|||||||
#endif /* TP_ELD_ENABLE */
|
#endif /* TP_ELD_ENABLE */
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
TRANSPORTDEC_ERROR AudioSpecificConfig_ExtensionParse(CSAudioSpecificConfig *self, HANDLE_FDK_BITSTREAM bs, CSTpCallBacks *cb)
|
||||||
|
{
|
||||||
|
TP_ASC_EXTENSION_ID lastAscExt, ascExtId = ASCEXT_UNKOWN;
|
||||||
|
INT bitsAvailable = (INT)FDKgetValidBits(bs);
|
||||||
|
|
||||||
|
while (bitsAvailable >= 11)
|
||||||
|
{
|
||||||
|
lastAscExt = ascExtId;
|
||||||
|
ascExtId = (TP_ASC_EXTENSION_ID)FDKreadBits(bs, 11);
|
||||||
|
bitsAvailable -= 11;
|
||||||
|
|
||||||
|
switch (ascExtId) {
|
||||||
|
case ASCEXT_SBR: /* 0x2b7 */
|
||||||
|
if ( (self->m_extensionAudioObjectType != AOT_SBR) && (bitsAvailable >= 5) ) {
|
||||||
|
self->m_extensionAudioObjectType = getAOT(bs);
|
||||||
|
|
||||||
|
if ( (self->m_extensionAudioObjectType == AOT_SBR)
|
||||||
|
|| (self->m_extensionAudioObjectType == AOT_ER_BSAC) )
|
||||||
|
{ /* Get SBR extension configuration */
|
||||||
|
self->m_sbrPresentFlag = FDKreadBits(bs, 1);
|
||||||
|
bitsAvailable -= 1;
|
||||||
|
|
||||||
|
if ( self->m_sbrPresentFlag == 1 ) {
|
||||||
|
self->m_extensionSamplingFrequency = getSampleRate(bs, &self->m_extensionSamplingFrequencyIndex, 4);
|
||||||
|
|
||||||
|
if ((INT)self->m_extensionSamplingFrequency <= 0) {
|
||||||
|
return TRANSPORTDEC_PARSE_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( self->m_extensionAudioObjectType == AOT_ER_BSAC ) {
|
||||||
|
self->m_extensionChannelConfiguration = FDKreadBits(bs, 4);
|
||||||
|
bitsAvailable -= 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Update counter because of variable length fields (AOT and sampling rate) */
|
||||||
|
bitsAvailable = (INT)FDKgetValidBits(bs);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ASCEXT_PS: /* 0x548 */
|
||||||
|
if ( (lastAscExt == ASCEXT_SBR)
|
||||||
|
&& (self->m_extensionAudioObjectType == AOT_SBR)
|
||||||
|
&& (bitsAvailable > 0) )
|
||||||
|
{ /* Get PS extension configuration */
|
||||||
|
self->m_psPresentFlag = FDKreadBits(bs, 1);
|
||||||
|
bitsAvailable -= 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* Just ignore anything. */
|
||||||
|
return TRANSPORTDEC_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRANSPORTDEC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* API Functions
|
* API Functions
|
||||||
@ -984,6 +1040,9 @@ TRANSPORTDEC_ERROR AudioSpecificConfig_Parse(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fExplicitBackwardCompatible) {
|
||||||
|
ErrorStatus = AudioSpecificConfig_ExtensionParse(self, bs, cb);
|
||||||
|
}
|
||||||
|
|
||||||
return (ErrorStatus);
|
return (ErrorStatus);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/* library info */
|
/* library info */
|
||||||
#define TP_LIB_VL0 2
|
#define TP_LIB_VL0 2
|
||||||
#define TP_LIB_VL1 3
|
#define TP_LIB_VL1 3
|
||||||
#define TP_LIB_VL2 2
|
#define TP_LIB_VL2 3
|
||||||
#define TP_LIB_TITLE "MPEG Transport"
|
#define TP_LIB_TITLE "MPEG Transport"
|
||||||
#define TP_LIB_BUILD_DATE __DATE__
|
#define TP_LIB_BUILD_DATE __DATE__
|
||||||
#define TP_LIB_BUILD_TIME __TIME__
|
#define TP_LIB_BUILD_TIME __TIME__
|
||||||
|
Loading…
x
Reference in New Issue
Block a user