aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7164/saa7164-encoder.c
diff options
context:
space:
mode:
authorSteven Toth <stoth@kernellabs.com>2010-07-31 13:51:30 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-21 05:54:43 -0400
commit2600d71cc535907e5d95cd31751c587afc370065 (patch)
tree9c87d5125c15355f3c4b39c4b059cf58ce33d2da /drivers/media/video/saa7164/saa7164-encoder.c
parent076031310b182ce89cea861982ff49ed6799767a (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.c17
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;