OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #ifndef CONTENT_RENDERER_MEDIA_VIDEO_SOURCE_HANDLER_H_ | 5 #ifndef CONTENT_RENDERER_MEDIA_VIDEO_SOURCE_HANDLER_H_ |
6 #define CONTENT_RENDERER_MEDIA_VIDEO_SOURCE_HANDLER_H_ | 6 #define CONTENT_RENDERER_MEDIA_VIDEO_SOURCE_HANDLER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
12 #include "base/gtest_prod_util.h" | |
12 #include "base/memory/ref_counted.h" | 13 #include "base/memory/ref_counted.h" |
13 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
14 #include "base/threading/thread_checker.h" | 15 #include "base/threading/thread_checker.h" |
15 #include "content/common/content_export.h" | 16 #include "content/common/content_export.h" |
16 #include "media/base/video_frame.h" | 17 #include "media/base/video_frame.h" |
17 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" | 18 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
18 | 19 |
19 namespace content { | 20 namespace content { |
20 | 21 |
21 class MediaStreamRegistryInterface; | 22 class MediaStreamRegistryInterface; |
(...skipping 21 matching lines...) Expand all Loading... | |
43 virtual ~VideoSourceHandler(); | 44 virtual ~VideoSourceHandler(); |
44 // Connects to the first video track in the MediaStream specified by |url| and | 45 // Connects to the first video track in the MediaStream specified by |url| and |
45 // the received frames will be delivered via |reader|. | 46 // the received frames will be delivered via |reader|. |
46 // Returns true on success and false on failure. | 47 // Returns true on success and false on failure. |
47 bool Open(const std::string& url, FrameReaderInterface* reader); | 48 bool Open(const std::string& url, FrameReaderInterface* reader); |
48 // Closes |reader|'s connection with the video track, i.e. stops receiving | 49 // Closes |reader|'s connection with the video track, i.e. stops receiving |
49 // frames from the video track. | 50 // frames from the video track. |
50 // Returns true on success and false on failure. | 51 // Returns true on success and false on failure. |
51 bool Close(FrameReaderInterface* reader); | 52 bool Close(FrameReaderInterface* reader); |
52 | 53 |
53 // Gets the MediaStreamVideoSink associated with |reader|. | 54 private: |
54 // Made it public only for testing purpose. | 55 FRIEND_TEST_ALL_PREFIXES(VideoSourceHandlerTest, OpenClose); |
55 MediaStreamVideoSink* GetReceiver(FrameReaderInterface* reader); | |
56 | 56 |
57 private: | |
58 struct SourceInfo { | 57 struct SourceInfo { |
59 SourceInfo(const blink::WebMediaStreamTrack& blink_track, | 58 SourceInfo(const blink::WebMediaStreamTrack& blink_track, |
60 FrameReaderInterface* reader); | 59 FrameReaderInterface* reader); |
61 ~SourceInfo(); | 60 ~SourceInfo(); |
62 | 61 |
63 scoped_ptr<PpFrameReceiver> receiver_; | 62 scoped_ptr<PpFrameReceiver> receiver_; |
64 blink::WebMediaStreamTrack track_; | |
65 }; | 63 }; |
66 | 64 |
67 typedef std::map<FrameReaderInterface*, SourceInfo*> SourceInfoMap; | 65 typedef std::map<FrameReaderInterface*, SourceInfo*> SourceInfoMap; |
68 | 66 |
67 // Deliver VideoFrame to the MediaStreamVideoSink associated with | |
68 // |reader|. For testing only. | |
69 void DeliverFrameForTesting(FrameReaderInterface* reader, | |
perkj_chrome
2014/05/08 08:15:08
Prefer to make this protected and create a test cl
Alpha Left Google
2014/05/08 18:45:51
There's already VideoSourceHandlerTest in the unit
perkj_chrome
2014/05/08 19:14:04
See for example media_stream_remote_video_source_u
| |
70 const scoped_refptr<media::VideoFrame>& frame); | |
71 | |
69 blink::WebMediaStreamTrack GetFirstVideoTrack(const std::string& url); | 72 blink::WebMediaStreamTrack GetFirstVideoTrack(const std::string& url); |
70 | 73 |
71 MediaStreamRegistryInterface* registry_; | 74 MediaStreamRegistryInterface* registry_; |
72 SourceInfoMap reader_to_receiver_; | 75 SourceInfoMap reader_to_receiver_; |
73 | 76 |
74 base::ThreadChecker thread_checker_; | 77 base::ThreadChecker thread_checker_; |
75 | 78 |
76 DISALLOW_COPY_AND_ASSIGN(VideoSourceHandler); | 79 DISALLOW_COPY_AND_ASSIGN(VideoSourceHandler); |
77 }; | 80 }; |
78 | 81 |
79 } // namespace content | 82 } // namespace content |
80 | 83 |
81 #endif // CONTENT_RENDERER_MEDIA_VIDEO_SOURCE_HANDLER_H_ | 84 #endif // CONTENT_RENDERER_MEDIA_VIDEO_SOURCE_HANDLER_H_ |
82 | |
OLD | NEW |