aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/ivtv/ivtv-driver.h67
-rw-r--r--drivers/media/video/ivtv/ivtv-streams.c10
2 files changed, 40 insertions, 37 deletions
diff --git a/drivers/media/video/ivtv/ivtv-driver.h b/drivers/media/video/ivtv/ivtv-driver.h
index 748ef66bd945..5400ccef4dfb 100644
--- a/drivers/media/video/ivtv/ivtv-driver.h
+++ b/drivers/media/video/ivtv/ivtv-driver.h
@@ -499,7 +499,8 @@ struct vbi_vps {
499}; 499};
500 500
501struct vbi_info { 501struct vbi_info {
502 /* VBI general fixed card data */ 502 /* VBI general data, does not change during streaming */
503
503 u32 raw_decoder_line_size; /* raw VBI line size from digitizer */ 504 u32 raw_decoder_line_size; /* raw VBI line size from digitizer */
504 u8 raw_decoder_sav_odd_field; /* raw VBI Start Active Video digitizer code of odd field */ 505 u8 raw_decoder_sav_odd_field; /* raw VBI Start Active Video digitizer code of odd field */
505 u8 raw_decoder_sav_even_field; /* raw VBI Start Active Video digitizer code of even field */ 506 u8 raw_decoder_sav_even_field; /* raw VBI Start Active Video digitizer code of even field */
@@ -507,27 +508,42 @@ struct vbi_info {
507 u8 sliced_decoder_sav_odd_field; /* sliced VBI Start Active Video digitizer code of odd field */ 508 u8 sliced_decoder_sav_odd_field; /* sliced VBI Start Active Video digitizer code of odd field */
508 u8 sliced_decoder_sav_even_field; /* sliced VBI Start Active Video digitizer code of even field */ 509 u8 sliced_decoder_sav_even_field; /* sliced VBI Start Active Video digitizer code of even field */
509 510
510 u32 dec_start; 511 u32 start[2]; /* start of first VBI line in the odd/even fields */
511 u32 enc_start, enc_size; 512 u32 count; /* number of VBI lines per field */
512 int fpi; 513 u32 raw_size; /* size of raw VBI line from the digitizer */
513 u32 frame; 514 u32 sliced_size; /* size of sliced VBI line from the digitizer */
514 struct vbi_cc cc_payload[256]; /* Sliced VBI CC payload array. It is an array to 515
516 u32 dec_start; /* start in decoder memory of VBI re-insertion buffers */
517 u32 enc_start; /* start in encoder memory of VBI capture buffers */
518 u32 enc_size; /* size of VBI capture area */
519 int fpi; /* number of VBI frames per interrupt */
520
521 struct v4l2_format in; /* current VBI capture format */
522 struct v4l2_sliced_vbi_format *sliced_in; /* convenience pointer to sliced struct in vbi.in union */
523 int insert_mpeg; /* if non-zero, then embed VBI data in MPEG stream */
524
525 /* Raw VBI compatibility hack */
526
527 u32 frame; /* frame counter hack needed for backwards compatibility
528 of old VBI software */
529
530 /* Sliced VBI output data */
531
532 struct vbi_cc cc_payload[256]; /* sliced VBI CC payload array: it is an array to
515 prevent dropping CC data if they couldn't be 533 prevent dropping CC data if they couldn't be
516 processed fast enough. */ 534 processed fast enough */
517 int cc_payload_idx; /* Index in cc_payload */ 535 int cc_payload_idx; /* index in cc_payload */
518 u8 cc_missing_cnt; /* Counts number of frames without CC for passthrough mode */ 536 u8 cc_missing_cnt; /* counts number of frames without CC for passthrough mode */
519 int wss_payload; /* Sliced VBI WSS payload */ 537 int wss_payload; /* sliced VBI WSS payload */
520 u8 wss_missing_cnt; /* Counts number of frames without WSS for passthrough mode */ 538 u8 wss_missing_cnt; /* counts number of frames without WSS for passthrough mode */
521 struct vbi_vps vps_payload; /* Sliced VBI VPS payload */ 539 struct vbi_vps vps_payload; /* sliced VBI VPS payload */
522 struct v4l2_format in; 540
523 /* convenience pointer to sliced struct in vbi_in union */ 541 /* Sliced VBI capture data */
524 struct v4l2_sliced_vbi_format *sliced_in; 542
525 int insert_mpeg; 543 struct v4l2_sliced_vbi_data sliced_data[36]; /* sliced VBI storage for VBI encoder stream */
526 544 struct v4l2_sliced_vbi_data sliced_dec_data[36];/* sliced VBI storage for VBI decoder stream */
527 /* Buffer for the maximum of 2 * 18 * packet_size sliced VBI lines. 545
528 One for /dev/vbi0 and one for /dev/vbi8 */ 546 /* VBI Embedding data */
529 struct v4l2_sliced_vbi_data sliced_data[36];
530 struct v4l2_sliced_vbi_data sliced_dec_data[36];
531 547
532 /* Buffer for VBI data inserted into MPEG stream. 548 /* Buffer for VBI data inserted into MPEG stream.
533 The first byte is a dummy byte that's never used. 549 The first byte is a dummy byte that's never used.
@@ -544,12 +560,9 @@ struct vbi_info {
544 This pointer array will allocate 2049 bytes to store each VBI frame. */ 560 This pointer array will allocate 2049 bytes to store each VBI frame. */
545 u8 *sliced_mpeg_data[IVTV_VBI_FRAMES]; 561 u8 *sliced_mpeg_data[IVTV_VBI_FRAMES];
546 u32 sliced_mpeg_size[IVTV_VBI_FRAMES]; 562 u32 sliced_mpeg_size[IVTV_VBI_FRAMES];
547 struct ivtv_buffer sliced_mpeg_buf; 563 struct ivtv_buffer sliced_mpeg_buf; /* temporary buffer holding data from sliced_mpeg_data */
548 u32 inserted_frame; 564 u32 inserted_frame; /* index in sliced_mpeg_size of next sliced data
549 565 to be inserted in the MPEG stream */
550 u32 start[2], count;
551 u32 raw_size;
552 u32 sliced_size;
553}; 566};
554 567
555/* forward declaration of struct defined in ivtv-cards.h */ 568/* forward declaration of struct defined in ivtv-cards.h */
diff --git a/drivers/media/video/ivtv/ivtv-streams.c b/drivers/media/video/ivtv/ivtv-streams.c
index a3296224f821..fd135985e70f 100644
--- a/drivers/media/video/ivtv/ivtv-streams.c
+++ b/drivers/media/video/ivtv/ivtv-streams.c
@@ -321,16 +321,6 @@ static void ivtv_vbi_setup(struct ivtv *itv)
321 /* Reset VBI */ 321 /* Reset VBI */
322 ivtv_vapi(itv, CX2341X_ENC_SET_VBI_LINE, 5, 0xffff , 0, 0, 0, 0); 322 ivtv_vapi(itv, CX2341X_ENC_SET_VBI_LINE, 5, 0xffff , 0, 0, 0, 0);
323 323
324 if (itv->is_60hz) {
325 itv->vbi.count = 12;
326 itv->vbi.start[0] = 10;
327 itv->vbi.start[1] = 273;
328 } else { /* PAL/SECAM */
329 itv->vbi.count = 18;
330 itv->vbi.start[0] = 6;
331 itv->vbi.start[1] = 318;
332 }
333
334 /* setup VBI registers */ 324 /* setup VBI registers */
335 itv->video_dec_func(itv, VIDIOC_S_FMT, &itv->vbi.in); 325 itv->video_dec_func(itv, VIDIOC_S_FMT, &itv->vbi.in);
336 326