mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 08:44:21 +08:00
V4L/DVB (4188): Add new MPEG control/ioctl definitions to videodev2.h
The old, experimental, VIDIOC_S/G_CODEC API to pass MPEG parameters is now obsolete and is replaced by 'extended controls' which offer more flexibility and are hopefully more future proof. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
442d15d5d8
commit
4f34171212
@ -105,6 +105,8 @@ enum v4l2_ctrl_type {
|
||||
V4L2_CTRL_TYPE_BOOLEAN = 2,
|
||||
V4L2_CTRL_TYPE_MENU = 3,
|
||||
V4L2_CTRL_TYPE_BUTTON = 4,
|
||||
V4L2_CTRL_TYPE_INTEGER64 = 5,
|
||||
V4L2_CTRL_TYPE_CTRL_CLASS = 6,
|
||||
};
|
||||
|
||||
enum v4l2_tuner_type {
|
||||
@ -251,7 +253,7 @@ struct v4l2_pix_format
|
||||
#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G') /* Motion-JPEG */
|
||||
#define V4L2_PIX_FMT_JPEG v4l2_fourcc('J','P','E','G') /* JFIF JPEG */
|
||||
#define V4L2_PIX_FMT_DV v4l2_fourcc('d','v','s','d') /* 1394 */
|
||||
#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M','P','E','G') /* MPEG */
|
||||
#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M','P','E','G') /* MPEG-1/2/4 */
|
||||
|
||||
/* Vendor-specific formats */
|
||||
#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A') /* Winnov hw compress */
|
||||
@ -701,6 +703,34 @@ struct v4l2_control
|
||||
__s32 value;
|
||||
};
|
||||
|
||||
struct v4l2_ext_control
|
||||
{
|
||||
__u32 id;
|
||||
__u32 reserved2[2];
|
||||
union {
|
||||
__s32 value;
|
||||
__s64 value64;
|
||||
void *reserved;
|
||||
};
|
||||
};
|
||||
|
||||
struct v4l2_ext_controls
|
||||
{
|
||||
__u32 ctrl_class;
|
||||
__u32 count;
|
||||
__u32 error_idx;
|
||||
__u32 reserved[2];
|
||||
struct v4l2_ext_control *controls;
|
||||
};
|
||||
|
||||
/* Values for ctrl_class field */
|
||||
#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
|
||||
#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
|
||||
|
||||
#define V4L2_CTRL_ID_MASK (0x0fffffff)
|
||||
#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
|
||||
#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
|
||||
|
||||
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
|
||||
struct v4l2_queryctrl
|
||||
{
|
||||
@ -727,12 +757,21 @@ struct v4l2_querymenu
|
||||
/* Control flags */
|
||||
#define V4L2_CTRL_FLAG_DISABLED 0x0001
|
||||
#define V4L2_CTRL_FLAG_GRABBED 0x0002
|
||||
#define V4L2_CTRL_FLAG_READ_ONLY 0x0004
|
||||
#define V4L2_CTRL_FLAG_UPDATE 0x0008
|
||||
#define V4L2_CTRL_FLAG_INACTIVE 0x0010
|
||||
#define V4L2_CTRL_FLAG_SLIDER 0x0020
|
||||
|
||||
/* Control IDs defined by V4L2 */
|
||||
#define V4L2_CID_BASE 0x00980900
|
||||
/* Query flag, to be ORed with the control ID */
|
||||
#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
|
||||
|
||||
/* User-class control IDs defined by V4L2 */
|
||||
#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
|
||||
#define V4L2_CID_USER_BASE V4L2_CID_BASE
|
||||
/* IDs reserved for driver specific controls */
|
||||
#define V4L2_CID_PRIVATE_BASE 0x08000000
|
||||
|
||||
#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
|
||||
#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
|
||||
#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
|
||||
#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
|
||||
@ -759,6 +798,183 @@ struct v4l2_querymenu
|
||||
#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
|
||||
#define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */
|
||||
|
||||
/* MPEG-class control IDs defined by V4L2 */
|
||||
#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
|
||||
#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
|
||||
|
||||
/* MPEG streams */
|
||||
#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)
|
||||
enum v4l2_mpeg_stream_type {
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_PS, /* MPEG-2 program stream */
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_TS, /* MPEG-2 transport stream */
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG1_SS, /* MPEG-1 system stream */
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_DVD, /* MPEG-2 DVD-compatible stream */
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG1_VCD, /* MPEG-1 VCD-compatible stream */
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD, /* MPEG-2 SVCD-compatible stream */
|
||||
};
|
||||
#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
|
||||
#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
|
||||
#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
|
||||
#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
|
||||
#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
|
||||
#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
|
||||
|
||||
/* MPEG audio */
|
||||
#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)
|
||||
enum v4l2_mpeg_audio_sampling_freq {
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100,
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000,
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000,
|
||||
};
|
||||
#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
|
||||
enum v4l2_mpeg_audio_encoding {
|
||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_1,
|
||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_2,
|
||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_3,
|
||||
};
|
||||
#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
|
||||
enum v4l2_mpeg_audio_l1_bitrate {
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_32K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_64K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_96K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_128K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_160K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_192K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_224K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_256K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_288K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_320K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_352K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_384K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_416K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_448K,
|
||||
};
|
||||
#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)
|
||||
enum v4l2_mpeg_audio_l2_bitrate {
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_32K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_48K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_56K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_64K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_80K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_96K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_112K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_128K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_160K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_192K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_224K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_256K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_320K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_384K,
|
||||
};
|
||||
#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)
|
||||
enum v4l2_mpeg_audio_l3_bitrate {
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_32K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_40K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_48K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_56K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_64K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_80K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_96K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_112K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_128K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_160K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_192K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_224K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_256K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_320K,
|
||||
};
|
||||
#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
|
||||
enum v4l2_mpeg_audio_mode {
|
||||
V4L2_MPEG_AUDIO_MODE_STEREO,
|
||||
V4L2_MPEG_AUDIO_MODE_JOINT_STEREO,
|
||||
V4L2_MPEG_AUDIO_MODE_DUAL,
|
||||
V4L2_MPEG_AUDIO_MODE_MONO,
|
||||
};
|
||||
#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)
|
||||
enum v4l2_mpeg_audio_mode_extension {
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16,
|
||||
};
|
||||
#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
|
||||
enum v4l2_mpeg_audio_emphasis {
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_NONE,
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS,
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17,
|
||||
};
|
||||
#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
|
||||
enum v4l2_mpeg_audio_crc {
|
||||
V4L2_MPEG_AUDIO_CRC_NONE,
|
||||
V4L2_MPEG_AUDIO_CRC_CRC16,
|
||||
};
|
||||
|
||||
/* MPEG video */
|
||||
#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
|
||||
enum v4l2_mpeg_video_encoding {
|
||||
V4L2_MPEG_VIDEO_ENCODING_MPEG_1,
|
||||
V4L2_MPEG_VIDEO_ENCODING_MPEG_2,
|
||||
};
|
||||
#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
|
||||
enum v4l2_mpeg_video_aspect {
|
||||
V4L2_MPEG_VIDEO_ASPECT_1x1,
|
||||
V4L2_MPEG_VIDEO_ASPECT_4x3,
|
||||
V4L2_MPEG_VIDEO_ASPECT_16x9,
|
||||
V4L2_MPEG_VIDEO_ASPECT_221x100,
|
||||
};
|
||||
#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
|
||||
#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
|
||||
#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
|
||||
#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
|
||||
#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
|
||||
enum v4l2_mpeg_video_bitrate_mode {
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
|
||||
};
|
||||
#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
|
||||
#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
|
||||
#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
|
||||
|
||||
/* MPEG-class control IDs specific to the CX2584x driver as defined by V4L2 */
|
||||
#define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
|
||||
enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
|
||||
V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL,
|
||||
V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO,
|
||||
};
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
|
||||
enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
|
||||
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF,
|
||||
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR,
|
||||
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT,
|
||||
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE,
|
||||
V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE,
|
||||
};
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)
|
||||
enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
|
||||
V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF,
|
||||
V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR,
|
||||
};
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)
|
||||
enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
|
||||
V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL,
|
||||
V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO,
|
||||
};
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
|
||||
enum v4l2_mpeg_cx2341x_video_median_filter_type {
|
||||
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF,
|
||||
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR,
|
||||
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT,
|
||||
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT,
|
||||
V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG,
|
||||
};
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
|
||||
#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
|
||||
|
||||
/*
|
||||
* T U N I N G
|
||||
*/
|
||||
@ -1020,6 +1236,9 @@ struct v4l2_streamparm
|
||||
#define VIDIOC_G_SLICED_VBI_CAP _IOR ('V', 69, struct v4l2_sliced_vbi_cap)
|
||||
#endif
|
||||
#define VIDIOC_LOG_STATUS _IO ('V', 70)
|
||||
#define VIDIOC_G_EXT_CTRLS _IOWR ('V', 71, struct v4l2_ext_controls)
|
||||
#define VIDIOC_S_EXT_CTRLS _IOWR ('V', 72, struct v4l2_ext_controls)
|
||||
#define VIDIOC_TRY_EXT_CTRLS _IOWR ('V', 73, struct v4l2_ext_controls)
|
||||
|
||||
#ifdef __OLD_VIDIOC_
|
||||
/* for compatibility, will go away some day */
|
||||
|
Loading…
Reference in New Issue
Block a user