1 #ifndef TALK_MEDIA_DEVICES_YUVFRAMESCAPTURER_H_
2 #define TALK_MEDIA_DEVICES_YUVFRAMESCAPTURER_H_
7 #include "talk/media/base/videocapturer.h"
8 #include "talk/media/base/yuvframegenerator.h"
9 #include "webrtc/base/stream.h"
10 #include "webrtc/base/stringutils.h"
20 // Simulated video capturer that periodically reads frames from a file.
21 class YuvFramesCapturer : public VideoCapturer {
24 YuvFramesCapturer(int width, int height);
25 virtual ~YuvFramesCapturer();
27 static const char* kYuvFrameDeviceName;
28 static Device CreateYuvFramesCapturerDevice() {
30 id << kYuvFrameDeviceName;
31 return Device(id.str(), id.str());
33 static bool IsYuvFramesCapturerDevice(const Device& device) {
34 return rtc::starts_with(device.id.c_str(), kYuvFrameDeviceName);
38 // Override virtual methods of parent class VideoCapturer.
39 virtual CaptureState Start(const VideoFormat& capture_format);
41 virtual bool IsRunning();
42 virtual bool IsScreencast() const { return false; }
45 // Override virtual methods of parent class VideoCapturer.
46 virtual bool GetPreferredFourccs(std::vector<uint32>* fourccs);
48 // Read a frame and determine how long to wait for the next frame.
49 void ReadFrame(bool first_frame);
52 class YuvFramesThread; // Forward declaration, defined in .cc.
54 YuvFrameGenerator* frame_generator_;
55 CapturedFrame captured_frame_;
56 YuvFramesThread* frames_generator_thread;
59 uint32 frame_data_size_;
62 int64 barcode_reference_timestamp_millis_;
63 int32 barcode_interval_;
64 int32 GetBarcodeValue();
66 DISALLOW_COPY_AND_ASSIGN(YuvFramesCapturer);
69 } // namespace cricket
71 #endif // TALK_MEDIA_DEVICES_YUVFRAMESCAPTURER_H_