aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/ivtv/ivtv-driver.h
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2007-08-25 13:11:23 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-10-09 21:07:14 -0400
commit2f3a98931f51be6093df7c6cc2633bf238778b7d (patch)
treef25f00c9f0a46c9c4885a24445dc795a2151fc97 /drivers/media/video/ivtv/ivtv-driver.h
parent26e9d599561e9a964bd4d7c2be0029db8aaff852 (diff)
V4L/DVB (6116): ivtv: VBI cleanups and fixes
Besides some VBI cleanups this patch also fixes a subtle problem with the VBI re-insertion stream where the PIO work handler wasn't called quickly enough, resulting in occasional corrupt data. Furthermore the CC output didn't disable CC correctly and at the right time, causing duplicates to be sent. An saa7127 fix for VPS output was also added: the wrong data was sent. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/ivtv/ivtv-driver.h')
-rw-r--r--drivers/media/video/ivtv/ivtv-driver.h26
1 files changed, 17 insertions, 9 deletions
diff --git a/drivers/media/video/ivtv/ivtv-driver.h b/drivers/media/video/ivtv/ivtv-driver.h
index 41f753c125da..748ef66bd945 100644
--- a/drivers/media/video/ivtv/ivtv-driver.h
+++ b/drivers/media/video/ivtv/ivtv-driver.h
@@ -489,6 +489,15 @@ struct yuv_playback_info
489#define IVTV_VBI_FRAMES 32 489#define IVTV_VBI_FRAMES 32
490 490
491/* VBI data */ 491/* VBI data */
492struct vbi_cc {
493 u8 odd[2]; /* two-byte payload of odd field */
494 u8 even[2]; /* two-byte payload of even field */;
495};
496
497struct vbi_vps {
498 u8 data[5]; /* five-byte VPS payload */
499};
500
492struct vbi_info { 501struct vbi_info {
493 /* VBI general fixed card data */ 502 /* VBI general fixed card data */
494 u32 raw_decoder_line_size; /* raw VBI line size from digitizer */ 503 u32 raw_decoder_line_size; /* raw VBI line size from digitizer */
@@ -502,15 +511,14 @@ struct vbi_info {
502 u32 enc_start, enc_size; 511 u32 enc_start, enc_size;
503 int fpi; 512 int fpi;
504 u32 frame; 513 u32 frame;
505 u8 cc_data_odd[256]; 514 struct vbi_cc cc_payload[256]; /* Sliced VBI CC payload array. It is an array to
506 u8 cc_data_even[256]; 515 prevent dropping CC data if they couldn't be
507 int cc_pos; 516 processed fast enough. */
508 u8 cc_no_update; 517 int cc_payload_idx; /* Index in cc_payload */
509 u8 vps[5]; 518 u8 cc_missing_cnt; /* Counts number of frames without CC for passthrough mode */
510 u8 vps_found; 519 int wss_payload; /* Sliced VBI WSS payload */
511 int wss; 520 u8 wss_missing_cnt; /* Counts number of frames without WSS for passthrough mode */
512 u8 wss_found; 521 struct vbi_vps vps_payload; /* Sliced VBI VPS payload */
513 u8 wss_no_update;
514 struct v4l2_format in; 522 struct v4l2_format in;
515 /* convenience pointer to sliced struct in vbi_in union */ 523 /* convenience pointer to sliced struct in vbi_in union */
516 struct v4l2_sliced_vbi_format *sliced_in; 524 struct v4l2_sliced_vbi_format *sliced_in;