Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2225)

Unified Diff: content/renderer/media/canvas_capture_handler.cc

Issue 1505013002: Create CanvasCaptureMediaStreamTrack in a regular MediaStream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: hta@ comment.s Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698