LINUX.ORG.RU

CentOS 5 + Avermedia AVerTV Studio 307


0

0

наспех сбацанный бэкпорт saa7134 с ядра 2.6.22 на 2.6.18 (котроое в RHEL/CentOS 5):
=== part 1 ====================================================================
diff -ruN linux-2.6.18.orig/drivers/media/video/saa7134/saa7134-tvaudio.c linux-2.6.18/drivers/media/video/saa7134/saa7134-tvaudio.c
--- linux-2.6.18.orig/drivers/media/video/saa7134/saa7134-tvaudio.c	2007-10-09 11:32:51.000000000 +0400
+++ linux-2.6.18/drivers/media/video/saa7134/saa7134-tvaudio.c	2007-10-13 21:56:20.000000000 +0400
@@ -72,12 +72,12 @@
 	int          carr;
 } mainscan[] = {
 	{
-		.name = "M",
-		.std  = V4L2_STD_NTSC | V4L2_STD_PAL_M,
+		.name = "MN",
+		.std  = V4L2_STD_MN,
 		.carr = 4500,
 	},{
-		.name = "BG",
-		.std  = V4L2_STD_PAL_BG,
+		.name = "BGH",
+		.std  = V4L2_STD_B | V4L2_STD_GH,
 		.carr = 5500,
 	},{
 		.name = "I",
@@ -85,7 +85,7 @@
 		.carr = 6000,
 	},{
 		.name = "DKL",
-		.std  = V4L2_STD_PAL_DK | V4L2_STD_SECAM,
+		.std  = V4L2_STD_DK | V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC,
 		.carr = 6500,
 	}
 };
@@ -93,76 +93,70 @@
 static struct saa7134_tvaudio tvaudio[] = {
 	{
 		.name          = "PAL-B/G FM-stereo",
-		.std           = V4L2_STD_PAL,
+		.std           = V4L2_STD_PAL_BG,
 		.mode          = TVAUDIO_FM_BG_STEREO,
 		.carr1         = 5500,
 		.carr2         = 5742,
 	},{
 		.name          = "PAL-D/K1 FM-stereo",
-		.std           = V4L2_STD_PAL,
+		.std           = V4L2_STD_PAL_DK,
 		.carr1         = 6500,
 		.carr2         = 6258,
 		.mode          = TVAUDIO_FM_BG_STEREO,
 	},{
 		.name          = "PAL-D/K2 FM-stereo",
-		.std           = V4L2_STD_PAL,
+		.std           = V4L2_STD_PAL_DK,
 		.carr1         = 6500,
 		.carr2         = 6742,
 		.mode          = TVAUDIO_FM_BG_STEREO,
 	},{
 		.name          = "PAL-D/K3 FM-stereo",
-		.std           = V4L2_STD_PAL,
+		.std           = V4L2_STD_PAL_DK,
 		.carr1         = 6500,
 		.carr2         = 5742,
 		.mode          = TVAUDIO_FM_BG_STEREO,
 	},{
 		.name          = "PAL-B/G NICAM",
-		.std           = V4L2_STD_PAL,
+		.std           = V4L2_STD_PAL_BG,
 		.carr1         = 5500,
 		.carr2         = 5850,
 		.mode          = TVAUDIO_NICAM_FM,
 	},{
 		.name          = "PAL-I NICAM",
-		.std           = V4L2_STD_PAL,
+		.std           = V4L2_STD_PAL_I,
 		.carr1         = 6000,
 		.carr2         = 6552,
 		.mode          = TVAUDIO_NICAM_FM,
 	},{
 		.name          = "PAL-D/K NICAM",
-		.std           = V4L2_STD_PAL,
+		.std           = V4L2_STD_PAL_DK,
 		.carr1         = 6500,
 		.carr2         = 5850,
 		.mode          = TVAUDIO_NICAM_FM,
 	},{
 		.name          = "SECAM-L NICAM",
-		.std           = V4L2_STD_SECAM,
+		.std           = V4L2_STD_SECAM_L,
 		.carr1         = 6500,
 		.carr2         = 5850,
 		.mode          = TVAUDIO_NICAM_AM,
 	},{
-		.name          = "SECAM-L MONO",
-		.std           = V4L2_STD_SECAM,
+		.name          = "SECAM-D/K NICAM",
+		.std           = V4L2_STD_SECAM_DK,
 		.carr1         = 6500,
-		.carr2         = -1,
-		.mode          = TVAUDIO_AM_MONO,
+		.carr2         = 5850,
+		.mode          = TVAUDIO_NICAM_FM,
 	},{
-		.name          = "SECAM-D/K",
-		.std           = V4L2_STD_SECAM,
-		.carr1         = 6500,
-		.carr2         = -1,
-		.mode          = TVAUDIO_FM_MONO,
+		.name          = "NTSC-A2 FM-stereo",
+		.std           = V4L2_STD_NTSC,
+		.carr1         = 4500,
+		.carr2         = 4724,
+		.mode          = TVAUDIO_FM_K_STEREO,
 	},{
 		.name          = "NTSC-M",
 		.std           = V4L2_STD_NTSC,
 		.carr1         = 4500,
 		.carr2         = -1,
 		.mode          = TVAUDIO_FM_MONO,
-	},{
-		.name          = "NTSC-A2 FM-stereo",
-		.std           = V4L2_STD_NTSC,
-		.carr1         = 4500,
-		.carr2         = 4724,
-		.mode          = TVAUDIO_FM_K_STEREO,
 	}
 };
 #define TVAUDIO (sizeof(tvaudio)/sizeof(struct saa7134_tvaudio))
