Chromium Code Reviews| 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 |