blob: 78cc35e04c36461f583f0dcf73105186d7cc1564 [file] [log] [blame]
// 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();
static bool SetWebcamParameter(int fd, uint32_t control_id, int value);
static bool GetWebcamParameter(int fd,
uint32_t control_id,
int* value,
int* min_value,
int* max_value);
// Webcam:
void GetPan(const GetPTZCompleteCallback& callback) override;
void GetTilt(const GetPTZCompleteCallback& callback) override;
void GetZoom(const GetPTZCompleteCallback& callback) override;
void GetFocus(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;
void SetFocus(int value, const SetPTZCompleteCallback& callback) override;
void SetAutofocusState(AutofocusState state,
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_