diff --git a/src/Extension/AAC.cpp b/src/Extension/AAC.cpp index f06ae715..33f28dce 100644 --- a/src/Extension/AAC.cpp +++ b/src/Extension/AAC.cpp @@ -161,6 +161,7 @@ int dumpAacConfig(const string &config, size_t length, uint8_t *out, size_t out_ if (ret < 0) { WarnL << "生成adts头失败:" << ret << ", aac config:" << hexdump(config.data(), config.size()); } + assert((int)out_size >= ret); return ret; #endif } @@ -280,6 +281,9 @@ bool AACTrack::inputFrame(const Frame::Ptr &frame) { if (frame_len < ADTS_HEADER_LEN) { break; } + if (frame_len == frame->size()) { + return inputFrame_l(frame); + } auto sub_frame = std::make_shared >(frame, (char *) ptr, frame_len, ADTS_HEADER_LEN); ptr += frame_len; if (ptr > end) { diff --git a/src/Extension/AACRtp.cpp b/src/Extension/AACRtp.cpp index c9293fc1..f6677833 100644 --- a/src/Extension/AACRtp.cpp +++ b/src/Extension/AACRtp.cpp @@ -138,7 +138,7 @@ void AACRtpDecoder::flushData() { _frame->_prefix_size = ADTS_HEADER_LEN; } else { //没有adts头则插入adts头 - char adts_header[32] = {0}; + char adts_header[128] = {0}; auto size = dumpAacConfig(_aac_cfg, _frame->_buffer.size(), (uint8_t *) adts_header, sizeof(adts_header)); if (size > 0) { //插入adts头