mirror of https://gitee.com/openkylin/linux.git
V4L/DVB (10698): v4l2-common: remove v4l2_ctrl_query_fill_std
The v4l2_ctrl_query_fill_std() function wasn't one the best idea I ever had. It doesn't add anything valuable that cannot be expressed equally well with v4l2_ctrl_query_fill and only adds overhead. Replace it with v4l2_ctrl_query_fill() everywhere it is used and remove it from v4l2_common.c. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
1df795370c
commit
10afbef15e
|
@ -788,10 +788,12 @@ int cx18_av_cmd(struct cx18 *cx, unsigned int cmd, void *arg)
|
|||
|
||||
switch (qc->id) {
|
||||
case V4L2_CID_BRIGHTNESS:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 255, 1, 128);
|
||||
case V4L2_CID_CONTRAST:
|
||||
case V4L2_CID_SATURATION:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 127, 1, 64);
|
||||
case V4L2_CID_HUE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
return v4l2_ctrl_query_fill(qc, -128, 127, 1, 0);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -801,10 +803,11 @@ int cx18_av_cmd(struct cx18 *cx, unsigned int cmd, void *arg)
|
|||
return v4l2_ctrl_query_fill(qc, 0, 65535,
|
||||
65535 / 100, state->default_volume);
|
||||
case V4L2_CID_AUDIO_MUTE:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0);
|
||||
case V4L2_CID_AUDIO_BALANCE:
|
||||
case V4L2_CID_AUDIO_BASS:
|
||||
case V4L2_CID_AUDIO_TREBLE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 32768);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -500,6 +500,29 @@ int cx2341x_ctrl_query(const struct cx2341x_mpeg_params *params,
|
|||
int err;
|
||||
|
||||
switch (qctrl->id) {
|
||||
case V4L2_CID_MPEG_STREAM_TYPE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_PS,
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD, 1,
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_PS);
|
||||
|
||||
case V4L2_CID_MPEG_STREAM_VBI_FMT:
|
||||
if (params->capabilities & CX2341X_CAP_HAS_SLICED_VBI)
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_NONE,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_IVTV, 1,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_NONE);
|
||||
return cx2341x_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_NONE,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_NONE, 1,
|
||||
default_params.stream_vbi_fmt);
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100,
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000, 1,
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000);
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_ENCODING:
|
||||
if (params->capabilities & CX2341X_CAP_HAS_AC3) {
|
||||
/*
|
||||
|
@ -531,9 +554,36 @@ int cx2341x_ctrl_query(const struct cx2341x_mpeg_params *params,
|
|||
qctrl->flags |= V4L2_CTRL_FLAG_INACTIVE;
|
||||
return 0;
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_L1_BITRATE:
|
||||
case V4L2_CID_MPEG_AUDIO_L3_BITRATE:
|
||||
return -EINVAL;
|
||||
case V4L2_CID_MPEG_AUDIO_MODE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_MODE_STEREO,
|
||||
V4L2_MPEG_AUDIO_MODE_MONO, 1,
|
||||
V4L2_MPEG_AUDIO_MODE_STEREO);
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
|
||||
err = v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16, 1,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4);
|
||||
if (err == 0 &&
|
||||
params->audio_mode != V4L2_MPEG_AUDIO_MODE_JOINT_STEREO)
|
||||
qctrl->flags |= V4L2_CTRL_FLAG_INACTIVE;
|
||||
return err;
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_EMPHASIS:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_NONE,
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17, 1,
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_NONE);
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_CRC:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_CRC_NONE,
|
||||
V4L2_MPEG_AUDIO_CRC_CRC16, 1,
|
||||
V4L2_MPEG_AUDIO_CRC_NONE);
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_MUTE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 0);
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:
|
||||
err = v4l2_ctrl_query_fill(qctrl,
|
||||
|
@ -550,13 +600,6 @@ int cx2341x_ctrl_query(const struct cx2341x_mpeg_params *params,
|
|||
qctrl->flags |= V4L2_CTRL_FLAG_DISABLED;
|
||||
return 0;
|
||||
|
||||
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
|
||||
err = v4l2_ctrl_query_fill_std(qctrl);
|
||||
if (err == 0 &&
|
||||
params->audio_mode != V4L2_MPEG_AUDIO_MODE_JOINT_STEREO)
|
||||
qctrl->flags |= V4L2_CTRL_FLAG_INACTIVE;
|
||||
return err;
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_ENCODING:
|
||||
/* this setting is read-only for the cx2341x since the
|
||||
V4L2_CID_MPEG_STREAM_TYPE really determines the
|
||||
|
@ -569,32 +612,51 @@ int cx2341x_ctrl_query(const struct cx2341x_mpeg_params *params,
|
|||
qctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
|
||||
return err;
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_ASPECT:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_VIDEO_ASPECT_1x1,
|
||||
V4L2_MPEG_VIDEO_ASPECT_221x100, 1,
|
||||
V4L2_MPEG_VIDEO_ASPECT_4x3);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_B_FRAMES:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 33, 1, 2);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_GOP_SIZE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 1, 34, 1,
|
||||
params->is_50hz ? 12 : 15);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 1);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
|
||||
err = v4l2_ctrl_query_fill_std(qctrl);
|
||||
err = v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, 1,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR);
|
||||
if (err == 0 &&
|
||||
params->video_encoding == V4L2_MPEG_VIDEO_ENCODING_MPEG_1)
|
||||
qctrl->flags |= V4L2_CTRL_FLAG_INACTIVE;
|
||||
return err;
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 27000000, 1, 6000000);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:
|
||||
err = v4l2_ctrl_query_fill_std(qctrl);
|
||||
err = v4l2_ctrl_query_fill(qctrl, 0, 27000000, 1, 8000000);
|
||||
if (err == 0 &&
|
||||
params->video_bitrate_mode ==
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR)
|
||||
qctrl->flags |= V4L2_CTRL_FLAG_INACTIVE;
|
||||
return err;
|
||||
|
||||
case V4L2_CID_MPEG_STREAM_VBI_FMT:
|
||||
if (params->capabilities & CX2341X_CAP_HAS_SLICED_VBI)
|
||||
return v4l2_ctrl_query_fill_std(qctrl);
|
||||
return cx2341x_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_NONE,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_NONE, 1,
|
||||
default_params.stream_vbi_fmt);
|
||||
case V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 0);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_GOP_SIZE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 1, 34, 1,
|
||||
params->is_50hz ? 12 : 15);
|
||||
case V4L2_CID_MPEG_VIDEO_MUTE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 0);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_MUTE_YUV: /* Init YUV (really YCbCr) to black */
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 0xffffff, 1, 0x008080);
|
||||
|
||||
/* CX23415/6 specific */
|
||||
case V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE:
|
||||
|
@ -696,7 +758,7 @@ int cx2341x_ctrl_query(const struct cx2341x_mpeg_params *params,
|
|||
default_params.stream_insert_nav_packets);
|
||||
|
||||
default:
|
||||
return v4l2_ctrl_query_fill_std(qctrl);
|
||||
return -EINVAL;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1205,10 +1205,12 @@ static int cx25840_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
|
|||
|
||||
switch (qc->id) {
|
||||
case V4L2_CID_BRIGHTNESS:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 255, 1, 128);
|
||||
case V4L2_CID_CONTRAST:
|
||||
case V4L2_CID_SATURATION:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 127, 1, 64);
|
||||
case V4L2_CID_HUE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
return v4l2_ctrl_query_fill(qc, -128, 127, 1, 0);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -1220,10 +1222,11 @@ static int cx25840_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
|
|||
return v4l2_ctrl_query_fill(qc, 0, 65535,
|
||||
65535 / 100, state->default_volume);
|
||||
case V4L2_CID_AUDIO_MUTE:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0);
|
||||
case V4L2_CID_AUDIO_BALANCE:
|
||||
case V4L2_CID_AUDIO_BASS:
|
||||
case V4L2_CID_AUDIO_TREBLE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 32768);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -713,22 +713,24 @@ static int msp_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
|
|||
struct msp_state *state = to_state(sd);
|
||||
|
||||
switch (qc->id) {
|
||||
case V4L2_CID_AUDIO_VOLUME:
|
||||
case V4L2_CID_AUDIO_MUTE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
default:
|
||||
break;
|
||||
case V4L2_CID_AUDIO_VOLUME:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 58880);
|
||||
case V4L2_CID_AUDIO_MUTE:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (!state->has_sound_processing)
|
||||
return -EINVAL;
|
||||
switch (qc->id) {
|
||||
case V4L2_CID_AUDIO_LOUDNESS:
|
||||
case V4L2_CID_AUDIO_BALANCE:
|
||||
case V4L2_CID_AUDIO_BASS:
|
||||
case V4L2_CID_AUDIO_TREBLE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
default:
|
||||
return -EINVAL;
|
||||
case V4L2_CID_AUDIO_LOUDNESS:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0);
|
||||
case V4L2_CID_AUDIO_BALANCE:
|
||||
case V4L2_CID_AUDIO_BASS:
|
||||
case V4L2_CID_AUDIO_TREBLE:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 32768);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1206,10 +1206,12 @@ static int saa711x_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
|
|||
{
|
||||
switch (qc->id) {
|
||||
case V4L2_CID_BRIGHTNESS:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 255, 1, 128);
|
||||
case V4L2_CID_CONTRAST:
|
||||
case V4L2_CID_SATURATION:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 127, 1, 64);
|
||||
case V4L2_CID_HUE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
return v4l2_ctrl_query_fill(qc, -128, 127, 1, 0);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -592,7 +592,7 @@ static int saa6752hs_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc
|
|||
V4L2_MPEG_VIDEO_ASPECT_4x3);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:
|
||||
err = v4l2_ctrl_query_fill_std(qctrl);
|
||||
err = v4l2_ctrl_query_fill(qctrl, 0, 27000000, 1, 8000000);
|
||||
if (err == 0 &&
|
||||
params->vi_bitrate_mode ==
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR)
|
||||
|
@ -606,12 +606,20 @@ static int saa6752hs_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc
|
|||
V4L2_MPEG_STREAM_TYPE_MPEG2_TS);
|
||||
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, 1,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR);
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 27000000, 1, 6000000);
|
||||
case V4L2_CID_MPEG_STREAM_PID_PMT:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, (1 << 14) - 1, 1, 16);
|
||||
case V4L2_CID_MPEG_STREAM_PID_AUDIO:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, (1 << 14) - 1, 1, 260);
|
||||
case V4L2_CID_MPEG_STREAM_PID_VIDEO:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, (1 << 14) - 1, 1, 256);
|
||||
case V4L2_CID_MPEG_STREAM_PID_PCR:
|
||||
return v4l2_ctrl_query_fill_std(qctrl);
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, (1 << 14) - 1, 1, 259);
|
||||
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -390,7 +390,7 @@ static int empress_queryctrl(struct file *file, void *priv,
|
|||
if (c->id == 0)
|
||||
return -EINVAL;
|
||||
if (c->id == V4L2_CID_USER_CLASS || c->id == V4L2_CID_MPEG_CLASS)
|
||||
return v4l2_ctrl_query_fill_std(c);
|
||||
return v4l2_ctrl_query_fill(c, 0, 0, 0, 0);
|
||||
if (V4L2_CTRL_ID2CLASS(c->id) != V4L2_CTRL_CLASS_MPEG)
|
||||
return saa7134_queryctrl(file, priv, c);
|
||||
return saa_call_empress(dev, core, queryctrl, c);
|
||||
|
|
|
@ -421,12 +421,14 @@ static int tda7432_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
|
|||
static int tda7432_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
|
||||
{
|
||||
switch (qc->id) {
|
||||
case V4L2_CID_AUDIO_MUTE:
|
||||
case V4L2_CID_AUDIO_VOLUME:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 58880);
|
||||
case V4L2_CID_AUDIO_MUTE:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0);
|
||||
case V4L2_CID_AUDIO_BALANCE:
|
||||
case V4L2_CID_AUDIO_BASS:
|
||||
case V4L2_CID_AUDIO_TREBLE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 32768);
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -313,9 +313,10 @@ static int tda9875_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
|
|||
{
|
||||
switch (qc->id) {
|
||||
case V4L2_CID_AUDIO_VOLUME:
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 58880);
|
||||
case V4L2_CID_AUDIO_BASS:
|
||||
case V4L2_CID_AUDIO_TREBLE:
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 32768);
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
@ -1636,21 +1636,24 @@ static int tvaudio_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
|
|||
|
||||
switch (qc->id) {
|
||||
case V4L2_CID_AUDIO_MUTE:
|
||||
break;
|
||||
return v4l2_ctrl_query_fill(qc, 0, 1, 1, 0);
|
||||
case V4L2_CID_AUDIO_VOLUME:
|
||||
if (desc->flags & CHIP_HAS_VOLUME)
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 58880);
|
||||
break;
|
||||
case V4L2_CID_AUDIO_BALANCE:
|
||||
if (!(desc->flags & CHIP_HAS_VOLUME))
|
||||
return -EINVAL;
|
||||
if (desc->flags & CHIP_HAS_VOLUME)
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 32768);
|
||||
break;
|
||||
case V4L2_CID_AUDIO_BASS:
|
||||
case V4L2_CID_AUDIO_TREBLE:
|
||||
if (!(desc->flags & CHIP_HAS_BASSTREBLE))
|
||||
return -EINVAL;
|
||||
if (desc->flags & CHIP_HAS_BASSTREBLE)
|
||||
return v4l2_ctrl_query_fill(qc, 0, 65535, 65535 / 100, 32768);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
break;
|
||||
}
|
||||
return v4l2_ctrl_query_fill_std(qc);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int tvaudio_s_routing(struct v4l2_subdev *sd, const struct v4l2_routing *rt)
|
||||
|
|
|
@ -725,10 +725,9 @@ ioctl_queryctrl(struct v4l2_int_device *s, struct v4l2_queryctrl *qctrl)
|
|||
|
||||
switch (qctrl->id) {
|
||||
case V4L2_CID_BRIGHTNESS:
|
||||
/* Brightness supported is same as standard one (0-255),
|
||||
* so make use of standard API provided.
|
||||
/* Brightness supported is (0-255),
|
||||
*/
|
||||
err = v4l2_ctrl_query_fill_std(qctrl);
|
||||
err = v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 128);
|
||||
break;
|
||||
case V4L2_CID_CONTRAST:
|
||||
case V4L2_CID_SATURATION:
|
||||
|
|
|
@ -588,151 +588,6 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
|
|||
}
|
||||
EXPORT_SYMBOL(v4l2_ctrl_query_fill);
|
||||
|
||||
/* Fill in a struct v4l2_queryctrl with standard values based on
|
||||
the control ID. */
|
||||
int v4l2_ctrl_query_fill_std(struct v4l2_queryctrl *qctrl)
|
||||
{
|
||||
switch (qctrl->id) {
|
||||
/* USER controls */
|
||||
case V4L2_CID_USER_CLASS:
|
||||
case V4L2_CID_MPEG_CLASS:
|
||||
case V4L2_CID_CAMERA_CLASS:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 0, 0, 0);
|
||||
case V4L2_CID_AUDIO_VOLUME:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 65535, 65535 / 100, 58880);
|
||||
case V4L2_CID_AUDIO_MUTE:
|
||||
case V4L2_CID_AUDIO_LOUDNESS:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 0);
|
||||
case V4L2_CID_AUDIO_BALANCE:
|
||||
case V4L2_CID_AUDIO_BASS:
|
||||
case V4L2_CID_AUDIO_TREBLE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 65535, 65535 / 100, 32768);
|
||||
case V4L2_CID_BRIGHTNESS:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 128);
|
||||
case V4L2_CID_CONTRAST:
|
||||
case V4L2_CID_SATURATION:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 127, 1, 64);
|
||||
case V4L2_CID_HUE:
|
||||
return v4l2_ctrl_query_fill(qctrl, -128, 127, 1, 0);
|
||||
case V4L2_CID_COLORFX:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 0);
|
||||
|
||||
/* MPEG controls */
|
||||
case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100,
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000, 1,
|
||||
V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000);
|
||||
case V4L2_CID_MPEG_AUDIO_ENCODING:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_1,
|
||||
V4L2_MPEG_AUDIO_ENCODING_AC3, 1,
|
||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_2);
|
||||
case V4L2_CID_MPEG_AUDIO_L1_BITRATE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_32K,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_448K, 1,
|
||||
V4L2_MPEG_AUDIO_L1_BITRATE_256K);
|
||||
case V4L2_CID_MPEG_AUDIO_L2_BITRATE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_32K,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_384K, 1,
|
||||
V4L2_MPEG_AUDIO_L2_BITRATE_224K);
|
||||
case V4L2_CID_MPEG_AUDIO_L3_BITRATE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_32K,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_320K, 1,
|
||||
V4L2_MPEG_AUDIO_L3_BITRATE_192K);
|
||||
case V4L2_CID_MPEG_AUDIO_AAC_BITRATE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 6400, 1, 3200000);
|
||||
case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_AC3_BITRATE_32K,
|
||||
V4L2_MPEG_AUDIO_AC3_BITRATE_640K, 1,
|
||||
V4L2_MPEG_AUDIO_AC3_BITRATE_384K);
|
||||
case V4L2_CID_MPEG_AUDIO_MODE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_MODE_STEREO,
|
||||
V4L2_MPEG_AUDIO_MODE_MONO, 1,
|
||||
V4L2_MPEG_AUDIO_MODE_STEREO);
|
||||
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16, 1,
|
||||
V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4);
|
||||
case V4L2_CID_MPEG_AUDIO_EMPHASIS:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_NONE,
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17, 1,
|
||||
V4L2_MPEG_AUDIO_EMPHASIS_NONE);
|
||||
case V4L2_CID_MPEG_AUDIO_CRC:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_AUDIO_CRC_NONE,
|
||||
V4L2_MPEG_AUDIO_CRC_CRC16, 1,
|
||||
V4L2_MPEG_AUDIO_CRC_NONE);
|
||||
case V4L2_CID_MPEG_AUDIO_MUTE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 0);
|
||||
case V4L2_CID_MPEG_VIDEO_ENCODING:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_VIDEO_ENCODING_MPEG_1,
|
||||
V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC, 1,
|
||||
V4L2_MPEG_VIDEO_ENCODING_MPEG_2);
|
||||
case V4L2_CID_MPEG_VIDEO_ASPECT:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_VIDEO_ASPECT_1x1,
|
||||
V4L2_MPEG_VIDEO_ASPECT_221x100, 1,
|
||||
V4L2_MPEG_VIDEO_ASPECT_4x3);
|
||||
case V4L2_CID_MPEG_VIDEO_B_FRAMES:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 33, 1, 2);
|
||||
case V4L2_CID_MPEG_VIDEO_GOP_SIZE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 1, 34, 1, 12);
|
||||
case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 1);
|
||||
case V4L2_CID_MPEG_VIDEO_PULLDOWN:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 0);
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, 1,
|
||||
V4L2_MPEG_VIDEO_BITRATE_MODE_VBR);
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 27000000, 1, 6000000);
|
||||
case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 27000000, 1, 8000000);
|
||||
case V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 0);
|
||||
case V4L2_CID_MPEG_VIDEO_MUTE:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 1, 1, 0);
|
||||
case V4L2_CID_MPEG_VIDEO_MUTE_YUV: /* Init YUV (really YCbCr) to black */
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 0xffffff, 1, 0x008080);
|
||||
case V4L2_CID_MPEG_STREAM_TYPE:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_PS,
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD, 1,
|
||||
V4L2_MPEG_STREAM_TYPE_MPEG2_PS);
|
||||
case V4L2_CID_MPEG_STREAM_PID_PMT:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, (1 << 14) - 1, 1, 16);
|
||||
case V4L2_CID_MPEG_STREAM_PID_AUDIO:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, (1 << 14) - 1, 1, 260);
|
||||
case V4L2_CID_MPEG_STREAM_PID_VIDEO:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, (1 << 14) - 1, 1, 256);
|
||||
case V4L2_CID_MPEG_STREAM_PID_PCR:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, (1 << 14) - 1, 1, 259);
|
||||
case V4L2_CID_MPEG_STREAM_PES_ID_AUDIO:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 0);
|
||||
case V4L2_CID_MPEG_STREAM_PES_ID_VIDEO:
|
||||
return v4l2_ctrl_query_fill(qctrl, 0, 255, 1, 0);
|
||||
case V4L2_CID_MPEG_STREAM_VBI_FMT:
|
||||
return v4l2_ctrl_query_fill(qctrl,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_NONE,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_IVTV, 1,
|
||||
V4L2_MPEG_STREAM_VBI_FMT_NONE);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(v4l2_ctrl_query_fill_std);
|
||||
|
||||
/* Fill in a struct v4l2_querymenu based on the struct v4l2_queryctrl and
|
||||
the menu. The qctrl pointer may be NULL, in which case it is ignored.
|
||||
If menu_items is NULL, then the menu items are retrieved using
|
||||
|
|
|
@ -102,7 +102,6 @@ int v4l2_ctrl_check(struct v4l2_ext_control *ctrl, struct v4l2_queryctrl *qctrl,
|
|||
const char *v4l2_ctrl_get_name(u32 id);
|
||||
const char **v4l2_ctrl_get_menu(u32 id);
|
||||
int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 step, s32 def);
|
||||
int v4l2_ctrl_query_fill_std(struct v4l2_queryctrl *qctrl);
|
||||
int v4l2_ctrl_query_menu(struct v4l2_querymenu *qmenu,
|
||||
struct v4l2_queryctrl *qctrl, const char **menu_items);
|
||||
#define V4L2_CTRL_MENU_IDS_END (0xffffffff)
|
||||
|
|
Loading…
Reference in New Issue