=== part 1 ====================================================================

грузить:
modprobe saa7134 card=45 secam=dk

(продолжение патча следует)

=== part 2 ====================================================================
@@ -834,18 +828,16 @@
 		} else {
 			/* (let chip) scan for sound carrier */
 			norms = 0;
-			if (dev->tvnorm->id & V4L2_STD_PAL) {
-				dprintk("PAL scan\n");
-				norms |= 0x2c; /* B/G + D/K + I */
-			}
-			if (dev->tvnorm->id & V4L2_STD_NTSC) {
-				dprintk("NTSC scan\n");
-				norms |= 0x40; /* M */
-			}
-			if (dev->tvnorm->id & V4L2_STD_SECAM) {
-				dprintk("SECAM scan\n");
-				norms |= 0x18; /* L + D/K */
-			}
+			if (dev->tvnorm->id & (V4L2_STD_B | V4L2_STD_GH))
+				norms |= 0x04;
+			if (dev->tvnorm->id & V4L2_STD_PAL_I)
+				norms |= 0x20;
+			if (dev->tvnorm->id & V4L2_STD_DK)
+				norms |= 0x08;
+			if (dev->tvnorm->id & V4L2_STD_MN)
+				norms |= 0x40;
+			if (dev->tvnorm->id & (V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC))
+				norms |= 0x10;
 			if (0 == norms)
 				norms = 0x7c; /* all */
 			dprintk("scanning:%s%s%s%s%s\n",
diff -ruN linux-2.6.18.orig/drivers/media/video/saa7134/saa7134-video.c linux-2.6.18/drivers/media/video/saa7134/saa7134-video.c
--- linux-2.6.18.orig/drivers/media/video/saa7134/saa7134-video.c	2007-10-09 11:41:12.000000000 +0400
+++ linux-2.6.18/drivers/media/video/saa7134/saa7134-video.c	2007-10-13 21:48:43.000000000 +0400
@@ -43,12 +43,15 @@
 static unsigned int noninterlaced = 1;
 static unsigned int gbufsize      = 720*576*4;
 static unsigned int gbufsize_max  = 720*576*4;
+static char secam[] = "--";
 module_param(video_debug, int, 0644);
 MODULE_PARM_DESC(video_debug,"enable debug messages [video]");
 module_param(gbuffers, int, 0444);
 MODULE_PARM_DESC(gbuffers,"number of capture buffers, range 2-32");
 module_param(noninterlaced, int, 0644);
 MODULE_PARM_DESC(noninterlaced,"capture non interlaced video");
+module_param_string(secam, secam, sizeof(secam), 0644);
+MODULE_PARM_DESC(secam, "force SECAM variant, either DK,L or Lc");
 
 #define dprintk(fmt, arg...)	if (video_debug) \
 	printk(KERN_DEBUG "%s/video: " fmt, dev->name , ## arg)
@@ -287,6 +290,42 @@
 		.vgate_misc    = 0x1c,
 
 	},{
+		.name          = "SECAM-DK",
+		.id            = V4L2_STD_SECAM_DK,
+		NORM_625_50,
+
+		.sync_control  = 0x18,
+		.luma_control  = 0x1b,
+		.chroma_ctrl1  = 0xd1,
+		.chroma_gain   = 0x80,
+		.chroma_ctrl2  = 0x00,
+		.vgate_misc    = 0x1c,
+
+	},{
+		.name          = "SECAM-L",
+		.id            = V4L2_STD_SECAM_L,
+		NORM_625_50,
+
+		.sync_control  = 0x18,
+		.luma_control  = 0x1b,
+		.chroma_ctrl1  = 0xd1,
+		.chroma_gain   = 0x80,
+		.chroma_ctrl2  = 0x00,
+		.vgate_misc    = 0x1c,
+
+	},{
+		.name          = "SECAM-Lc",
+		.id            = V4L2_STD_SECAM_LC,
+		NORM_625_50,
+
+		.sync_control  = 0x18,
+		.luma_control  = 0x1b,
+		.chroma_ctrl1  = 0xd1,
+		.chroma_gain   = 0x80,
+		.chroma_ctrl2  = 0x00,
+		.vgate_misc    = 0x1c,
+
+	},{
 		.name          = "PAL-M",
 		.id            = V4L2_STD_PAL_M,
 		NORM_525_60,
@@ -1769,6 +1808,7 @@
 	{
 		v4l2_std_id *id = arg;
 		unsigned int i;
+		v4l2_std_id fixup;
 
 		for (i = 0; i < TVNORMS; i++)
 			if (*id == tvnorms[i].id)
@@ -1779,7 +1819,22 @@
 					break;
 		if (i == TVNORMS)
 			return -EINVAL;
-
+		if ((*id & V4L2_STD_SECAM) && (secam[0] != '-')) {
+			if (secam[0] == 'L' || secam[0] == 'l') {
+				if (secam[1] == 'C' || secam[1] == 'c')
+					fixup = V4L2_STD_SECAM_LC;
+				else
+					fixup = V4L2_STD_SECAM_L;
+			} else {
+				if (secam[0] == 'D' || secam[0] == 'd')
+					fixup = V4L2_STD_SECAM_DK;
+				else
+					fixup = V4L2_STD_SECAM;
+			}
+			for (i = 0; i < TVNORMS; i++)
+				if (fixup == tvnorms[i].id)
+					break;
+		}
 		mutex_lock(&dev->lock);
 		if (res_check(fh, RESOURCE_OVERLAY)) {
 			spin_lock_irqsave(&dev->slock,flags);
=== part 2 ====================================================================

berrywizard ★★★★★
() автор топика

Я чего-то не понимаю, у меня именной 307-й авер работал ещё на 2.6.9. А с 2.6.12 и со стереозвуком.

mv ★★★★★
()
Ответ на: комментарий от mv

у меня в tvtime большинство програм без патча показывает в режиме "PAL" в чёрно-белом виде с бегающими радужными разводами, в "SECAM" только звук, картинка убитая напрочь.

berrywizard ★★★★★
() автор топика

> - .std = V4L2_STD_PAL, > + .std = V4L2_STD_PAL_DK,

И это работает под 2.6.18?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.