Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(811)

Side by Side Diff: media/capture/video/mac/video_capture_device_mac.h

Issue 2151443003: Revert of RELAND: ImageCapture: Implement takePhoto() for Mac AVFoundation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 AVFoundation as 5 // MacOSX implementation of generic VideoCaptureDevice, using AVFoundation as
6 // native capture API. AVFoundation is available in versions 10.7 (Lion) and 6 // native capture API. AVFoundation is available in versions 10.7 (Lion) and
7 // later. 7 // later.
8 8
9 #ifndef MEDIA_CAPTURE_VIDEO_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ 9 #ifndef MEDIA_CAPTURE_VIDEO_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_
10 #define MEDIA_CAPTURE_VIDEO_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ 10 #define MEDIA_CAPTURE_VIDEO_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 class VideoCaptureDeviceMac : public VideoCaptureDevice { 55 class VideoCaptureDeviceMac : public VideoCaptureDevice {
56 public: 56 public:
57 explicit VideoCaptureDeviceMac(const Name& device_name); 57 explicit VideoCaptureDeviceMac(const Name& device_name);
58 ~VideoCaptureDeviceMac() override; 58 ~VideoCaptureDeviceMac() override;
59 59
60 // VideoCaptureDevice implementation. 60 // VideoCaptureDevice implementation.
61 void AllocateAndStart( 61 void AllocateAndStart(
62 const VideoCaptureParams& params, 62 const VideoCaptureParams& params,
63 std::unique_ptr<VideoCaptureDevice::Client> client) override; 63 std::unique_ptr<VideoCaptureDevice::Client> client) override;
64 void StopAndDeAllocate() override; 64 void StopAndDeAllocate() override;
65 void TakePhoto(TakePhotoCallback callback) override;
66 65
67 bool Init(VideoCaptureDevice::Name::CaptureApiType capture_api_type); 66 bool Init(VideoCaptureDevice::Name::CaptureApiType capture_api_type);
68 67
69 // Called to deliver captured video frames. It's safe to call this method 68 // Called to deliver captured video frames.
70 // from any thread, including those controlled by AVFoundation.
71 void ReceiveFrame(const uint8_t* video_frame, 69 void ReceiveFrame(const uint8_t* video_frame,
72 int video_frame_length, 70 int video_frame_length,
73 const VideoCaptureFormat& frame_format, 71 const VideoCaptureFormat& frame_format,
74 int aspect_numerator, 72 int aspect_numerator,
75 int aspect_denominator, 73 int aspect_denominator,
76 base::TimeDelta timestamp); 74 base::TimeDelta timestamp);
77 75
78 // Callbacks with the result of a still image capture, or in case of error,
79 // respectively. It's safe to call these methods from any thread.
80 void OnPhotoTaken(const uint8_t* image_data,
81 size_t image_length,
82 const std::string& mime_type);
83 void OnPhotoError();
84
85 // Forwarder to VideoCaptureDevice::Client::OnError(). 76 // Forwarder to VideoCaptureDevice::Client::OnError().
86 void ReceiveError(const tracked_objects::Location& from_here, 77 void ReceiveError(const tracked_objects::Location& from_here,
87 const std::string& reason); 78 const std::string& reason);
88 79
89 // Forwarder to VideoCaptureDevice::Client::OnLog(). 80 // Forwarder to VideoCaptureDevice::Client::OnLog().
90 void LogMessage(const std::string& message); 81 void LogMessage(const std::string& message);
91 82
92 private: 83 private:
93 void SetErrorState(const tracked_objects::Location& from_here, 84 void SetErrorState(const tracked_objects::Location& from_here,
94 const std::string& reason); 85 const std::string& reason);
95 bool UpdateCaptureResolution(); 86 bool UpdateCaptureResolution();
96 87
97 // Flag indicating the internal state. 88 // Flag indicating the internal state.
98 enum InternalState { kNotInitialized, kIdle, kCapturing, kError }; 89 enum InternalState { kNotInitialized, kIdle, kCapturing, kError };
99 90
100 Name device_name_; 91 Name device_name_;
101 std::unique_ptr<VideoCaptureDevice::Client> client_; 92 std::unique_ptr<VideoCaptureDevice::Client> client_;
102 93
103 VideoCaptureFormat capture_format_; 94 VideoCaptureFormat capture_format_;
104 95
105 // Only read and write state_ from inside this loop. 96 // Only read and write state_ from inside this loop.
106 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 97 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
107 InternalState state_; 98 InternalState state_;
108 99
109 base::scoped_nsobject<VideoCaptureDeviceAVFoundation> capture_device_; 100 base::scoped_nsobject<VideoCaptureDeviceAVFoundation> capture_device_;
110 101
111 // To hold on to the TakePhotoCallback while the picture is being taken.
112 std::unique_ptr<TakePhotoCallback> photo_callback_;
113
114 // Used with Bind and PostTask to ensure that methods aren't called after the 102 // Used with Bind and PostTask to ensure that methods aren't called after the
115 // VideoCaptureDeviceMac is destroyed. 103 // VideoCaptureDeviceMac is destroyed.
116 // NOTE: Weak pointers must be invalidated before all other member variables. 104 // NOTE: Weak pointers must be invalidated before all other member variables.
117 base::WeakPtrFactory<VideoCaptureDeviceMac> weak_factory_; 105 base::WeakPtrFactory<VideoCaptureDeviceMac> weak_factory_;
118 106
119 DISALLOW_COPY_AND_ASSIGN(VideoCaptureDeviceMac); 107 DISALLOW_COPY_AND_ASSIGN(VideoCaptureDeviceMac);
120 }; 108 };
121 109
122 } // namespace media 110 } // namespace media
123 111
124 #endif // MEDIA_CAPTURE_VIDEO_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_ 112 #endif // MEDIA_CAPTURE_VIDEO_MAC_VIDEO_CAPTURE_DEVICE_MAC_H_
OLDNEW
« no previous file with comments | « media/capture/video/mac/video_capture_device_avfoundation_mac.mm ('k') | media/capture/video/mac/video_capture_device_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698