diff options
author | Mike Isely <isely@pobox.com> | 2006-09-02 20:37:52 -0500 |
---|---|---|
committer | Mike Isely <isely@pobox.com> | 2006-09-02 20:37:52 -0500 |
commit | 3b2c8f65ba17064ff36f6523c89b3e3573ff5664 (patch) | |
tree | f0ed8587f63c9c90bb20de3487b284775acb2e8f /linux/drivers/media | |
parent | b089838f894aeee7c67c697cf4991b1ac2d53058 (diff) | |
download | mediapointer-dvb-s2-3b2c8f65ba17064ff36f6523c89b3e3573ff5664.tar.gz mediapointer-dvb-s2-3b2c8f65ba17064ff36f6523c89b3e3573ff5664.tar.bz2 |
Improve resolution limit enforcements in pvrusb2
From: Mike Isely <isely@pobox.com>
The pvrusb2 driver resolution limits are now programmed the following
way, based on empirical measurements of the hardware:
Vertical max: 480 for NTSC, 576 otherwise
Vertical min: 75 for 24xxx, 17 otherwise
Horizontal max: 720
Horizontal min: 720 for 24xxx, 19 otherwise
Signed-off-by: Mike Isely <isely@pobox.com>
Diffstat (limited to 'linux/drivers/media')
-rw-r--r-- | linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c index db509fd6c..74407d288 100644 --- a/linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c +++ b/linux/drivers/media/video/pvrusb2/pvrusb2-hdw.c @@ -378,6 +378,28 @@ static int ctrl_hres_min_get(struct pvr2_ctrl *cptr,int *vp) return 0; } +static int ctrl_vres_max_get(struct pvr2_ctrl *cptr,int *vp) +{ + /* Actual maximum depends on the video standard in effect. */ + if (cptr->hdw->std_mask_cur & V4L2_STD_525_60) { + *vp = 480; + } else { + *vp = 576; + } + return 0; +} + +static int ctrl_vres_min_get(struct pvr2_ctrl *cptr,int *vp) +{ + /* Actual minimum depends on device type. */ + if (cptr->hdw->hdw_type == PVR2_HDW_TYPE_24XXX) { + *vp = 75; + } else { + *vp = 17; + } + return 0; +} + static int ctrl_cx2341x_is_dirty(struct pvr2_ctrl *cptr) { return cptr->hdw->enc_stale != 0; @@ -735,7 +757,7 @@ static const struct pvr2_ctl_info control_defs[] = { .internal_id = PVR2_CID_HRES, .default_value = 720, DEFREF(res_hor), - DEFINT(320,720), + DEFINT(19,720), /* Hook in check for clamp on horizontal resolution in order to avoid unsolved problem involving cx25840. */ .get_max_value = ctrl_hres_max_get, @@ -746,7 +768,11 @@ static const struct pvr2_ctl_info control_defs[] = { .internal_id = PVR2_CID_VRES, .default_value = 480, DEFREF(res_ver), - DEFINT(200,625), + DEFINT(17,576), + /* Hook in check for video standard and adjust maximum + depending on the standard. */ + .get_max_value = ctrl_vres_max_get, + .get_min_value = ctrl_vres_min_get, },{ .v4l_id = V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ, .default_value = V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000, |