| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef EXTENSIONS_BROWSER_API_WEBCAM_PRIVATE_V4L2_WEBCAM_H_ | 
 | #define EXTENSIONS_BROWSER_API_WEBCAM_PRIVATE_V4L2_WEBCAM_H_ | 
 |  | 
 | #include "extensions/browser/api/webcam_private/webcam.h" | 
 |  | 
 | #include <stdint.h> | 
 |  | 
 | #include "base/files/scoped_file.h" | 
 | #include "base/macros.h" | 
 |  | 
 | namespace extensions { | 
 |  | 
 | class V4L2Webcam : public Webcam { | 
 |  public: | 
 |   V4L2Webcam(const std::string& device_id); | 
 |   bool Open(); | 
 |  | 
 |  private: | 
 |   ~V4L2Webcam() override; | 
 |   bool EnsureLogitechCommandsMapped(); | 
 |   bool SetWebcamParameter(int fd, uint32_t control_id, int value); | 
 |   bool GetWebcamParameter(int fd, uint32_t control_id, int* value); | 
 |  | 
 |   // Webcam: | 
 |   void GetPan(const GetPTZCompleteCallback& callback) override; | 
 |   void GetTilt(const GetPTZCompleteCallback& callback) override; | 
 |   void GetZoom(const GetPTZCompleteCallback& callback) override; | 
 |   void SetPan(int value, | 
 |               int pan_speed, | 
 |               const SetPTZCompleteCallback& callback) override; | 
 |   void SetTilt(int value, | 
 |                int tilt_speed, | 
 |                const SetPTZCompleteCallback& callback) override; | 
 |   void SetZoom(int value, const SetPTZCompleteCallback& callback) override; | 
 |   void SetPanDirection(PanDirection direction, | 
 |                        int pan_speed, | 
 |                        const SetPTZCompleteCallback& callback) override; | 
 |   void SetTiltDirection(TiltDirection direction, | 
 |                         int tilt_speed, | 
 |                         const SetPTZCompleteCallback& callback) override; | 
 |   void Reset(bool pan, | 
 |              bool tilt, | 
 |              bool zoom, | 
 |              const SetPTZCompleteCallback& callback) override; | 
 |  | 
 |   const std::string device_id_; | 
 |   base::ScopedFD fd_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(V4L2Webcam); | 
 | }; | 
 |  | 
 |  | 
 | }  // namespace extensions | 
 |  | 
 | #endif  // EXTENSIONS_BROWSER_API_WEBCAM_PRIVATE_V4L2_WEBCAM_H_ |