2005-05-03 12:48:40

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: [2.6 patch] PAL-M support fix for CX88 chipsets

This patch fixes PAL-M chroma subcarrier frequency (FSC) to its
correct value of 3.5756115 MHz and adjusts horizontal total samples for
PAL-M, according with formula Line Draw Time / (4*FSC), where Line Draw
Time is 63.555 us.
Without this patch, the Notch subcarrier filter was trying to
capture using NTSC-M frequency, which is very close, but not equal. This
could result in Black and White or miscolored frames.

-----

diff -puNr linux-2.6.12-rc3.org/drivers/media/video/cx88/cx88-core.c
linux-2.6.12-rc3/drivers/media/video/cx88/cx88-core.c
--- linux-2.6.12-rc3.org/drivers/media/video/cx88/cx88-core.c
2005-04-20 21:03:14.000000000 -0300
+++ linux-2.6.12-rc3/drivers/media/video/cx88/cx88-core.c
2005-05-03 09:23:21.000000000 -0300
@@ -736,6 +736,9 @@ static unsigned int inline norm_fsc8(str
{
static const unsigned int ntsc = 28636360;
static const unsigned int pal = 35468950;
+ static const unsigned int palm = 28604892;
+
+ if (V4L2_STD_PAL_M & norm->id) return palm;

return (norm->id & V4L2_STD_625_50) ? pal : ntsc;
}
@@ -749,6 +752,8 @@ static unsigned int inline norm_notchfil

static unsigned int inline norm_htotal(struct cx88_tvnorm *norm)
{
+ // Should allways be Line Draw Time / 4FSC
+ if (V4L2_STD_PAL_M & norm->id) return 909;
return (norm->id & V4L2_STD_625_50) ? 1135 : 910;
}


2005-05-03 15:39:26

by Randy.Dunlap

[permalink] [raw]
Subject: Re: [2.6 patch] PAL-M support fix for CX88 chipsets

On Tue, 03 May 2005 09:48:24 -0300 Mauro Carvalho Chehab wrote:

| This patch fixes PAL-M chroma subcarrier frequency (FSC) to its
| correct value of 3.5756115 MHz and adjusts horizontal total samples for
| PAL-M, according with formula Line Draw Time / (4*FSC), where Line Draw
| Time is 63.555 us.
| Without this patch, the Notch subcarrier filter was trying to
| capture using NTSC-M frequency, which is very close, but not equal. This
| could result in Black and White or miscolored frames.

This patch does not apply cleanly:
patching file cx88-core.c
Hunk #1 FAILED at 736.
Hunk #2 FAILED at 752.
2 out of 2 hunks FAILED -- saving rejects to file cx88-core.c.rej

due to tabs being converted to spaces.
Please mail it to yourself and then try to apply the patch
to see if that works. You may have to use a different
mail client/app. Hm, thunderbird. Did you copy/paste the
patch? That usually doesn't work.

Oh, and kernel comment style is /* ... */, not //.

| -----
|
| diff -puNr linux-2.6.12-rc3.org/drivers/media/video/cx88/cx88-core.c
| linux-2.6.12-rc3/drivers/media/video/cx88/cx88-core.c
| --- linux-2.6.12-rc3.org/drivers/media/video/cx88/cx88-core.c
| 2005-04-20 21:03:14.000000000 -0300
| +++ linux-2.6.12-rc3/drivers/media/video/cx88/cx88-core.c
| 2005-05-03 09:23:21.000000000 -0300
| @@ -736,6 +736,9 @@ static unsigned int inline norm_fsc8(str
| {
| static const unsigned int ntsc = 28636360;
| static const unsigned int pal = 35468950;
| + static const unsigned int palm = 28604892;
| +
| + if (V4L2_STD_PAL_M & norm->id) return palm;
|
| return (norm->id & V4L2_STD_625_50) ? pal : ntsc;
| }
| @@ -749,6 +752,8 @@ static unsigned int inline norm_notchfil
|
| static unsigned int inline norm_htotal(struct cx88_tvnorm *norm)
| {
| + // Should allways be Line Draw Time / 4FSC
| + if (V4L2_STD_PAL_M & norm->id) return 909;
| return (norm->id & V4L2_STD_625_50) ? 1135 : 910;
| }


---
~Randy

2005-05-03 17:43:31

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [2.6 patch] PAL-M support fix for CX88 chipsets

--- linux-2.6.12-rc3.org/drivers/media/video/cx88/cx88-core.c 2005-04-20 21:03:14.000000000 -0300
+++ linux-2.6.12-rc3/drivers/media/video/cx88/cx88-core.c 2005-05-03 14:31:49.000000000 -0300
@@ -736,6 +736,9 @@ static unsigned int inline norm_fsc8(str
{
static const unsigned int ntsc = 28636360;
static const unsigned int pal = 35468950;
+ static const unsigned int palm = 28604892;
+
+ if (V4L2_STD_PAL_M & norm->id) return palm;

return (norm->id & V4L2_STD_625_50) ? pal : ntsc;
}
@@ -749,6 +752,8 @@ static unsigned int inline norm_notchfil

static unsigned int inline norm_htotal(struct cx88_tvnorm *norm)
{
+ /* Should always be Line Draw Time / (4*FSC) */
+ if (V4L2_STD_PAL_M & norm->id) return 909;
return (norm->id & V4L2_STD_625_50) ? 1135 : 910;
}


Attachments:
pal.dif (790.00 B)

2005-05-03 17:52:16

by Randy.Dunlap

[permalink] [raw]
Subject: Re: [2.6 patch] PAL-M support fix for CX88 chipsets

On Tue, 03 May 2005 14:43:15 -0300 Mauro Carvalho Chehab wrote:

| >On Tue, 03 May 2005 09:48:24 -0300 Mauro Carvalho Chehab wrote:
| >
| >| This patch fixes PAL-M chroma subcarrier frequency (FSC) to its
| >| correct value of 3.5756115 MHz and adjusts horizontal total samples for
| >| PAL-M, according with formula Line Draw Time / (4*FSC), where Line Draw
| >| Time is 63.555 us.
| >| Without this patch, the Notch subcarrier filter was trying to
| >| capture using NTSC-M frequency, which is very close, but not equal. This
| >| could result in Black and White or miscolored frames.


This line:
+ static const unsigned int palm = 28604892;
begins with spaces, not a TAB.


+ if (V4L2_STD_PAL_M & norm->id) return palm;
Please only 1 space after the _M, and put the return on a
separate line.

Same comments for the next if/return.

And please clean up the next (final :) version with a
clean description and Signed-off-by: line.

---
~Randy

2005-05-03 18:05:18

by Mauro Carvalho Chehab

[permalink] [raw]
Subject: Re: [2.6 patch] PAL-M support fix for CX88 chipsets - final version :-)

--- linux-2.6.12-rc3.org/drivers/media/video/cx88/cx88-core.c 2005-04-20 21:03:14.000000000 -0300
+++ linux-2.6.12-rc3/drivers/media/video/cx88/cx88-core.c 2005-05-03 14:59:21.000000000 -0300
@@ -736,6 +736,10 @@ static unsigned int inline norm_fsc8(str
{
static const unsigned int ntsc = 28636360;
static const unsigned int pal = 35468950;
+ static const unsigned int palm = 28604892;
+
+ if (V4L2_STD_PAL_M & norm->id)
+ return palm;

return (norm->id & V4L2_STD_625_50) ? pal : ntsc;
}
@@ -749,6 +753,11 @@ static unsigned int inline norm_notchfil

static unsigned int inline norm_htotal(struct cx88_tvnorm *norm)
{
+ /* Should always be Line Draw Time / (4*FSC) */
+
+ if (V4L2_STD_PAL_M & norm->id)
+ return 909;
+
return (norm->id & V4L2_STD_625_50) ? 1135 : 910;
}


Attachments:
pal.dif (794.00 B)

2005-05-03 18:17:40

by Randy.Dunlap

[permalink] [raw]
Subject: Re: [2.6 patch] PAL-M support fix for CX88 chipsets - final version :-)

On Tue, 03 May 2005 15:04:35 -0300 Mauro Carvalho Chehab wrote:

| This patch fixes PAL-M chroma subcarrier frequency (FSC) to its correct
| value of 3.5756115 MHz and adjusts horizontal total samples for PAL-M,
| according with formula Line Draw Time / (4*FSC).
|
| Signed-off-by: Mauro Carvalho Chehab <[email protected]>


+ if (V4L2_STD_PAL_M & norm->id)
still has 2 spaces after _M, but it's not a big deal.

Now who will merge it?


Thanks.
---
~Randy