| OLD | NEW | 
|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "base/bind.h" | 5 #include "base/bind.h" | 
| 6 #include "base/location.h" | 6 #include "base/location.h" | 
| 7 #include "base/macros.h" | 7 #include "base/macros.h" | 
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" | 
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" | 
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" | 
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 74 | 74 | 
| 75   MOCK_METHOD4(OnEncodedVideo, | 75   MOCK_METHOD4(OnEncodedVideo, | 
| 76                void(const scoped_refptr<media::VideoFrame>& frame, | 76                void(const scoped_refptr<media::VideoFrame>& frame, | 
| 77                     const base::StringPiece& encoded_data, | 77                     const base::StringPiece& encoded_data, | 
| 78                     base::TimeTicks timestamp, | 78                     base::TimeTicks timestamp, | 
| 79                     bool keyframe)); | 79                     bool keyframe)); | 
| 80 | 80 | 
| 81   void Encode(const scoped_refptr<media::VideoFrame>& frame, | 81   void Encode(const scoped_refptr<media::VideoFrame>& frame, | 
| 82               base::TimeTicks capture_time) { | 82               base::TimeTicks capture_time) { | 
| 83     EXPECT_TRUE(message_loop_.IsCurrent()); | 83     EXPECT_TRUE(message_loop_.IsCurrent()); | 
| 84     video_track_recorder_->OnVideoFrame(frame, capture_time); | 84     video_track_recorder_->OnVideoFrameForTesting(frame, capture_time); | 
| 85   } | 85   } | 
| 86 | 86 | 
| 87   // A ChildProcess and a MessageLoopForUI are both needed to fool the Tracks | 87   // A ChildProcess and a MessageLoopForUI are both needed to fool the Tracks | 
| 88   // and Sources below into believing they are on the right threads. | 88   // and Sources below into believing they are on the right threads. | 
| 89   const base::MessageLoopForUI message_loop_; | 89   const base::MessageLoopForUI message_loop_; | 
| 90   ChildProcess child_process_; | 90   ChildProcess child_process_; | 
| 91 | 91 | 
| 92   // All members are non-const due to the series of initialize() calls needed. | 92   // All members are non-const due to the series of initialize() calls needed. | 
| 93   // |mock_source_| is owned by |blink_source_|, |track_| by |blink_track_|. | 93   // |mock_source_| is owned by |blink_source_|, |track_| by |blink_track_|. | 
| 94   MockMediaStreamVideoSource* mock_source_; | 94   MockMediaStreamVideoSource* mock_source_; | 
| 95   blink::WebMediaStreamSource blink_source_; | 95   blink::WebMediaStreamSource blink_source_; | 
| 96   MediaStreamVideoTrack* track_; | 96   MediaStreamVideoTrack* track_; | 
| 97   blink::WebMediaStreamTrack blink_track_; | 97   blink::WebMediaStreamTrack blink_track_; | 
| 98 | 98 | 
| 99   scoped_ptr<VideoTrackRecorder> video_track_recorder_; | 99   scoped_ptr<VideoTrackRecorder> video_track_recorder_; | 
| 100 | 100 | 
| 101  private: | 101  private: | 
| 102   DISALLOW_COPY_AND_ASSIGN(VideoTrackRecorderTest); | 102   DISALLOW_COPY_AND_ASSIGN(VideoTrackRecorderTest); | 
| 103 }; | 103 }; | 
| 104 | 104 | 
|  | 105 // Construct and destruct all objects, in particular |video_track_recorder_| and | 
|  | 106 // its inner object(s). This is a non trivial sequence. | 
|  | 107 TEST_F(VideoTrackRecorderTest, ConstructAndDestruct) {} | 
|  | 108 | 
| 105 // Creates the encoder and encodes 2 frames of the same size; the encoder should | 109 // Creates the encoder and encodes 2 frames of the same size; the encoder should | 
| 106 // be initialised and produce a keyframe, then a non-keyframe. Finally a frame | 110 // be initialised and produce a keyframe, then a non-keyframe. Finally a frame | 
| 107 // of larger size is sent and is expected to be encoded as a keyframe. | 111 // of larger size is sent and is expected to be encoded as a keyframe. | 
| 108 TEST_F(VideoTrackRecorderTest, VideoEncoding) { | 112 TEST_F(VideoTrackRecorderTest, VideoEncoding) { | 
| 109   // |frame_size| cannot be arbitrarily small, should be reasonable. | 113   // |frame_size| cannot be arbitrarily small, should be reasonable. | 
| 110   const gfx::Size frame_size(160, 80); | 114   const gfx::Size frame_size(160, 80); | 
| 111   const scoped_refptr<media::VideoFrame> video_frame = | 115   const scoped_refptr<media::VideoFrame> video_frame = | 
| 112       media::VideoFrame::CreateBlackFrame(frame_size); | 116       media::VideoFrame::CreateBlackFrame(frame_size); | 
| 113   const double kFrameRate = 60.0f; | 117   const double kFrameRate = 60.0f; | 
| 114   video_frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE, | 118   video_frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE, | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 151   EXPECT_EQ(first_frame_encoded_data.size(), kFirstEncodedDataSize); | 155   EXPECT_EQ(first_frame_encoded_data.size(), kFirstEncodedDataSize); | 
| 152   const size_t kSecondEncodedDataSize = 32; | 156   const size_t kSecondEncodedDataSize = 32; | 
| 153   EXPECT_EQ(second_frame_encoded_data.size(), kSecondEncodedDataSize); | 157   EXPECT_EQ(second_frame_encoded_data.size(), kSecondEncodedDataSize); | 
| 154   const size_t kThirdEncodedDataSize = 57; | 158   const size_t kThirdEncodedDataSize = 57; | 
| 155   EXPECT_EQ(third_frame_encoded_data.size(), kThirdEncodedDataSize); | 159   EXPECT_EQ(third_frame_encoded_data.size(), kThirdEncodedDataSize); | 
| 156 | 160 | 
| 157   Mock::VerifyAndClearExpectations(this); | 161   Mock::VerifyAndClearExpectations(this); | 
| 158 } | 162 } | 
| 159 | 163 | 
| 160 }  // namespace content | 164 }  // namespace content | 
| OLD | NEW | 
|---|