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:
@ -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) {
|
||||
|
||||
@ -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_]);
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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()) {
|
||||
|
||||
@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user