Let NetEq use the PLC output from a decoder
This change enables NetEq to use the packet concealment audio (aka PLC) produced by a decoder. The change also includes a new API to the AudioDecoder interface, which lets the decoder implementation generate and deliver concealment audio. Bug: webrtc:9180 Change-Id: Icaacebccf645d4694b0d2d6310f6f2c7132881c4 Reviewed-on: https://webrtc-review.googlesource.com/96340 Commit-Queue: Henrik Lundin <henrik.lundin@webrtc.org> Reviewed-by: Minyue Li <minyue@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24738}
This commit is contained in:
committed by
Commit Bot
parent
e899629be4
commit
00eb12a20c
@ -164,7 +164,8 @@ Operations DecisionLogic::GetDecision(const SyncBuffer& sync_buffer,
|
||||
// if the mute factor is low enough (otherwise the expansion was short enough
|
||||
// to not be noticable).
|
||||
// Note that the MuteFactor is in Q14, so a value of 16384 corresponds to 1.
|
||||
if (postpone_decoding_after_expand_ && prev_mode == kModeExpand &&
|
||||
if (postpone_decoding_after_expand_ &&
|
||||
(prev_mode == kModeExpand || prev_mode == kModeCodecPlc) &&
|
||||
!packet_buffer_.ContainsDtxOrCngPacket(decoder_database_) &&
|
||||
cur_size_samples<static_cast<size_t>(delay_manager_->TargetLevel() *
|
||||
packet_length_samples_)>> 8 &&
|
||||
@ -302,9 +303,9 @@ Operations DecisionLogic::FuturePacketAvailable(
|
||||
// Check if we should continue with an ongoing expand because the new packet
|
||||
// is too far into the future.
|
||||
uint32_t timestamp_leap = available_timestamp - target_timestamp;
|
||||
if ((prev_mode == kModeExpand) && !ReinitAfterExpands(timestamp_leap) &&
|
||||
!MaxWaitForPacket() && PacketTooEarly(timestamp_leap) &&
|
||||
UnderTargetLevel()) {
|
||||
if ((prev_mode == kModeExpand || prev_mode == kModeCodecPlc) &&
|
||||
!ReinitAfterExpands(timestamp_leap) && !MaxWaitForPacket() &&
|
||||
PacketTooEarly(timestamp_leap) && UnderTargetLevel()) {
|
||||
if (play_dtmf) {
|
||||
// Still have DTMF to play, so do not do expand.
|
||||
return kDtmf;
|
||||
@ -314,6 +315,10 @@ Operations DecisionLogic::FuturePacketAvailable(
|
||||
}
|
||||
}
|
||||
|
||||
if (prev_mode == kModeCodecPlc) {
|
||||
return kNormal;
|
||||
}
|
||||
|
||||
const size_t samples_left =
|
||||
sync_buffer.FutureLength() - expand.overlap_length();
|
||||
const size_t cur_size_samples =
|
||||
|
||||
Reference in New Issue
Block a user