【发布时间】:2015-11-28 09:55:50
【问题描述】:
如何从 ADTS 标头构造 CSD 数据?我可以为 CSD 数据创建 ADTS 标头,但是如何做相反的操作?
/* function to construct ADTS header from CSD
* header_info - contains CSD
* frameLength - total frame size */
void addHeaderADTS(uint8_t header_info[], uint32_t frameLength) {
int profile = (csd_data[0] >> 3) & 0x1F;
int frequency_idx = ((csd_data[0] & 0x7) << 1) | ((csd_data[1] >> 7) & 0x1);
int channels = (csd_data[1] >> 3) & 0xF;
header_info[0] = 0xFF;
header_info[1] = 0xF1;
header_info[2] = (((profile - 1) << 6) + (frequency_idx << 2) + (channels >> 2));
header_info[3] = (((channels & 3) << 6) + (frameLength >> 11));
header_info[4] = ((frameLength & 0x7FF) >> 3);
header_info[5] = (((frameLength & 7) << 5) + 0x1F);
header_info[6] = 0xFC;
return;
}
【问题讨论】:
-
给我们 CSD 数据?它到底是什么?
-
编解码器特定数据 (CSD) csd_data[0] =0x13, csd_data[1]=0x0x90。要了解 csd,请参阅 wiki.multimedia.cx/… wiki.multimedia.cx/index.php?title=MPEG-4_Audio
-
该 wiki 页面上没有 CSD。该 wiki 页面上也没有 csd_data。
-
我的 CSD 由 2 个字节组成,该 wiki 页面显示了如何读取这两个字节(bitpacking)。 Android 构造的这些 csd 数据。
-
好吧,这是你的第一步。找出真正的 CSD 是什么以及它来自哪里。当你甚至不知道它是什么时,我不明白你如何从 ADTS 中重建它。
标签: android header codec aac adts