diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2007-08-25 13:11:23 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-10-09 21:07:14 -0400 |
commit | 2f3a98931f51be6093df7c6cc2633bf238778b7d (patch) | |
tree | f25f00c9f0a46c9c4885a24445dc795a2151fc97 /drivers/media/video/ivtv/ivtv-driver.h | |
parent | 26e9d599561e9a964bd4d7c2be0029db8aaff852 (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.h | 26 |
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 */ |
492 | struct vbi_cc { | ||
493 | u8 odd[2]; /* two-byte payload of odd field */ | ||
494 | u8 even[2]; /* two-byte payload of even field */; | ||
495 | }; | ||
496 | |||
497 | struct vbi_vps { | ||
498 | u8 data[5]; /* five-byte VPS payload */ | ||
499 | }; | ||
500 | |||
492 | struct vbi_info { | 501 | struct 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; |