| Index: media/cast/sender/video_sender_unittest.cc
|
| diff --git a/media/cast/sender/video_sender_unittest.cc b/media/cast/sender/video_sender_unittest.cc
|
| index 5c207d5d463d0822a9220e1fed51407bd81fc472..6c0ba989cc90748519ca70616bade5d5b13d2432 100644
|
| --- a/media/cast/sender/video_sender_unittest.cc
|
| +++ b/media/cast/sender/video_sender_unittest.cc
|
| @@ -52,8 +52,10 @@ void CreateSharedMemory(
|
| callback.Run(shm.Pass());
|
| }
|
|
|
| -void SaveInitializationStatus(CastInitializationStatus* out_status,
|
| - CastInitializationStatus in_status) {
|
| +void SaveOperationalStatus(OperationalStatus* out_status,
|
| + OperationalStatus in_status) {
|
| + DVLOG(1) << "OperationalStatus transitioning from " << *out_status << " to "
|
| + << in_status;
|
| *out_status = in_status;
|
| }
|
|
|
| @@ -111,18 +113,19 @@ class TestPacketSender : public PacketSender {
|
|
|
| void IgnorePlayoutDelayChanges(base::TimeDelta unused_playout_delay) {
|
| }
|
| +
|
| class PeerVideoSender : public VideoSender {
|
| public:
|
| PeerVideoSender(
|
| scoped_refptr<CastEnvironment> cast_environment,
|
| const VideoSenderConfig& video_config,
|
| - const CastInitializationCallback& initialization_cb,
|
| + const StatusChangeCallback& status_change_cb,
|
| const CreateVideoEncodeAcceleratorCallback& create_vea_cb,
|
| const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb,
|
| CastTransportSender* const transport_sender)
|
| : VideoSender(cast_environment,
|
| video_config,
|
| - initialization_cb,
|
| + status_change_cb,
|
| create_vea_cb,
|
| create_video_encode_mem_cb,
|
| transport_sender,
|
| @@ -134,15 +137,16 @@ class PeerVideoSender : public VideoSender {
|
| class VideoSenderTest : public ::testing::Test {
|
| protected:
|
| VideoSenderTest()
|
| - : stored_bitrates_(NULL) {
|
| - testing_clock_ = new base::SimpleTestTickClock();
|
| + : testing_clock_(new base::SimpleTestTickClock()),
|
| + task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)),
|
| + cast_environment_(new CastEnvironment(
|
| + scoped_ptr<base::TickClock>(testing_clock_).Pass(),
|
| + task_runner_,
|
| + task_runner_,
|
| + task_runner_)),
|
| + operational_status_(STATUS_UNINITIALIZED),
|
| + stored_bitrates_(NULL) {
|
| testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks());
|
| - task_runner_ = new test::FakeSingleThreadTaskRunner(testing_clock_);
|
| - cast_environment_ =
|
| - new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_).Pass(),
|
| - task_runner_,
|
| - task_runner_,
|
| - task_runner_);
|
| last_pixel_value_ = kPixelValue;
|
| net::IPEndPoint dummy_endpoint;
|
| transport_sender_.reset(new CastTransportSenderImpl(
|
| @@ -172,8 +176,7 @@ class VideoSenderTest : public ::testing::Test {
|
|
|
| // If |external| is true then external video encoder (VEA) is used.
|
| // |expect_init_sucess| is true if initialization is expected to succeed.
|
| - CastInitializationStatus InitEncoder(bool external,
|
| - bool expect_init_success) {
|
| + void InitEncoder(bool external, bool expect_init_success) {
|
| VideoSenderConfig video_config;
|
| video_config.ssrc = 1;
|
| video_config.receiver_ssrc = 2;
|
| @@ -189,7 +192,8 @@ class VideoSenderTest : public ::testing::Test {
|
| video_config.max_frame_rate = 30;
|
| video_config.max_number_of_video_buffers_used = 1;
|
| video_config.codec = CODEC_VIDEO_VP8;
|
| - CastInitializationStatus status = STATUS_VIDEO_UNINITIALIZED;
|
| +
|
| + ASSERT_EQ(operational_status_, STATUS_UNINITIALIZED);
|
|
|
| if (external) {
|
| media::FakeVideoEncodeAccelerator* fake_vea =
|
| @@ -200,8 +204,8 @@ class VideoSenderTest : public ::testing::Test {
|
| video_sender_.reset(
|
| new PeerVideoSender(cast_environment_,
|
| video_config,
|
| - base::Bind(&SaveInitializationStatus,
|
| - &status),
|
| + base::Bind(&SaveOperationalStatus,
|
| + &operational_status_),
|
| base::Bind(&CreateVideoEncodeAccelerator,
|
| task_runner_,
|
| base::Passed(&fake_vea_owner)),
|
| @@ -211,14 +215,13 @@ class VideoSenderTest : public ::testing::Test {
|
| video_sender_.reset(
|
| new PeerVideoSender(cast_environment_,
|
| video_config,
|
| - base::Bind(&SaveInitializationStatus,
|
| - &status),
|
| + base::Bind(&SaveOperationalStatus,
|
| + &operational_status_),
|
| CreateDefaultVideoEncodeAcceleratorCallback(),
|
| CreateDefaultVideoEncodeMemoryCallback(),
|
| transport_sender_.get()));
|
| }
|
| task_runner_->RunTasks();
|
| - return status;
|
| }
|
|
|
| scoped_refptr<media::VideoFrame> GetNewVideoFrame() {
|
| @@ -249,13 +252,14 @@ class VideoSenderTest : public ::testing::Test {
|
| task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms));
|
| }
|
|
|
| - base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
|
| + base::SimpleTestTickClock* const testing_clock_; // Owned by CastEnvironment.
|
| + const scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
|
| + const scoped_refptr<CastEnvironment> cast_environment_;
|
| + OperationalStatus operational_status_;
|
| TestPacketSender transport_;
|
| scoped_ptr<CastTransportSenderImpl> transport_sender_;
|
| - scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
|
| scoped_ptr<PeerVideoSender> video_sender_;
|
| const std::vector<uint32>* stored_bitrates_; // Owned by |video_sender_|.
|
| - scoped_refptr<CastEnvironment> cast_environment_;
|
| int last_pixel_value_;
|
| base::TimeTicks first_frame_timestamp_;
|
|
|
| @@ -263,7 +267,9 @@ class VideoSenderTest : public ::testing::Test {
|
| };
|
|
|
| TEST_F(VideoSenderTest, BuiltInEncoder) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
| +
|
| scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
|
|
|
| const base::TimeTicks reference_time = testing_clock_->NowTicks();
|
| @@ -275,7 +281,8 @@ TEST_F(VideoSenderTest, BuiltInEncoder) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, ExternalEncoder) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(true, true));
|
| + InitEncoder(true, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
|
|
| scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
|
|
|
| @@ -295,14 +302,16 @@ TEST_F(VideoSenderTest, ExternalEncoder) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, ExternalEncoderInitFails) {
|
| - EXPECT_EQ(STATUS_HW_VIDEO_ENCODER_NOT_SUPPORTED,
|
| - InitEncoder(true, false));
|
| + InitEncoder(true, false);
|
| + EXPECT_EQ(STATUS_CODEC_INIT_FAILED, operational_status_);
|
| +
|
| video_sender_.reset(NULL);
|
| task_runner_->RunTasks();
|
| }
|
|
|
| TEST_F(VideoSenderTest, RtcpTimer) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
|
|
| scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
|
|
|
| @@ -326,7 +335,8 @@ TEST_F(VideoSenderTest, RtcpTimer) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, ResendTimer) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
|
|
| scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
|
|
|
| @@ -354,7 +364,9 @@ TEST_F(VideoSenderTest, ResendTimer) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, LogAckReceivedEvent) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
| +
|
| SimpleEventSubscriber event_subscriber;
|
| cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber);
|
|
|
| @@ -386,7 +398,9 @@ TEST_F(VideoSenderTest, LogAckReceivedEvent) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, StopSendingInTheAbsenceOfAck) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
| +
|
| // Send a stream of frames and don't ACK; by default we shouldn't have more
|
| // than 4 frames in flight.
|
| scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
|
| @@ -432,7 +446,9 @@ TEST_F(VideoSenderTest, StopSendingInTheAbsenceOfAck) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, DuplicateAckRetransmit) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
| +
|
| scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
|
| video_sender_->InsertRawVideoFrame(video_frame, testing_clock_->NowTicks());
|
| RunTasks(33);
|
| @@ -472,7 +488,9 @@ TEST_F(VideoSenderTest, DuplicateAckRetransmit) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, DuplicateAckRetransmitDoesNotCancelRetransmits) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
| +
|
| scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
|
| video_sender_->InsertRawVideoFrame(video_frame, testing_clock_->NowTicks());
|
| RunTasks(33);
|
| @@ -523,7 +541,9 @@ TEST_F(VideoSenderTest, DuplicateAckRetransmitDoesNotCancelRetransmits) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, AcksCancelRetransmits) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
| +
|
| transport_.SetPause(true);
|
| scoped_refptr<media::VideoFrame> video_frame = GetLargeNewVideoFrame();
|
| video_sender_->InsertRawVideoFrame(video_frame, testing_clock_->NowTicks());
|
| @@ -541,7 +561,9 @@ TEST_F(VideoSenderTest, AcksCancelRetransmits) {
|
| }
|
|
|
| TEST_F(VideoSenderTest, CheckVideoFrameFactoryIsNull) {
|
| - EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
|
| + InitEncoder(false, true);
|
| + ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
|
| +
|
| EXPECT_EQ(nullptr, video_sender_->CreateVideoFrameFactory().get());
|
| }
|
|
|
|
|