Index: content/renderer/media/canvas_capture_handler.cc |
diff --git a/content/renderer/media/canvas_capture_handler.cc b/content/renderer/media/canvas_capture_handler.cc |
index bb26e24c20ceaef1cc112eb4a8be9d3ad861dd9e..7e1e8e7a09b76980037f8ea5d146dff25d986ff9 100644 |
--- a/content/renderer/media/canvas_capture_handler.cc |
+++ b/content/renderer/media/canvas_capture_handler.cc |
@@ -4,10 +4,17 @@ |
#include "content/renderer/media/canvas_capture_handler.h" |
+#include "base/base64.h" |
#include "base/bind_helpers.h" |
-#include "content/public/renderer/media_stream_api.h" |
+#include "base/rand_util.h" |
+#include "base/strings/utf_string_conversions.h" |
#include "content/public/renderer/render_thread.h" |
+#include "content/renderer/media/media_stream_video_capturer_source.h" |
+#include "content/renderer/media/media_stream_video_source.h" |
+#include "content/renderer/media/media_stream_video_track.h" |
#include "content/renderer/render_thread_impl.h" |
+#include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
+#include "third_party/WebKit/public/platform/WebString.h" |
#include "third_party/libyuv/include/libyuv.h" |
namespace content { |
@@ -86,7 +93,7 @@ class CanvasCaptureHandler::CanvasCaptureHandlerDelegate { |
CanvasCaptureHandler::CanvasCaptureHandler(const blink::WebSize& size, |
double frame_rate, |
- blink::WebMediaStream* stream) |
+ blink::WebMediaStreamTrack* track) |
: ask_for_new_frame_(false), |
size_(size), |
io_task_runner_(content::RenderThread::Get()->GetIOMessageLoopProxy()), |
@@ -94,7 +101,7 @@ CanvasCaptureHandler::CanvasCaptureHandler(const blink::WebSize& size, |
scoped_ptr<media::VideoCapturerSource> video_source( |
new CanvasCaptureHandler::VideoCapturerSource( |
weak_ptr_factory_.GetWeakPtr(), frame_rate)); |
- content::AddVideoTrackToMediaStream(video_source.Pass(), false, true, stream); |
+ AddVideoCapturerSourceToVideoTrack(video_source.Pass(), track); |
} |
CanvasCaptureHandler::~CanvasCaptureHandler() { |
@@ -175,4 +182,26 @@ void CanvasCaptureHandler::CreateNewFrame(const blink::WebSkImage& image) { |
base::TimeTicks())); |
} |
+void CanvasCaptureHandler::AddVideoCapturerSourceToVideoTrack( |
+ scoped_ptr<media::VideoCapturerSource> source, |
+ blink::WebMediaStreamTrack* web_track) { |
+ std::string str_track_id; |
+ base::Base64Encode(base::RandBytesAsString(64), &str_track_id); |
+ const blink::WebString track_id = base::UTF8ToUTF16(str_track_id); |
+ blink::WebMediaStreamSource webkit_source; |
+ scoped_ptr<MediaStreamVideoSource> media_stream_source( |
+ new MediaStreamVideoCapturerSource( |
+ MediaStreamSource::SourceStoppedCallback(), source.Pass())); |
+ webkit_source.initialize(track_id, blink::WebMediaStreamSource::TypeVideo, |
+ track_id, false, true); |
+ webkit_source.setExtraData(media_stream_source.get()); |
+ |
+ web_track->initialize(webkit_source); |
+ blink::WebMediaConstraints constraints; |
+ constraints.initialize(); |
+ web_track->setExtraData(new MediaStreamVideoTrack( |
+ media_stream_source.release(), constraints, |
+ MediaStreamVideoSource::ConstraintsCallback(), true)); |
+} |
+ |
} // namespace content |