【问题标题】:How to construct Codec Specific Data (CSD) from AAC-ADTS header?如何从 AAC-ADTS 标头构造编解码器特定数据 (CSD)?
【发布时间】: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


【解决方案1】:

找到了。使用 MakeAACCodecSpecificData 函数构造的 CSD 数据 avc_utils.cpp

【讨论】:

    猜你喜欢
    • 2012-11-20
    • 2020-06-08
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多