V4L/DVB: ivtv: Avoid accidental video standard change

For yuv video output, pass fake values to avoid firmware trying to change
video standard.

Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk>
Signed-off-by: Andy Walls <awalls@md.metrocast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Ian Armstrong 2010-05-23 22:19:11 -03:00 committed by Mauro Carvalho Chehab
parent 5f39b9f660
commit bd62307b20

View File

@ -618,12 +618,17 @@ static int ivtv_setup_v4l2_decode_stream(struct ivtv_stream *s)
struct ivtv *itv = s->itv; struct ivtv *itv = s->itv;
struct cx2341x_mpeg_params *p = &itv->params; struct cx2341x_mpeg_params *p = &itv->params;
int datatype; int datatype;
u16 width;
u16 height;
if (s->vdev == NULL) if (s->vdev == NULL)
return -EINVAL; return -EINVAL;
IVTV_DEBUG_INFO("Setting some initial decoder settings\n"); IVTV_DEBUG_INFO("Setting some initial decoder settings\n");
width = p->width;
height = p->height;
/* set audio mode to left/stereo for dual/stereo mode. */ /* set audio mode to left/stereo for dual/stereo mode. */
ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode); ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode);
@ -646,7 +651,14 @@ static int ivtv_setup_v4l2_decode_stream(struct ivtv_stream *s)
2 = yuv_from_host */ 2 = yuv_from_host */
switch (s->type) { switch (s->type) {
case IVTV_DEC_STREAM_TYPE_YUV: case IVTV_DEC_STREAM_TYPE_YUV:
datatype = itv->output_mode == OUT_PASSTHROUGH ? 1 : 2; if (itv->output_mode == OUT_PASSTHROUGH) {
datatype = 1;
} else {
/* Fake size to avoid switching video standard */
datatype = 2;
width = 720;
height = itv->is_out_50hz ? 576 : 480;
}
IVTV_DEBUG_INFO("Setup DEC YUV Stream data[0] = %d\n", datatype); IVTV_DEBUG_INFO("Setup DEC YUV Stream data[0] = %d\n", datatype);
break; break;
case IVTV_DEC_STREAM_TYPE_MPG: case IVTV_DEC_STREAM_TYPE_MPG:
@ -655,7 +667,7 @@ static int ivtv_setup_v4l2_decode_stream(struct ivtv_stream *s)
break; break;
} }
if (ivtv_vapi(itv, CX2341X_DEC_SET_DECODER_SOURCE, 4, datatype, if (ivtv_vapi(itv, CX2341X_DEC_SET_DECODER_SOURCE, 4, datatype,
p->width, p->height, p->audio_properties)) { width, height, p->audio_properties)) {
IVTV_DEBUG_WARN("Couldn't initialize decoder source\n"); IVTV_DEBUG_WARN("Couldn't initialize decoder source\n");
} }
return 0; return 0;