]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
V4L/DVB (13432): cx18: Adjust encoder VBI MDL size to be exactly frame's worth of...
authorAndy Walls <awalls@radix.net>
Wed, 11 Nov 2009 03:22:57 +0000 (00:22 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 5 Dec 2009 20:41:53 +0000 (18:41 -0200)
Signed-off-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx18/cx18-driver.c
drivers/media/video/cx18/cx18-driver.h
drivers/media/video/cx18/cx18-streams.c

index 87a735f1ee9e6f49b6d5ca0285443d2a5b4e8ec8..1a67ad5daad33d67579312d89e77bd8e766ff8e2 100644 (file)
@@ -87,7 +87,6 @@ static int enc_ts_bufsize = CX18_DEFAULT_ENC_TS_BUFSIZE;
 static int enc_mpg_bufsize = CX18_DEFAULT_ENC_MPG_BUFSIZE;
 static int enc_idx_bufsize = CX18_DEFAULT_ENC_IDX_BUFSIZE;
 static int enc_yuv_bufsize = CX18_DEFAULT_ENC_YUV_BUFSIZE;
-/* VBI bufsize based on standards supported by card tuner for now */
 static int enc_pcm_bufsize = CX18_DEFAULT_ENC_PCM_BUFSIZE;
 
 static int enc_ts_bufs = -1;
@@ -128,7 +127,6 @@ module_param(enc_ts_bufsize, int, 0644);
 module_param(enc_mpg_bufsize, int, 0644);
 module_param(enc_idx_bufsize, int, 0644);
 module_param(enc_yuv_bufsize, int, 0644);
-/* VBI bufsize based on standards supported by card tuner for now */
 module_param(enc_pcm_bufsize, int, 0644);
 
 module_param(enc_ts_bufs, int, 0644);
@@ -222,7 +220,7 @@ MODULE_PARM_DESC(enc_vbi_buffers,
                 "\t\t\tDefault: " __stringify(CX18_DEFAULT_ENC_VBI_BUFFERS));
 MODULE_PARM_DESC(enc_vbi_bufs,
                 "Number of encoder VBI buffers\n"
-                "\t\t\tDefault is computed from enc_vbi_buffers & tuner std");
+                "\t\t\tDefault is computed from enc_vbi_buffers");
 MODULE_PARM_DESC(enc_pcm_buffers,
                 "Encoder PCM buffer memory (MB). (enc_pcm_bufs can override)\n"
                 "\t\t\tDefault: " __stringify(CX18_DEFAULT_ENC_PCM_BUFFERS));
index 5c78b014dbc0c032d38b2eaf4a1684177b01a115..fe767b82c9a82855d02c385c14d423b76050e023 100644 (file)
 #define CX18_DEFAULT_ENC_MPG_BUFSIZE  32
 #define CX18_DEFAULT_ENC_IDX_BUFSIZE  32
 #define CX18_DEFAULT_ENC_YUV_BUFSIZE  (CX18_UNIT_ENC_YUV_BUFSIZE * 3 / 1024 + 1)
-/* Default VBI bufsize based on standards supported by card tuner for now */
 #define CX18_DEFAULT_ENC_PCM_BUFSIZE   4
 
 /* i2c stuff */
index 7755937fc5218877d2fafa127d715f2262d3b456..c398651dd74c861a9254bf9d6a60f4c4f4f680ec 100644 (file)
@@ -515,6 +515,22 @@ static void cx18_stream_configure_mdls(struct cx18_stream *s)
                if (s->mdl_size % s->buf_size)
                        s->bufs_per_mdl++;
                break;
+       case CX18_ENC_STREAM_TYPE_VBI:
+               s->bufs_per_mdl = 1;
+               if  (cx18_raw_vbi(s->cx)) {
+                       s->mdl_size = (s->cx->is_60hz ? 12 : 18)
+                                                      * 2 * vbi_active_samples;
+               } else {
+                       /*
+                        * See comment in cx18_vbi_setup() below about the
+                        * extra lines we capture in sliced VBI mode due to
+                        * the lines on which EAV RP codes toggle.
+                       */
+                       s->mdl_size = s->cx->is_60hz
+                                  ? (21 - 4 + 1) * 2 * vbi_hblank_samples_60Hz
+                                  : (23 - 2 + 1) * 2 * vbi_hblank_samples_50Hz;
+               }
+               break;
        default:
                s->bufs_per_mdl = 1;
                s->mdl_size = s->buf_size * s->bufs_per_mdl;