Move src/ -> webrtc/
TBR=niklas.enbom@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/915006
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@2963 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/modules/video_capture/main/source/Mac/QuickTime/video_capture_quick_time.h b/modules/video_capture/main/source/Mac/QuickTime/video_capture_quick_time.h
new file mode 100644
index 0000000..84e0667
--- /dev/null
+++ b/modules/video_capture/main/source/Mac/QuickTime/video_capture_quick_time.h
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+/*
+ * video_capture_quick_time.h
+ *
+ */
+
+#ifndef WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QUICKTIME_VIDEO_CAPTURE_QUICK_TIME_H_
+#define WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QUICKTIME_VIDEO_CAPTURE_QUICK_TIME_H_
+
+#include <QuickTime/QuickTime.h>
+
+
+#include "../../device_info_impl.h"
+#include "../../video_capture_impl.h"
+#include "list_wrapper.h"
+
+
+#define START_CODEC_WIDTH 352
+#define START_CODEC_HEIGHT 288
+#define SLEEP(x) usleep(x * 1000);
+
+namespace webrtc
+{
+class CriticalSectionWrapper;
+class EventWrapper;
+class ThreadWrapper;
+
+class VideoCaptureMacQuickTime : public VideoCaptureImpl
+{
+
+public:
+ VideoCaptureMacQuickTime(const WebRtc_Word32 id);
+ virtual ~VideoCaptureMacQuickTime();
+
+ static void Destroy(VideoCaptureModule* module);
+
+ WebRtc_Word32 Init(const WebRtc_Word32 id,
+ const WebRtc_UWord8* deviceUniqueIdUTF8);
+ virtual WebRtc_Word32 StartCapture(
+ const VideoCaptureCapability& capability);
+ virtual WebRtc_Word32 StopCapture();
+ virtual bool CaptureStarted();
+ virtual WebRtc_Word32 CaptureSettings(VideoCaptureCapability& settings);
+
+ // TODO: remove?
+ int VideoCaptureInitThreadContext();
+ int VideoCaptureTerminate();
+ int VideoCaptureSetCaptureDevice(const char* deviceName, int size);
+ int UpdateCaptureSettings(int channel, webrtc::VideoCodec& inst, bool def);
+ int VideoCaptureRun();
+ int VideoCaptureStop();
+
+protected:
+
+private: // functions
+
+ struct VideoCaptureMacName
+ {
+ VideoCaptureMacName();
+
+ enum { kVideoCaptureMacNameMaxSize = 64};
+ char _name[kVideoCaptureMacNameMaxSize];
+ CFIndex _size;
+ };
+
+ // Timeout value [ms] if we want to create a new device list or not
+ enum { kVideoCaptureDeviceListTimeout = 5000};
+ // Temporary constant allowing this size from builtin iSight webcams.
+ enum { kYuy2_1280_1024_length = 2621440};
+
+private:
+
+ // Capture device callback
+ static OSErr SendProcess(SGChannel sgChannel, Ptr p, long len, long *offset,
+ long chRefCon, TimeValue time, short writeType,
+ long refCon);
+ int SendFrame(SGChannel sgChannel, char* data, long length, TimeValue time);
+
+ // Capture device functions
+ int CreateLocalGWorld(int width, int height);
+ int RemoveLocalGWorld();
+ int ConnectCaptureDevice();
+ int DisconnectCaptureDevice();
+ virtual bool IsCaptureDeviceSelected();
+
+ // Process to make sure the capture device won't stop
+ static bool GrabberUpdateThread(void*);
+ bool GrabberUpdateProcess();
+
+ // Starts and stops the capture
+ int StartQuickTimeCapture();
+ int StopQuickTimeCapture(bool* wasCapturing = NULL);
+
+ static CFIndex PascalStringToCString(const unsigned char* pascalString,
+ char* cString,
+ CFIndex bufferSize);
+
+private: // variables
+ WebRtc_Word32 _id;
+ bool _isCapturing;
+ VideoCaptureCapability _captureCapability;
+ CriticalSectionWrapper* _grabberCritsect;
+ CriticalSectionWrapper* _videoMacCritsect;
+ bool _terminated;
+ webrtc::ThreadWrapper* _grabberUpdateThread;
+ webrtc::EventWrapper* _grabberUpdateEvent;
+ SeqGrabComponent _captureGrabber;
+ Component _captureDevice;
+ char _captureDeviceDisplayName[64];
+ RawVideoType _captureVideoType;
+ bool _captureIsInitialized;
+ GWorldPtr _gWorld;
+ SGChannel _captureChannel;
+ ImageSequence _captureSequence;
+ bool _sgPrepared;
+ bool _sgStarted;
+ int _trueCaptureWidth;
+ int _trueCaptureHeight;
+ ListWrapper _captureDeviceList;
+ unsigned long _captureDeviceListTime;
+ ListWrapper _captureCapabilityList;
+};
+} // namespace webrtc
+#endif // WEBRTC_MODULES_VIDEO_CAPTURE_MAIN_SOURCE_MAC_QUICKTIME_VIDEO_CAPTURE_QUICK_TIME_H_