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 #include "content/renderer/media/video_source_handler.h" | 5 #include "content/renderer/media/video_source_handler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "content/renderer/media/media_stream_dependency_factory.h" | 10 #include "content/renderer/media/media_stream_dependency_factory.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 DISALLOW_COPY_AND_ASSIGN(PpFrameReceiver); | 55 DISALLOW_COPY_AND_ASSIGN(PpFrameReceiver); |
56 }; | 56 }; |
57 | 57 |
58 VideoSourceHandler::VideoSourceHandler( | 58 VideoSourceHandler::VideoSourceHandler( |
59 MediaStreamRegistryInterface* registry) | 59 MediaStreamRegistryInterface* registry) |
60 : registry_(registry) { | 60 : registry_(registry) { |
61 } | 61 } |
62 | 62 |
63 VideoSourceHandler::~VideoSourceHandler() { | 63 VideoSourceHandler::~VideoSourceHandler() { |
64 // All the opened readers should have been closed by now. | 64 // All the opened readers should have been closed by now. |
65 ASSERT(reader_to_receiver_.empty()); | 65 DCHECK(reader_to_receiver_.empty()); |
66 } | 66 } |
67 | 67 |
68 bool VideoSourceHandler::Open(const std::string& url, | 68 bool VideoSourceHandler::Open(const std::string& url, |
69 FrameReaderInterface* reader) { | 69 FrameReaderInterface* reader) { |
70 scoped_refptr<webrtc::VideoSourceInterface> source = GetFirstVideoSource(url); | 70 scoped_refptr<webrtc::VideoSourceInterface> source = GetFirstVideoSource(url); |
71 if (!source.get()) { | 71 if (!source.get()) { |
72 return false; | 72 return false; |
73 } | 73 } |
74 PpFrameReceiver* receiver = new PpFrameReceiver(); | 74 PpFrameReceiver* receiver = new PpFrameReceiver(); |
75 receiver->SetReader(reader); | 75 receiver->SetReader(reader); |
76 source->AddSink(receiver); | 76 source->AddSink(receiver); |
77 reader_to_receiver_[reader] = receiver; | 77 reader_to_receiver_[reader] = receiver; |
78 return true; | 78 return true; |
79 } | 79 } |
80 | 80 |
81 bool VideoSourceHandler::Close(const std::string& url, | 81 bool VideoSourceHandler::Close(const std::string& url, |
82 FrameReaderInterface* reader) { | 82 FrameReaderInterface* reader) { |
83 scoped_refptr<webrtc::VideoSourceInterface> source = GetFirstVideoSource(url); | 83 scoped_refptr<webrtc::VideoSourceInterface> source = GetFirstVideoSource(url); |
84 if (!source.get()) { | 84 if (!source.get()) { |
85 LOG(ERROR) << "VideoSourceHandler::Close - Failed to get the video source " | 85 LOG(ERROR) << "VideoSourceHandler::Close - Failed to get the video source " |
86 << "from MediaStream with url: " << url; | 86 << "from MediaStream with url: " << url; |
87 return false; | 87 return false; |
88 } | 88 } |
89 PpFrameReceiver* receiver = | 89 PpFrameReceiver* receiver = |
90 static_cast<PpFrameReceiver*>(GetReceiver(reader)); | 90 static_cast<PpFrameReceiver*>(GetReceiver(reader)); |
91 ASSERT(receiver != NULL); | 91 if (!receiver) { |
| 92 LOG(ERROR) << "VideoSourceHandler::Close - Failed to find receiver that " |
| 93 << "is associated with the given reader."; |
| 94 return false; |
| 95 } |
92 receiver->SetReader(NULL); | 96 receiver->SetReader(NULL); |
93 source->RemoveSink(receiver); | 97 source->RemoveSink(receiver); |
94 reader_to_receiver_.erase(reader); | 98 reader_to_receiver_.erase(reader); |
95 delete receiver; | 99 delete receiver; |
96 return true; | 100 return true; |
97 } | 101 } |
98 | 102 |
99 scoped_refptr<VideoSourceInterface> VideoSourceHandler::GetFirstVideoSource( | 103 scoped_refptr<VideoSourceInterface> VideoSourceHandler::GetFirstVideoSource( |
100 const std::string& url) { | 104 const std::string& url) { |
101 scoped_refptr<webrtc::VideoSourceInterface> source; | 105 scoped_refptr<webrtc::VideoSourceInterface> source; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 std::map<FrameReaderInterface*, VideoRenderer*>::iterator it; | 142 std::map<FrameReaderInterface*, VideoRenderer*>::iterator it; |
139 it = reader_to_receiver_.find(reader); | 143 it = reader_to_receiver_.find(reader); |
140 if (it == reader_to_receiver_.end()) { | 144 if (it == reader_to_receiver_.end()) { |
141 return NULL; | 145 return NULL; |
142 } | 146 } |
143 return it->second; | 147 return it->second; |
144 } | 148 } |
145 | 149 |
146 } // namespace content | 150 } // namespace content |
147 | 151 |
OLD | NEW |