OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "modules/mediacapturefromelement/HTMLCanvasElementCapture.h" | 5 #include "modules/mediacapturefromelement/HTMLCanvasElementCapture.h" |
6 | 6 |
7 #include "core/dom/ExceptionCode.h" | 7 #include "core/dom/ExceptionCode.h" |
8 #include "core/html/HTMLCanvasElement.h" | 8 #include "core/html/HTMLCanvasElement.h" |
9 #include "modules/mediacapturefromelement/CanvasCaptureMediaStreamTrack.h" | 9 #include "modules/mediacapturefromelement/CanvasCaptureMediaStreamTrack.h" |
10 #include "modules/mediastream/MediaStream.h" | 10 #include "modules/mediastream/MediaStream.h" |
11 #include "public/platform/Platform.h" | 11 #include "public/platform/Platform.h" |
12 #include "public/platform/WebCanvasCaptureHandler.h" | 12 #include "public/platform/WebCanvasCaptureHandler.h" |
13 #include "public/platform/WebMediaStream.h" | 13 #include "public/platform/WebMediaStream.h" |
14 #include "public/platform/WebMediaStreamTrack.h" | 14 #include "public/platform/WebMediaStreamTrack.h" |
15 | 15 |
16 namespace { | 16 namespace { |
17 const double kDefaultFrameRate = 60.0; | 17 const double kDefaultFrameRate = 60.0; |
18 } // anonymous namespace | 18 } // anonymous namespace |
19 | 19 |
20 namespace blink { | 20 namespace blink { |
21 | 21 |
22 MediaStream* HTMLCanvasElementCapture::captureStream(HTMLCanvasElement& element,
ExceptionState& exceptionState) | 22 MediaStream* HTMLCanvasElementCapture::captureStream(HTMLCanvasElement& element,
ExceptionState& exceptionState) |
23 { | 23 { |
| 24 return HTMLCanvasElementCapture::captureStream(element, false, 0, exceptionS
tate); |
| 25 } |
| 26 |
| 27 MediaStream* HTMLCanvasElementCapture::captureStream(HTMLCanvasElement& element,
double frameRate, ExceptionState& exceptionState) |
| 28 { |
| 29 return HTMLCanvasElementCapture::captureStream(element, true, frameRate, exc
eptionState); |
| 30 } |
| 31 |
| 32 MediaStream* HTMLCanvasElementCapture::captureStream(HTMLCanvasElement& element,
bool givenFrameRate, double frameRate, ExceptionState& exceptionState) |
| 33 { |
24 if (!element.originClean()) { | 34 if (!element.originClean()) { |
25 exceptionState.throwDOMException(SecurityError, "Canvas is not origin-cl
ean."); | 35 exceptionState.throwDOMException(SecurityError, "Canvas is not origin-cl
ean."); |
26 return MediaStream::create(element.executionContext()); | 36 return MediaStream::create(element.executionContext()); |
27 } | 37 } |
28 | 38 |
29 WebMediaStreamTrack track; | 39 WebMediaStreamTrack track; |
30 WebSize size(element.width(), element.height()); | 40 WebSize size(element.width(), element.height()); |
31 OwnPtr<WebCanvasCaptureHandler> handler = adoptPtr(Platform::current()->crea
teCanvasCaptureHandler(size, kDefaultFrameRate, &track)); | 41 OwnPtr<WebCanvasCaptureHandler> handler; |
| 42 if (givenFrameRate) |
| 43 handler = adoptPtr(Platform::current()->createCanvasCaptureHandler(size,
frameRate, &track)); |
| 44 else |
| 45 handler = adoptPtr(Platform::current()->createCanvasCaptureHandler(size,
kDefaultFrameRate, &track)); |
32 ASSERT(handler); | 46 ASSERT(handler); |
33 if (!handler) { | 47 if (!handler) { |
34 exceptionState.throwDOMException(NotSupportedError, "No CanvasCapture ha
ndler can be created."); | 48 exceptionState.throwDOMException(NotSupportedError, "No CanvasCapture ha
ndler can be created."); |
35 return MediaStream::create(element.executionContext()); | 49 return MediaStream::create(element.executionContext()); |
36 } | 50 } |
37 | 51 |
38 MediaStreamTrackVector tracks; | 52 MediaStreamTrackVector tracks; |
39 tracks.append(CanvasCaptureMediaStreamTrack::create(track, &element, handler
.release())); | 53 if (givenFrameRate) |
| 54 tracks.append(CanvasCaptureMediaStreamTrack::create(track, &element, han
dler.release(), frameRate)); |
| 55 else |
| 56 tracks.append(CanvasCaptureMediaStreamTrack::create(track, &element, han
dler.release())); |
40 return MediaStream::create(element.executionContext(), tracks); | 57 return MediaStream::create(element.executionContext(), tracks); |
41 } | 58 } |
42 | 59 |
43 } // namespace blink | 60 } // namespace blink |
OLD | NEW |