Index: talk/media/base/fakevideocapturer.h |
diff --git a/talk/media/base/fakevideocapturer.h b/talk/media/base/fakevideocapturer.h |
index a668ea7d0c937467a80ae4736530d3336ea41afc..d7875ff14597ef35e71e21a38795fb6946423b1e 100644 |
--- a/talk/media/base/fakevideocapturer.h |
+++ b/talk/media/base/fakevideocapturer.h |
@@ -34,7 +34,7 @@ |
#include "talk/media/base/videocapturer.h" |
#include "talk/media/base/videocommon.h" |
-#include "talk/media/base/videoframe.h" |
+#include "talk/media/webrtc/webrtcvideoframe.h" |
#include "webrtc/base/timeutils.h" |
#ifdef HAVE_WEBRTC_VIDEO |
#include "talk/media/webrtc/webrtcvideoframefactory.h" |
@@ -132,6 +132,31 @@ class FakeVideoCapturer : public cricket::VideoCapturer { |
return true; |
} |
+ void SetTime(int64_t t) { |
+ next_timestamp_ = t; |
+ } |
+ // Helper function to generate a new frame and send it directly to |
+ // |sink|, without using cricket::CapturedFrame SignalFrameCaptured. |
+ void SendFrame(rtc::VideoSinkInterface<cricket::VideoFrame>* sink) { |
+ int width = GetCaptureFormat()->width; |
+ int height = GetCaptureFormat()->height; |
+ |
+ rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer = |
+ new rtc::RefCountedObject<webrtc::I420Buffer>(width, height); |
+ |
+ memset(buffer->MutableData(webrtc::kYPlane), 1, width * height); |
+ memset(buffer->MutableData(webrtc::kUPlane), 2, |
+ (height+1)/2 * buffer->stride(webrtc::kUPlane)); |
+ memset(buffer->MutableData(webrtc::kVPlane), 3, |
+ (height+1)/2 * buffer->stride(webrtc::kVPlane)); |
+ |
+ sink->OnFrame(WebRtcVideoFrame(buffer, |
+ initial_unix_timestamp_ + next_timestamp_, |
+ rotation_)); |
+ |
+ next_timestamp_ += GetCaptureFormat()->interval; |
+ } |
+ |
void SignalCapturedFrame(cricket::CapturedFrame* frame) { |
SignalFrameCaptured(this, frame); |
} |