| Index: media/cast/test/cast_benchmarks.cc
|
| diff --git a/media/cast/test/cast_benchmarks.cc b/media/cast/test/cast_benchmarks.cc
|
| index 29e2d41d31080ec17554ae403420852775769fae..3d3950e5a42c4b70e88ea652fb836dbaa86e527b 100644
|
| --- a/media/cast/test/cast_benchmarks.cc
|
| +++ b/media/cast/test/cast_benchmarks.cc
|
| @@ -71,12 +71,6 @@ namespace {
|
| static const int64_t kStartMillisecond = INT64_C(1245);
|
| static const int kTargetPlayoutDelayMs = 400;
|
|
|
| -void UpdateCastTransportStatus(CastTransportStatus status) {
|
| - bool result = (status == TRANSPORT_AUDIO_INITIALIZED ||
|
| - status == TRANSPORT_VIDEO_INITIALIZED);
|
| - EXPECT_TRUE(result);
|
| -}
|
| -
|
| void ExpectVideoSuccess(OperationalStatus status) {
|
| EXPECT_EQ(STATUS_INITIALIZED, status);
|
| }
|
| @@ -85,9 +79,6 @@ void ExpectAudioSuccess(OperationalStatus status) {
|
| EXPECT_EQ(STATUS_INITIALIZED, status);
|
| }
|
|
|
| -void IgnoreRawEvents(scoped_ptr<std::vector<FrameEvent>> frame_events,
|
| - scoped_ptr<std::vector<PacketEvent>> packet_events) {}
|
| -
|
| } // namespace
|
|
|
| // Wraps a CastTransportSender and records some statistics about
|
| @@ -168,6 +159,8 @@ class CastTransportSenderWrapper : public CastTransportSender {
|
| rtp_receiver_statistics);
|
| }
|
|
|
| + void SetOptions(const base::DictionaryValue& options) final {}
|
| +
|
| private:
|
| scoped_ptr<CastTransportSender> transport_;
|
| uint32_t audio_ssrc_, video_ssrc_;
|
| @@ -220,8 +213,6 @@ class RunOneBenchmark {
|
| task_runner_receiver_,
|
| task_runner_receiver_,
|
| task_runner_receiver_)),
|
| - receiver_to_sender_(cast_environment_receiver_),
|
| - sender_to_receiver_(cast_environment_sender_),
|
| video_bytes_encoded_(0),
|
| audio_bytes_encoded_(0),
|
| frames_sent_(0) {
|
| @@ -269,64 +260,7 @@ class RunOneBenchmark {
|
| task_runner_receiver_->SetSkew(1.0 / skew);
|
| }
|
|
|
| - void Create(const MeasuringPoint& p) {
|
| - net::IPEndPoint dummy_endpoint;
|
| - transport_sender_.Init(
|
| - new CastTransportSenderImpl(
|
| - NULL,
|
| - testing_clock_sender_,
|
| - dummy_endpoint,
|
| - dummy_endpoint,
|
| - make_scoped_ptr(new base::DictionaryValue),
|
| - base::Bind(&UpdateCastTransportStatus),
|
| - base::Bind(&IgnoreRawEvents),
|
| - base::TimeDelta::FromSeconds(1),
|
| - task_runner_sender_,
|
| - PacketReceiverCallback(),
|
| - &sender_to_receiver_),
|
| - &video_bytes_encoded_,
|
| - &audio_bytes_encoded_);
|
| -
|
| - transport_receiver_.reset(
|
| - new CastTransportSenderImpl(
|
| - NULL,
|
| - testing_clock_receiver_,
|
| - dummy_endpoint,
|
| - dummy_endpoint,
|
| - make_scoped_ptr(new base::DictionaryValue),
|
| - base::Bind(&UpdateCastTransportStatus),
|
| - base::Bind(&IgnoreRawEvents),
|
| - base::TimeDelta::FromSeconds(1),
|
| - task_runner_receiver_,
|
| - base::Bind(&RunOneBenchmark::ReceivePacket, base::Unretained(this)),
|
| - &receiver_to_sender_));
|
| -
|
| - cast_receiver_ = CastReceiver::Create(cast_environment_receiver_,
|
| - audio_receiver_config_,
|
| - video_receiver_config_,
|
| - transport_receiver_.get());
|
| -
|
| - cast_sender_ =
|
| - CastSender::Create(cast_environment_sender_, &transport_sender_);
|
| -
|
| - cast_sender_->InitializeAudio(
|
| - audio_sender_config_,
|
| - base::Bind(&ExpectAudioSuccess));
|
| - cast_sender_->InitializeVideo(
|
| - video_sender_config_,
|
| - base::Bind(&ExpectVideoSuccess),
|
| - CreateDefaultVideoEncodeAcceleratorCallback(),
|
| - CreateDefaultVideoEncodeMemoryCallback());
|
| -
|
| - receiver_to_sender_.Initialize(CreateSimplePipe(p),
|
| - transport_sender_.PacketReceiverForTesting(),
|
| - task_runner_, &testing_clock_);
|
| - sender_to_receiver_.Initialize(
|
| - CreateSimplePipe(p), transport_receiver_->PacketReceiverForTesting(),
|
| - task_runner_, &testing_clock_);
|
| -
|
| - task_runner_->RunTasks();
|
| - }
|
| + void Create(const MeasuringPoint& p);
|
|
|
| void ReceivePacket(scoped_ptr<Packet> packet) {
|
| cast_receiver_->ReceivePacket(std::move(packet));
|
| @@ -484,8 +418,8 @@ class RunOneBenchmark {
|
| scoped_refptr<CastEnvironment> cast_environment_sender_;
|
| scoped_refptr<CastEnvironment> cast_environment_receiver_;
|
|
|
| - LoopBackTransport receiver_to_sender_;
|
| - LoopBackTransport sender_to_receiver_;
|
| + LoopBackTransport* receiver_to_sender_; // Owned by CastTransportSenderImpl.
|
| + LoopBackTransport* sender_to_receiver_; // Owned by CastTransportSenderImpl.
|
| CastTransportSenderWrapper transport_sender_;
|
| scoped_ptr<CastTransportSender> transport_receiver_;
|
| uint64_t video_bytes_encoded_;
|
| @@ -501,6 +435,73 @@ class RunOneBenchmark {
|
| std::vector<std::pair<base::TimeTicks, base::TimeTicks> > video_ticks_;
|
| };
|
|
|
| +namespace {
|
| +
|
| +class TransportClient : public CastTransportSender::Client {
|
| + public:
|
| + explicit TransportClient(RunOneBenchmark* run_one_benchmark)
|
| + : run_one_benchmark_(run_one_benchmark) {}
|
| +
|
| + void OnStatusChanged(CastTransportStatus status) final {
|
| + bool result = (status == TRANSPORT_AUDIO_INITIALIZED ||
|
| + status == TRANSPORT_VIDEO_INITIALIZED);
|
| + EXPECT_TRUE(result);
|
| + };
|
| + void OnLoggingEventsReceived(
|
| + scoped_ptr<std::vector<FrameEvent>> frame_events,
|
| + scoped_ptr<std::vector<PacketEvent>> packet_events) final{};
|
| + void ProcessRtpPacket(scoped_ptr<Packet> packet) final {
|
| + if (run_one_benchmark_)
|
| + run_one_benchmark_->ReceivePacket(std::move(packet));
|
| + };
|
| +
|
| + private:
|
| + RunOneBenchmark* const run_one_benchmark_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TransportClient);
|
| +};
|
| +
|
| +} // namepspace
|
| +
|
| +void RunOneBenchmark::Create(const MeasuringPoint& p) {
|
| + sender_to_receiver_ = new LoopBackTransport(cast_environment_sender_);
|
| + transport_sender_.Init(
|
| + new CastTransportSenderImpl(
|
| + testing_clock_sender_, base::TimeDelta::FromSeconds(1),
|
| + make_scoped_ptr(new TransportClient(nullptr)),
|
| + make_scoped_ptr(sender_to_receiver_), task_runner_sender_),
|
| + &video_bytes_encoded_, &audio_bytes_encoded_);
|
| +
|
| + receiver_to_sender_ = new LoopBackTransport(cast_environment_receiver_);
|
| + transport_receiver_.reset(new CastTransportSenderImpl(
|
| + testing_clock_receiver_, base::TimeDelta::FromSeconds(1),
|
| + make_scoped_ptr(new TransportClient(this)),
|
| + make_scoped_ptr(receiver_to_sender_), task_runner_receiver_));
|
| +
|
| + cast_receiver_ =
|
| + CastReceiver::Create(cast_environment_receiver_, audio_receiver_config_,
|
| + video_receiver_config_, transport_receiver_.get());
|
| +
|
| + cast_sender_ =
|
| + CastSender::Create(cast_environment_sender_, &transport_sender_);
|
| +
|
| + cast_sender_->InitializeAudio(audio_sender_config_,
|
| + base::Bind(&ExpectAudioSuccess));
|
| + cast_sender_->InitializeVideo(video_sender_config_,
|
| + base::Bind(&ExpectVideoSuccess),
|
| + CreateDefaultVideoEncodeAcceleratorCallback(),
|
| + CreateDefaultVideoEncodeMemoryCallback());
|
| +
|
| + receiver_to_sender_->Initialize(CreateSimplePipe(p),
|
| + transport_sender_.PacketReceiverForTesting(),
|
| + task_runner_, &testing_clock_);
|
| + sender_to_receiver_->Initialize(
|
| + CreateSimplePipe(p), transport_receiver_->PacketReceiverForTesting(),
|
| + task_runner_, &testing_clock_);
|
| +
|
| + task_runner_->RunTasks();
|
| +}
|
| +
|
| enum CacheResult { FOUND_TRUE, FOUND_FALSE, NOT_FOUND };
|
|
|
| template <class T>
|
|
|