Я пытаюсь написать простой аудио поток / медиаплеер на C / C ++. Проблема в том, что некоторые из потоков, которые я должен воспроизвести, это HE-AAC. Вот мой код для определения типов аудио из необработанных данных:
int Audio_GetType(const uint8_t *pData)
{
if ((pData[0] == 0xFF) && ((pData[1] & 0xE0) == 0xE0))
{
if ((((pData[1] & 0x06) >> 1) != 0x00) &&
(((pData[2] & 0xF0) >> 4) != 0x0F) &&
(((pData[2] & 0x0C) >> 2) != 0x03))
{
return TYPE_MP3;
}
}
if ((pData[0] == 0xFF) && ((pData[1] & 0xF0) == 0xF0))
{
return TYPE_AAC;
}
if ((pData[0] == 0x0B) && (pData[1] == 0x77))
{
return TYPE_AC3;
}
return TYPE_INVALID;
}
Может кто-нибудь сказать мне, как получить, если поток является HE-AAC? Например, я могу найти ADTS AAC с 0xFF
синхронизировать так (pData[0] == 0xFF) && ((pData[1] & 0xF0) == 0xF0)
,
Как я могу узнать, что поток является HE-AAC?
Задача ещё не решена.
Других решений пока нет …