diff options
author | Steven Toth <stoth@kernellabs.com> | 2010-07-31 13:51:30 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-10-21 05:54:43 -0400 |
commit | 2600d71cc535907e5d95cd31751c587afc370065 (patch) | |
tree | 9c87d5125c15355f3c4b39c4b059cf58ce33d2da /drivers/media/video/saa7164/saa7164-encoder.c | |
parent | 076031310b182ce89cea861982ff49ed6799767a (diff) |
[media] saa7164: add support for encoder CBR and VBR optionally
Signed-off-by: Steven Toth <stoth@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/saa7164/saa7164-encoder.c')
-rw-r--r-- | drivers/media/video/saa7164/saa7164-encoder.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/media/video/saa7164/saa7164-encoder.c b/drivers/media/video/saa7164/saa7164-encoder.c index 74aec26dbb25..d7d2fe009ff9 100644 --- a/drivers/media/video/saa7164/saa7164-encoder.c +++ b/drivers/media/video/saa7164/saa7164-encoder.c | |||
@@ -45,6 +45,7 @@ static const u32 saa7164_v4l2_ctrls[] = { | |||
45 | V4L2_CID_MPEG_VIDEO_ASPECT, | 45 | V4L2_CID_MPEG_VIDEO_ASPECT, |
46 | V4L2_CID_MPEG_STREAM_TYPE, | 46 | V4L2_CID_MPEG_STREAM_TYPE, |
47 | V4L2_CID_MPEG_AUDIO_MUTE, | 47 | V4L2_CID_MPEG_AUDIO_MUTE, |
48 | V4L2_CID_MPEG_VIDEO_BITRATE_MODE, | ||
48 | V4L2_CID_MPEG_VIDEO_BITRATE, | 49 | V4L2_CID_MPEG_VIDEO_BITRATE, |
49 | 0 | 50 | 0 |
50 | }; | 51 | }; |
@@ -379,6 +380,9 @@ static int saa7164_get_ctrl(struct saa7164_port *port, | |||
379 | case V4L2_CID_MPEG_VIDEO_ASPECT: | 380 | case V4L2_CID_MPEG_VIDEO_ASPECT: |
380 | ctrl->value = params->ctl_aspect; | 381 | ctrl->value = params->ctl_aspect; |
381 | break; | 382 | break; |
383 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: | ||
384 | ctrl->value = params->bitrate_mode; | ||
385 | break; | ||
382 | default: | 386 | default: |
383 | return -EINVAL; | 387 | return -EINVAL; |
384 | } | 388 | } |
@@ -438,6 +442,11 @@ static int saa7164_try_ctrl(struct v4l2_ext_control *ctrl, int ac3) | |||
438 | (ctrl->value <= 255)) | 442 | (ctrl->value <= 255)) |
439 | ret = 0; | 443 | ret = 0; |
440 | break; | 444 | break; |
445 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: | ||
446 | if ((ctrl->value == V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) || | ||
447 | (ctrl->value == V4L2_MPEG_VIDEO_BITRATE_MODE_CBR)) | ||
448 | ret = 0; | ||
449 | break; | ||
441 | default: | 450 | default: |
442 | ret = -EINVAL; | 451 | ret = -EINVAL; |
443 | } | 452 | } |
@@ -497,6 +506,9 @@ static int saa7164_set_ctrl(struct saa7164_port *port, | |||
497 | ret = -EIO; | 506 | ret = -EIO; |
498 | } | 507 | } |
499 | break; | 508 | break; |
509 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: | ||
510 | params->bitrate_mode = ctrl->value; | ||
511 | break; | ||
500 | default: | 512 | default: |
501 | return -EINVAL; | 513 | return -EINVAL; |
502 | } | 514 | } |
@@ -667,6 +679,10 @@ static int fill_queryctrl(struct saa7164_encoder_params *params, | |||
667 | 1, V4L2_MPEG_VIDEO_ASPECT_4x3); | 679 | 1, V4L2_MPEG_VIDEO_ASPECT_4x3); |
668 | case V4L2_CID_MPEG_VIDEO_GOP_SIZE: | 680 | case V4L2_CID_MPEG_VIDEO_GOP_SIZE: |
669 | return v4l2_ctrl_query_fill(c, 1, 255, 1, 15); | 681 | return v4l2_ctrl_query_fill(c, 1, 255, 1, 15); |
682 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: | ||
683 | return v4l2_ctrl_query_fill(c, | ||
684 | V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, | ||
685 | 1, V4L2_MPEG_VIDEO_BITRATE_MODE_VBR); | ||
670 | default: | 686 | default: |
671 | return -EINVAL; | 687 | return -EINVAL; |
672 | } | 688 | } |
@@ -1287,6 +1303,7 @@ int saa7164_encoder_register(struct saa7164_port *port) | |||
1287 | port->ctl_saturation = 62; | 1303 | port->ctl_saturation = 62; |
1288 | port->ctl_sharpness = 8; | 1304 | port->ctl_sharpness = 8; |
1289 | port->encoder_params.bitrate = ENCODER_DEF_BITRATE; | 1305 | port->encoder_params.bitrate = ENCODER_DEF_BITRATE; |
1306 | port->encoder_params.bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR; | ||
1290 | port->encoder_params.stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_PS; | 1307 | port->encoder_params.stream_type = V4L2_MPEG_STREAM_TYPE_MPEG2_PS; |
1291 | port->encoder_params.ctl_mute = 0; | 1308 | port->encoder_params.ctl_mute = 0; |
1292 | port->encoder_params.ctl_aspect = V4L2_MPEG_VIDEO_ASPECT_4x3; | 1309 | port->encoder_params.ctl_aspect = V4L2_MPEG_VIDEO_ASPECT_4x3; |