summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Toth <stoth@kernellabs.com>2010-07-31 15:03:31 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-10-21 07:54:48 -0200
commitf91d095c92e8fdcb6bd8cb35e8fa9c87d9c10768 (patch)
treed3dbe13ed4e35ca4bb905a70c87e7a7bf62b932e
parent968b11b20143036098a7013817a15615a54383d3 (diff)
[media] saa7164: allow encoder output format to be user configurable
Allow PS and TS. Signed-off-by: Steven Toth <stoth@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/saa7164/saa7164-api.c5
-rw-r--r--drivers/media/video/saa7164/saa7164-encoder.c9
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/media/video/saa7164/saa7164-api.c b/drivers/media/video/saa7164/saa7164-api.c
index 54568cfe933d..5f72bb854e60 100644
--- a/drivers/media/video/saa7164/saa7164-api.c
+++ b/drivers/media/video/saa7164/saa7164-api.c
@@ -53,6 +53,11 @@ int saa7164_api_set_encoder(struct saa7164_port *port)
dprintk(DBGLVL_ENC, "%s() unitid=0x%x\n", __func__,
port->hwcfg.sourceid);
+ if (port->encoder_params.stream_type == V4L2_MPEG_STREAM_TYPE_MPEG2_PS)
+ port->encoder_profile = EU_PROFILE_PS_DVD;
+ else
+ port->encoder_profile = EU_PROFILE_TS_HQ;
+
ret = saa7164_cmd_send(port->dev, port->hwcfg.sourceid, SET_CUR,
EU_PROFILE_CONTROL, sizeof(u8), &port->encoder_profile);
if (ret != SAA_OK)
diff --git a/drivers/media/video/saa7164/saa7164-encoder.c b/drivers/media/video/saa7164/saa7164-encoder.c
index c1265b821b2b..c357e2db1ac3 100644
--- a/drivers/media/video/saa7164/saa7164-encoder.c
+++ b/drivers/media/video/saa7164/saa7164-encoder.c
@@ -43,6 +43,7 @@ static const u32 saa7164_v4l2_ctrls[] = {
V4L2_CID_AUDIO_VOLUME,
V4L2_CID_SHARPNESS,
V4L2_CID_MPEG_VIDEO_ASPECT,
+ V4L2_CID_MPEG_VIDEO_GOP_SIZE,
V4L2_CID_MPEG_STREAM_TYPE,
V4L2_CID_MPEG_AUDIO_MUTE,
V4L2_CID_MPEG_VIDEO_BITRATE_MODE,
@@ -432,7 +433,8 @@ static int saa7164_try_ctrl(struct v4l2_ext_control *ctrl, int ac3)
ret = 0;
break;
case V4L2_CID_MPEG_STREAM_TYPE:
- if (ctrl->value == V4L2_MPEG_STREAM_TYPE_MPEG2_PS)
+ if ((ctrl->value == V4L2_MPEG_STREAM_TYPE_MPEG2_PS) ||
+ (ctrl->value == V4L2_MPEG_STREAM_TYPE_MPEG2_TS))
ret = 0;
break;
case V4L2_CID_MPEG_AUDIO_MUTE:
@@ -694,8 +696,8 @@ static int fill_queryctrl(struct saa7164_encoder_params *params,
case V4L2_CID_MPEG_STREAM_TYPE:
return v4l2_ctrl_query_fill(c,
V4L2_MPEG_STREAM_TYPE_MPEG2_PS,
- V4L2_MPEG_STREAM_TYPE_MPEG2_PS,
- 0, V4L2_MPEG_STREAM_TYPE_MPEG2_PS);
+ V4L2_MPEG_STREAM_TYPE_MPEG2_TS,
+ 1, V4L2_MPEG_STREAM_TYPE_MPEG2_PS);
case V4L2_CID_MPEG_VIDEO_ASPECT:
return v4l2_ctrl_query_fill(c,
V4L2_MPEG_VIDEO_ASPECT_1x1,
@@ -1324,7 +1326,6 @@ int saa7164_encoder_register(struct saa7164_port *port)
port->encodernorm = saa7164_tvnorms[0];
port->width = 720;
port->mux_input = 1; /* Composite */
- port->encoder_profile = EU_PROFILE_PS_DVD;
port->video_format = EU_VIDEO_FORMAT_MPEG_2;
port->audio_format = 0;
port->video_resolution = 0;