mirror of
https://github.com/mstorsjo/fdk-aac.git
synced 2025-02-28 08:27:43 +01:00
Fix SBR encoder element mapping for channel configurations with more than one layer
Bug: 149489652 Test: atest android.media.cts.EncoderTest#testAACEncoders Change-Id: I8cd9e7f9aaeb62629f916f8d0dba7422d9a5e878
This commit is contained in:
parent
7b5389e63f
commit
6b0aab087d
@ -446,6 +446,24 @@ static SBR_PS_SIGNALING getSbrSignalingMode(
|
|||||||
return sbrSignaling;
|
return sbrSignaling;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline INT getAssociatedChElement(SBR_ELEMENT_INFO *elInfoSbr,
|
||||||
|
CHANNEL_MAPPING *channelMapping) {
|
||||||
|
ELEMENT_INFO *elInfo = channelMapping->elInfo;
|
||||||
|
INT nElements = channelMapping->nElements;
|
||||||
|
INT associatedChElement = -1;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < nElements; i++) {
|
||||||
|
if (elInfoSbr->elType == elInfo[i].elType &&
|
||||||
|
elInfoSbr->instanceTag == elInfo[i].instanceTag) {
|
||||||
|
associatedChElement = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return associatedChElement;
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
Allocate Encoder
|
Allocate Encoder
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -1921,7 +1939,15 @@ AACENC_ERROR aacEncEncode(const HANDLE_AACENCODER hAacEncoder,
|
|||||||
{
|
{
|
||||||
hAacEncoder->extPayload[nExtensions].dataSize =
|
hAacEncoder->extPayload[nExtensions].dataSize =
|
||||||
hAacEncoder->pSbrPayload->dataSize[nPayload][i];
|
hAacEncoder->pSbrPayload->dataSize[nPayload][i];
|
||||||
hAacEncoder->extPayload[nExtensions].associatedChElement = i;
|
hAacEncoder->extPayload[nExtensions].associatedChElement =
|
||||||
|
getAssociatedChElement(
|
||||||
|
&hAacEncoder->hEnvEnc->sbrElement[i]->elInfo,
|
||||||
|
&hAacEncoder->hAacEnc->channelMapping);
|
||||||
|
if (hAacEncoder->extPayload[nExtensions].associatedChElement ==
|
||||||
|
-1) {
|
||||||
|
err = AACENC_ENCODE_ERROR;
|
||||||
|
goto bail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
hAacEncoder->extPayload[nExtensions].dataType =
|
hAacEncoder->extPayload[nExtensions].dataType =
|
||||||
EXT_SBR_DATA; /* Once SBR Encoder supports SBR CRC set
|
EXT_SBR_DATA; /* Once SBR Encoder supports SBR CRC set
|
||||||
|
Loading…
x
Reference in New Issue
Block a user