Add plumbing of RtpPacketInfos to each AudioFrame as input for SourceTracker.

This change adds the plumbing of RtpPacketInfo from ChannelReceive::OnRtpPacket() to ChannelReceive::GetAudioFrameWithInfo() for audio. It is a step towards replacing the non-spec compliant ContributingSources that updates itself at packet-receive time, with the spec-compliant SourceTracker that will update itself at frame-delivery-to-track time.

Bug: webrtc:10668
Change-Id: I03385d6865bbc7bfbef7634f88de820a934f787a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/139890
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Chen Xing <chxg@google.com>
Cr-Commit-Position: refs/heads/master@{#28434}
This commit is contained in:
Chen Xing
2019-07-01 17:16:32 +02:00
committed by Commit Bot
parent 62eb89d221
commit 3e8ef940fe
23 changed files with 195 additions and 26 deletions

View File

@ -39,7 +39,9 @@ int64_t NetEqPerformanceTest::Run(int runtime_ms,
// Initialize NetEq instance.
NetEq::Config config;
config.sample_rate_hz = kSampRateHz;
NetEq* neteq = NetEq::Create(config, CreateBuiltinAudioDecoderFactory());
webrtc::Clock* clock = webrtc::Clock::GetRealTimeClock();
NetEq* neteq =
NetEq::Create(config, clock, CreateBuiltinAudioDecoderFactory());
// Register decoder in |neteq|.
if (!neteq->RegisterPayloadType(kPayloadType,
SdpAudioFormat("l16", kSampRateHz, 1)))
@ -72,7 +74,6 @@ int64_t NetEqPerformanceTest::Run(int runtime_ms,
RTC_CHECK_EQ(sizeof(input_payload), payload_len);
// Main loop.
webrtc::Clock* clock = webrtc::Clock::GetRealTimeClock();
int64_t start_time_ms = clock->TimeInMilliseconds();
AudioFrame out_frame;
while (time_now_ms < runtime_ms) {

View File

@ -16,6 +16,7 @@
#include "modules/audio_coding/neteq/tools/output_wav_file.h"
#include "modules/audio_coding/neteq/tools/resample_input_audio_file.h"
#include "rtc_base/checks.h"
#include "system_wrappers/include/clock.h"
#include "test/testsupport/file_utils.h"
namespace webrtc {
@ -213,7 +214,8 @@ NetEqQualityTest::NetEqQualityTest(
NetEq::Config config;
config.sample_rate_hz = out_sampling_khz_ * 1000;
neteq_.reset(NetEq::Create(config, decoder_factory));
neteq_.reset(
NetEq::Create(config, Clock::GetRealTimeClock(), decoder_factory));
max_payload_bytes_ = in_size_samples_ * channels_ * sizeof(int16_t);
in_data_.reset(new int16_t[in_size_samples_ * channels_]);
}

View File

@ -20,6 +20,7 @@
#include "modules/audio_coding/neteq/tools/input_audio_file.h"
#include "modules/audio_coding/neteq/tools/rtp_generator.h"
#include "rtc_base/flags.h"
#include "system_wrappers/include/clock.h"
#include "test/gtest.h"
namespace webrtc {

View File

@ -14,6 +14,7 @@
#include <iostream>
#include "modules/rtp_rtcp/source/byte_io.h"
#include "system_wrappers/include/clock.h"
namespace webrtc {
namespace test {
@ -57,7 +58,8 @@ NetEqTest::NetEqTest(const NetEq::Config& config,
std::unique_ptr<NetEqInput> input,
std::unique_ptr<AudioSink> output,
Callbacks callbacks)
: neteq_(NetEq::Create(config, decoder_factory)),
: clock_(0),
neteq_(NetEq::Create(config, &clock_, decoder_factory)),
input_(std::move(input)),
output_(std::move(output)),
callbacks_(callbacks),
@ -92,6 +94,7 @@ NetEqTest::SimulationStepResult NetEqTest::RunToNextGetAudio() {
while (!input_->ended()) {
// Advance time to next event.
RTC_DCHECK(input_->NextEventTime());
clock_.AdvanceTimeMilliseconds(*input_->NextEventTime() - time_now_ms);
time_now_ms = *input_->NextEventTime();
// Check if it is time to insert packet.
if (input_->NextPacketTime() && time_now_ms >= *input_->NextPacketTime()) {

View File

@ -23,6 +23,7 @@
#include "modules/audio_coding/neteq/include/neteq.h"
#include "modules/audio_coding/neteq/tools/audio_sink.h"
#include "modules/audio_coding/neteq/tools/neteq_input.h"
#include "system_wrappers/include/clock.h"
namespace webrtc {
namespace test {
@ -106,6 +107,7 @@ class NetEqTest : public NetEqSimulator {
private:
void RegisterDecoders(const DecoderMap& codecs);
SimulatedClock clock_;
absl::optional<Action> next_action_;
absl::optional<int> last_packet_time_ms_;
std::unique_ptr<NetEq> neteq_;