| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // MacOSX implementation of generic VideoCaptureDevice, using either QTKit or | 5 // MacOSX implementation of generic VideoCaptureDevice, using either QTKit or |
| 6 // AVFoundation as native capture API. QTKit is available in all OSX versions, | 6 // AVFoundation as native capture API. QTKit is available in all OSX versions, |
| 7 // although namely deprecated in 10.9, and AVFoundation is available in versions | 7 // although namely deprecated in 10.9, and AVFoundation is available in versions |
| 8 // 10.7 (Lion) and later. | 8 // 10.7 (Lion) and later. |
| 9 | 9 |
| 10 #ifndef MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ | 10 #ifndef MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ |
| 11 #define MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ | 11 #define MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ |
| 12 | 12 |
| 13 #import <Foundation/Foundation.h> | 13 #import <Foundation/Foundation.h> |
| 14 | 14 |
| 15 #include <string> | 15 #include <string> |
| 16 | 16 |
| 17 #include "base/compiler_specific.h" | 17 #include "base/compiler_specific.h" |
| 18 #include "base/mac/scoped_nsobject.h" | 18 #include "base/mac/scoped_nsobject.h" |
| 19 #include "base/memory/ref_counted.h" | 19 #include "base/memory/ref_counted.h" |
| 20 #include "base/memory/weak_ptr.h" | 20 #include "base/memory/weak_ptr.h" |
| 21 #include "media/base/video_capture_types.h" | 21 #include "media/base/video_capture_types.h" |
| 22 #include "media/capture/video/video_capture_device.h" | 22 #include "media/capture/video/video_capture_device.h" |
| 23 | 23 |
| 24 @protocol PlatformVideoCapturingMac; | 24 @protocol PlatformVideoCapturingMac; |
| 25 | 25 |
| 26 namespace base { | 26 namespace base { |
| 27 class SingleThreadTaskRunner; | 27 class SingleThreadTaskRunner; |
| 28 } | 28 } |
| 29 | 29 |
| 30 namespace tracked_objects { |
| 31 class Location; |
| 32 } // namespace tracked_objects |
| 33 |
| 30 // Small class to bundle device name and connection type into a dictionary. | 34 // Small class to bundle device name and connection type into a dictionary. |
| 31 MEDIA_EXPORT | 35 MEDIA_EXPORT |
| 32 @interface DeviceNameAndTransportType : NSObject { | 36 @interface DeviceNameAndTransportType : NSObject { |
| 33 @private | 37 @private |
| 34 base::scoped_nsobject<NSString> deviceName_; | 38 base::scoped_nsobject<NSString> deviceName_; |
| 35 // The transport type of the device (USB, PCI, etc), values are defined in | 39 // The transport type of the device (USB, PCI, etc), values are defined in |
| 36 // <IOKit/audio/IOAudioTypes.h> as kIOAudioDeviceTransportType*. | 40 // <IOKit/audio/IOAudioTypes.h> as kIOAudioDeviceTransportType*. |
| 37 int32_t transportType_; | 41 int32_t transportType_; |
| 38 } | 42 } |
| 39 | 43 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 66 bool Init(VideoCaptureDevice::Name::CaptureApiType capture_api_type); | 70 bool Init(VideoCaptureDevice::Name::CaptureApiType capture_api_type); |
| 67 | 71 |
| 68 // Called to deliver captured video frames. | 72 // Called to deliver captured video frames. |
| 69 void ReceiveFrame(const uint8* video_frame, | 73 void ReceiveFrame(const uint8* video_frame, |
| 70 int video_frame_length, | 74 int video_frame_length, |
| 71 const VideoCaptureFormat& frame_format, | 75 const VideoCaptureFormat& frame_format, |
| 72 int aspect_numerator, | 76 int aspect_numerator, |
| 73 int aspect_denominator); | 77 int aspect_denominator); |
| 74 | 78 |
| 75 // Forwarder to VideoCaptureDevice::Client::OnError(). | 79 // Forwarder to VideoCaptureDevice::Client::OnError(). |
| 76 void ReceiveError(const std::string& reason); | 80 void ReceiveError(const tracked_objects::Location& from_here, |
| 81 const std::string& reason); |
| 77 | 82 |
| 78 // Forwarder to VideoCaptureDevice::Client::OnLog(). | 83 // Forwarder to VideoCaptureDevice::Client::OnLog(). |
| 79 void LogMessage(const std::string& message); | 84 void LogMessage(const std::string& message); |
| 80 | 85 |
| 81 private: | 86 private: |
| 82 void SetErrorState(const std::string& reason); | 87 void SetErrorState(const tracked_objects::Location& from_here, |
| 88 const std::string& reason); |
| 83 bool UpdateCaptureResolution(); | 89 bool UpdateCaptureResolution(); |
| 84 | 90 |
| 85 // Flag indicating the internal state. | 91 // Flag indicating the internal state. |
| 86 enum InternalState { kNotInitialized, kIdle, kCapturing, kError }; | 92 enum InternalState { kNotInitialized, kIdle, kCapturing, kError }; |
| 87 | 93 |
| 88 Name device_name_; | 94 Name device_name_; |
| 89 scoped_ptr<VideoCaptureDevice::Client> client_; | 95 scoped_ptr<VideoCaptureDevice::Client> client_; |
| 90 | 96 |
| 91 VideoCaptureFormat capture_format_; | 97 VideoCaptureFormat capture_format_; |
| 92 // These variables control the two-step configure-start process for QTKit HD: | 98 // These variables control the two-step configure-start process for QTKit HD: |
| (...skipping 13 matching lines...) Expand all Loading... |
| 106 // VideoCaptureDeviceMac is destroyed. | 112 // VideoCaptureDeviceMac is destroyed. |
| 107 // NOTE: Weak pointers must be invalidated before all other member variables. | 113 // NOTE: Weak pointers must be invalidated before all other member variables. |
| 108 base::WeakPtrFactory<VideoCaptureDeviceMac> weak_factory_; | 114 base::WeakPtrFactory<VideoCaptureDeviceMac> weak_factory_; |
| 109 | 115 |
| 110 DISALLOW_COPY_AND_ASSIGN(VideoCaptureDeviceMac); | 116 DISALLOW_COPY_AND_ASSIGN(VideoCaptureDeviceMac); |
| 111 }; | 117 }; |
| 112 | 118 |
| 113 } // namespace media | 119 } // namespace media |
| 114 | 120 |
| 115 #endif // MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ | 121 #endif // MEDIA_VIDEO_CAPTURE_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ |
| OLD | NEW |