/**
* \file
* Declarations for compatibility with different V4L2 versions.
*
* \ingroup libwebcam
*/
/*
* Copyright (c) 2006-2009 Logitech.
*
* This file is part of libwebcam.
*
* libwebcam is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* libwebcam is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with libwebcam. If not, see .
*/
#ifndef C_COMPAT_H
#define C_COMPAT_H
#include "incvideodev.h"
#include
#ifdef USE_UVCVIDEO
#define __user
#include "uvcvideo.h"
#endif
#ifndef UVC_CONTROL_SET_CUR
/* Control flags */
#define UVC_CONTROL_SET_CUR (1 << 0)
#define UVC_CONTROL_GET_CUR (1 << 1)
#define UVC_CONTROL_GET_MIN (1 << 2)
#define UVC_CONTROL_GET_MAX (1 << 3)
#define UVC_CONTROL_GET_RES (1 << 4)
#define UVC_CONTROL_GET_DEF (1 << 5)
/* Control should be saved at suspend and restored at resume. */
#define UVC_CONTROL_RESTORE (1 << 6)
/* Control can be updated by the camera. */
#define UVC_CONTROL_AUTO_UPDATE (1 << 7)
#define UVC_CONTROL_GET_RANGE (UVC_CONTROL_GET_CUR | UVC_CONTROL_GET_MIN | \
UVC_CONTROL_GET_MAX | UVC_CONTROL_GET_RES | \
UVC_CONTROL_GET_DEF)
#endif
#ifndef UVCIOC_CTRL_ADD
struct uvc_xu_control_info {
__u8 entity[16];
__u8 index;
__u8 selector;
__u16 size;
__u32 flags;
};
#endif
// uvcvideo.h
// Old uvcvideo pre-r178 control IDs
#define UVC_CID_BACKLIGHT_COMPENSATION (V4L2_CID_PRIVATE_BASE+0)
#define UVC_CID_POWER_LINE_FREQUENCY (V4L2_CID_PRIVATE_BASE+1)
#define UVC_CID_SHARPNESS (V4L2_CID_PRIVATE_BASE+2)
#define UVC_CID_HUE_AUTO (V4L2_CID_PRIVATE_BASE+3)
#define UVC_CID_FOCUS_AUTO (V4L2_CID_PRIVATE_BASE+4)
#define UVC_CID_FOCUS_ABSOLUTE (V4L2_CID_PRIVATE_BASE+5)
#define UVC_CID_FOCUS_RELATIVE (V4L2_CID_PRIVATE_BASE+6)
#define UVC_CID_PAN_RELATIVE (V4L2_CID_PRIVATE_BASE+7)
#define UVC_CID_TILT_RELATIVE (V4L2_CID_PRIVATE_BASE+8)
#define UVC_CID_PANTILT_RESET (V4L2_CID_PRIVATE_BASE+9)
#define UVC_CID_EXPOSURE_AUTO (V4L2_CID_PRIVATE_BASE+10)
#define UVC_CID_EXPOSURE_ABSOLUTE (V4L2_CID_PRIVATE_BASE+11)
#define UVC_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_PRIVATE_BASE+14)
#define UVC_CID_WHITE_BALANCE_TEMPERATURE_AUTO (V4L2_CID_PRIVATE_BASE+12)
#define UVC_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_PRIVATE_BASE+13)
// videodev2.h
// Class IDs
#ifndef V4L2_CTRL_CLASS_USER
#define V4L2_CTRL_CLASS_USER 0x00980000
#endif
#ifndef V4L2_CTRL_CLASS_MPEG
#define V4L2_CTRL_CLASS_MPEG 0x00990000
#endif
#ifndef V4L2_CTRL_CLASS_CAMERA
#define V4L2_CTRL_CLASS_CAMERA 0x009a0000
#endif
// Macros
#ifndef V4L2_CTRL_ID2CLASS
#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
#endif
// User controls from newer V4L2 versions
#ifndef V4L2_CID_POWER_LINE_FREQUENCY
#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
#endif
#ifndef V4L2_CID_HUE_AUTO
#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
#endif
#ifndef V4L2_CID_WHITE_BALANCE_TEMPERATURE
#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
#endif
#ifndef V4L2_CID_SHARPNESS
#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
#endif
#ifndef V4L2_CID_BACKLIGHT_COMPENSATION
#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
#endif
// Camera class controls from newer V4L2 versions
#ifndef V4L2_CID_CAMERA_CLASS_BASE
#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
#endif
#ifndef V4L2_CID_EXPOSURE_AUTO
#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
#endif
#ifndef V4L2_CID_EXPOSURE_ABSOLUTE
#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
#endif
#ifndef V4L2_CID_EXPOSURE_AUTO_PRIORITY
#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
#endif
#ifndef V4L2_CID_PAN_RELATIVE
#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
#endif
#ifndef V4L2_CID_TILT_RELATIVE
#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
#endif
#ifndef V4L2_CID_PAN_RESET
#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
#endif
#ifndef V4L2_CID_TILT_RESET
#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
#endif
#ifndef V4L2_CID_PAN_ABSOLUTE
#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
#endif
#ifndef V4L2_CID_TILT_ABSOLUTE
#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
#endif
#ifndef V4L2_CID_FOCUS_ABSOLUTE
#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
#endif
#ifndef V4L2_CID_FOCUS_RELATIVE
#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
#endif
#ifndef V4L2_CID_FOCUS_AUTO
#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
#endif
#ifndef V4L2_CID_ZOOM_ABSOLUTE
#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)
#endif
#ifndef V4L2_CID_ZOOM_RELATIVE
#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
#endif
#ifndef V4L2_CID_ZOOM_CONTINUOUS
#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15)
#endif
#ifndef V4L2_CID_PRIVACY
#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
#endif
#endif /* C_COMPAT_H */