| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  *  Copyright 2016 The WebRTC project authors. All Rights Reserved. |    2  *  Copyright 2016 The WebRTC project authors. All Rights Reserved. | 
|    3  * |    3  * | 
|    4  *  Use of this source code is governed by a BSD-style license |    4  *  Use of this source code is governed by a BSD-style license | 
|    5  *  that can be found in the LICENSE file in the root of the source |    5  *  that can be found in the LICENSE file in the root of the source | 
|    6  *  tree. An additional intellectual property rights grant can be found |    6  *  tree. An additional intellectual property rights grant can be found | 
|    7  *  in the file PATENTS.  All contributing project authors may |    7  *  in the file PATENTS.  All contributing project authors may | 
|    8  *  be found in the AUTHORS file in the root of the source tree. |    8  *  be found in the AUTHORS file in the root of the source tree. | 
|    9  */ |    9  */ | 
|   10  |   10  | 
|   11 #include "webrtc/base/gunit.h" |   11 #include "webrtc/base/gunit.h" | 
|   12 #include "webrtc/media/base/fakevideorenderer.h" |   12 #include "webrtc/media/base/fakevideorenderer.h" | 
|   13 #include "webrtc/media/base/videobroadcaster.h" |   13 #include "webrtc/media/base/videobroadcaster.h" | 
|   14 #include "webrtc/media/engine/webrtcvideoframe.h" |   14 #include "webrtc/video_frame.h" | 
|   15  |   15  | 
|   16 using rtc::VideoBroadcaster; |   16 using rtc::VideoBroadcaster; | 
|   17 using rtc::VideoSinkWants; |   17 using rtc::VideoSinkWants; | 
|   18 using cricket::FakeVideoRenderer; |   18 using cricket::FakeVideoRenderer; | 
|   19 using cricket::WebRtcVideoFrame; |  | 
|   20  |   19  | 
|   21  |   20  | 
|   22 TEST(VideoBroadcasterTest, frame_wanted) { |   21 TEST(VideoBroadcasterTest, frame_wanted) { | 
|   23   VideoBroadcaster broadcaster; |   22   VideoBroadcaster broadcaster; | 
|   24   EXPECT_FALSE(broadcaster.frame_wanted()); |   23   EXPECT_FALSE(broadcaster.frame_wanted()); | 
|   25  |   24  | 
|   26   FakeVideoRenderer sink; |   25   FakeVideoRenderer sink; | 
|   27   broadcaster.AddOrUpdateSink(&sink, rtc::VideoSinkWants()); |   26   broadcaster.AddOrUpdateSink(&sink, rtc::VideoSinkWants()); | 
|   28   EXPECT_TRUE(broadcaster.frame_wanted()); |   27   EXPECT_TRUE(broadcaster.frame_wanted()); | 
|   29  |   28  | 
|   30   broadcaster.RemoveSink(&sink); |   29   broadcaster.RemoveSink(&sink); | 
|   31   EXPECT_FALSE(broadcaster.frame_wanted()); |   30   EXPECT_FALSE(broadcaster.frame_wanted()); | 
|   32 } |   31 } | 
|   33  |   32  | 
|   34 TEST(VideoBroadcasterTest, OnFrame) { |   33 TEST(VideoBroadcasterTest, OnFrame) { | 
|   35   VideoBroadcaster broadcaster; |   34   VideoBroadcaster broadcaster; | 
|   36  |   35  | 
|   37   FakeVideoRenderer sink1; |   36   FakeVideoRenderer sink1; | 
|   38   FakeVideoRenderer sink2; |   37   FakeVideoRenderer sink2; | 
|   39   broadcaster.AddOrUpdateSink(&sink1, rtc::VideoSinkWants()); |   38   broadcaster.AddOrUpdateSink(&sink1, rtc::VideoSinkWants()); | 
|   40   broadcaster.AddOrUpdateSink(&sink2, rtc::VideoSinkWants()); |   39   broadcaster.AddOrUpdateSink(&sink2, rtc::VideoSinkWants()); | 
|   41  |   40  | 
|   42   WebRtcVideoFrame frame; |   41   webrtc::VideoFrame frame; | 
|   43  |   42  | 
|   44   broadcaster.OnFrame(frame); |   43   broadcaster.OnFrame(frame); | 
|   45   EXPECT_EQ(1, sink1.num_rendered_frames()); |   44   EXPECT_EQ(1, sink1.num_rendered_frames()); | 
|   46   EXPECT_EQ(1, sink2.num_rendered_frames()); |   45   EXPECT_EQ(1, sink2.num_rendered_frames()); | 
|   47  |   46  | 
|   48   broadcaster.RemoveSink(&sink1); |   47   broadcaster.RemoveSink(&sink1); | 
|   49   broadcaster.OnFrame(frame); |   48   broadcaster.OnFrame(frame); | 
|   50   EXPECT_EQ(1, sink1.num_rendered_frames()); |   49   EXPECT_EQ(1, sink1.num_rendered_frames()); | 
|   51   EXPECT_EQ(2, sink2.num_rendered_frames()); |   50   EXPECT_EQ(2, sink2.num_rendered_frames()); | 
|   52  |   51  | 
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  132   FakeVideoRenderer sink2; |  131   FakeVideoRenderer sink2; | 
|  133   VideoSinkWants wants2; |  132   VideoSinkWants wants2; | 
|  134   wants2.black_frames = false; |  133   wants2.black_frames = false; | 
|  135   broadcaster.AddOrUpdateSink(&sink2, wants2); |  134   broadcaster.AddOrUpdateSink(&sink2, wants2); | 
|  136  |  135  | 
|  137   rtc::scoped_refptr<webrtc::I420Buffer> buffer( |  136   rtc::scoped_refptr<webrtc::I420Buffer> buffer( | 
|  138       new rtc::RefCountedObject<webrtc::I420Buffer>(100, 200)); |  137       new rtc::RefCountedObject<webrtc::I420Buffer>(100, 200)); | 
|  139   // Makes it not all black. |  138   // Makes it not all black. | 
|  140   buffer->InitializeData(); |  139   buffer->InitializeData(); | 
|  141  |  140  | 
|  142   cricket::WebRtcVideoFrame frame1(buffer, webrtc::kVideoRotation_0, |  141   webrtc::VideoFrame frame1(buffer, webrtc::kVideoRotation_0, | 
|  143                                    10 /* timestamp_us */); |  142                             10 /* timestamp_us */); | 
|  144   broadcaster.OnFrame(frame1); |  143   broadcaster.OnFrame(frame1); | 
|  145   EXPECT_TRUE(sink1.black_frame()); |  144   EXPECT_TRUE(sink1.black_frame()); | 
|  146   EXPECT_EQ(10, sink1.timestamp_us()); |  145   EXPECT_EQ(10, sink1.timestamp_us()); | 
|  147   EXPECT_FALSE(sink2.black_frame()); |  146   EXPECT_FALSE(sink2.black_frame()); | 
|  148   EXPECT_EQ(10, sink2.timestamp_us()); |  147   EXPECT_EQ(10, sink2.timestamp_us()); | 
|  149  |  148  | 
|  150   // Switch the sink wants. |  149   // Switch the sink wants. | 
|  151   wants1.black_frames = false; |  150   wants1.black_frames = false; | 
|  152   broadcaster.AddOrUpdateSink(&sink1, wants1); |  151   broadcaster.AddOrUpdateSink(&sink1, wants1); | 
|  153   wants2.black_frames = true; |  152   wants2.black_frames = true; | 
|  154   broadcaster.AddOrUpdateSink(&sink2, wants2); |  153   broadcaster.AddOrUpdateSink(&sink2, wants2); | 
|  155  |  154  | 
|  156   cricket::WebRtcVideoFrame frame2(buffer, webrtc::kVideoRotation_0, |  155   webrtc::VideoFrame frame2(buffer, webrtc::kVideoRotation_0, | 
|  157                                    30 /* timestamp_us */); |  156                             30 /* timestamp_us */); | 
|  158   broadcaster.OnFrame(frame2); |  157   broadcaster.OnFrame(frame2); | 
|  159   EXPECT_FALSE(sink1.black_frame()); |  158   EXPECT_FALSE(sink1.black_frame()); | 
|  160   EXPECT_EQ(30, sink1.timestamp_us()); |  159   EXPECT_EQ(30, sink1.timestamp_us()); | 
|  161   EXPECT_TRUE(sink2.black_frame()); |  160   EXPECT_TRUE(sink2.black_frame()); | 
|  162   EXPECT_EQ(30, sink2.timestamp_us()); |  161   EXPECT_EQ(30, sink2.timestamp_us()); | 
|  163 } |  162 } | 
| OLD | NEW |