Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: [PATCH] azap (ATSC Zapping Application) + channels.confexample



Taylor Jacob wrote:

Attached is a patch to include zap capabilities for ATSC cards. I also included
a channels.conf example file for my local area to help get some people started. It's mostly a hack up of tzap but serves the purpose.

I was given a script by Angel Li in Miami who has one of the nxt2002 based cards
that generates a azap channels.conf file from antennaweb.org based solely on a
zipcode which makes setup quite easy for ATSC users. It that something that
could be added someplace in cvs as well?

Taylor

I attached a patch for mplayer-cvs: it should permit to tune atsc channels with the dvb:// syntax.
The channels.conf file it searches is ~/.mplayer/channels.conf.atsc.

I would be grateful if someone would test the code (I can't: not ATSC in italy).

Thanks,
Nico
Index: dvbin.h
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/dvbin.h,v
retrieving revision 1.8
diff -c -u -c -u -r1.8 dvbin.h
--- dvbin.h	26 Aug 2004 19:37:55 -0000	1.8
+++ dvbin.h	4 Jan 2005 11:38:47 -0000
@@ -8,6 +8,7 @@
 #ifdef HAVE_DVB_HEAD
 	#include <linux/dvb/dmx.h>
 	#include <linux/dvb/frontend.h>
+	#include <linux/dvb/version.h>
 #else
 	#include <ost/dmx.h>
 	#include <ost/sec.h>
@@ -26,6 +27,12 @@
 	#define dmx_pes_type_t dmxPesType_t
 #endif
 
+#undef DVB_ATSC
+#if defined(DVB_API_VERSION_MINOR)
+#if DVB_API_VERSION == 3 && DVB_API_VERSION_MINOR >= 1
+#define DVB_ATSC 1
+#endif
+#endif
 
 
 #define DVB_CHANNEL_LOWER -1
@@ -92,6 +99,7 @@
 #define TUNER_SAT	1
 #define TUNER_TER	2
 #define TUNER_CBL	3
+#define TUNER_ATSC	4
 
 extern int dvb_step_channel(dvb_priv_t *, int);
 extern int dvb_set_channel(dvb_priv_t *, int, int);
Index: dvbin.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/dvbin.c,v
retrieving revision 1.11
diff -c -u -c -u -r1.11 dvbin.c
--- dvbin.c	26 Aug 2004 19:38:04 -0000	1.11
+++ dvbin.c	4 Jan 2005 11:38:47 -0000
@@ -180,6 +180,16 @@
 				"CBL, NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d, SRATE: %d",
 				list->NUM_CHANNELS, fields, ptr->name, ptr->freq, ptr->srate);
 		}
+#ifdef DVB_ATSC
+		else if(type == TUNER_ATSC)
+		{
+			fields = sscanf(line, cbl_conf,
+				&ptr->name, &ptr->freq, &mod, &vpid_str, &apid_str);
+			mp_msg(MSGT_DEMUX, MSGL_V,
+				"ATSC, NUM: %d, NUM_FIELDS: %d, NAME: %s, FREQ: %d",
+				list->NUM_CHANNELS, fields, ptr->name, ptr->freq);
+		}
+#endif
 		else //SATELLITE
 		{
 			fields = sscanf(line, sat_conf,
@@ -233,7 +243,7 @@
 			mp_msg(MSGT_DEMUX, MSGL_V, " %d ", ptr->pids[cnt]);
 		mp_msg(MSGT_DEMUX, MSGL_V, "\n");
 		
-		if((type == TUNER_TER) || (type == TUNER_CBL))
+		if((type == TUNER_TER) || (type == TUNER_CBL) || (type == TUNER_ATSC))
 		{
 			if(! strcmp(inv, "INVERSION_ON"))
 				ptr->inv = INVERSION_ON;
@@ -275,7 +285,12 @@
 				ptr->mod = QAM_32;
 			else if(! strcmp(mod, "QAM_16"))
 				ptr->mod = QAM_16;
-			//else ptr->mod = QPSK;
+#ifdef DVB_ATSC
+			else if(! strcmp(mod, "VSB_8"))
+				ptr->mod = VSB_8;
+			else if(! strcmp(mod, "VSB_16"))
+				ptr->mod = VSB_16;
+#endif
 		}
 
 
@@ -487,6 +502,11 @@
 			sprintf(priv->new_tuning, "%d|%09d|%d|%d|%d|%d", priv->card, channel->freq, channel->inv, channel->srate,
 				channel->cr, channel->mod);
 		break;
+#ifdef DVB_ATSC
+		case TUNER_ATSC:
+			sprintf(priv->new_tuning, "%d|%09d|%d", priv->card, channel->freq, channel->mod);
+		break;
+#endif
 	}
 
 
@@ -752,7 +772,7 @@
 			
 		type = dvb_get_tuner_type(fd);
 		close(fd);
-		if(type != TUNER_SAT && type != TUNER_TER && type != TUNER_CBL)
+		if(type != TUNER_SAT && type != TUNER_TER && type != TUNER_CBL && type != TUNER_ATSC)
 		{
 			mp_msg(MSGT_DEMUX, MSGL_V, "DVB_CONFIG, can't detect tuner type of card %d, skipping\n", i);
 			continue;
@@ -769,6 +789,9 @@
 				case TUNER_SAT:
 				conf_file = get_path("channels.conf.sat");
 					break;
+				case TUNER_ATSC:
+				conf_file = get_path("channels.conf.atsc");
+					break;
 			}
 		
 		if((access(conf_file, F_OK | R_OK) != 0))
Index: dvb_tune.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/dvb_tune.c,v
retrieving revision 1.10
diff -c -u -c -u -r1.10 dvb_tune.c
--- dvb_tune.c	31 Dec 2004 11:40:01 -0000	1.10
+++ dvb_tune.c	4 Jan 2005 11:38:47 -0000
@@ -34,6 +34,7 @@
 #ifdef HAVE_DVB_HEAD
 	#include <linux/dvb/dmx.h>
 	#include <linux/dvb/frontend.h>
+	#include <linux/dvb/version.h>
 	char* dvb_frontenddev[4]={"/dev/dvb/adapter0/frontend0","/dev/dvb/adapter1/frontend0","/dev/dvb/adapter2/frontend0","/dev/dvb/adapter3/frontend0"};
 	char* dvb_dvrdev[4]={"/dev/dvb/adapter0/dvr0","/dev/dvb/adapter1/dvr0","/dev/dvb/adapter2/dvr0","/dev/dvb/adapter3/dvr0"};
 	char* dvb_demuxdev[4]={"/dev/dvb/adapter0/demux0","/dev/dvb/adapter1/demux0","/dev/dvb/adapter2/demux0","/dev/dvb/adapter3/demux0"};
@@ -84,6 +85,11 @@
       mp_msg(MSGT_DEMUX, MSGL_V, "TUNER TYPE SEEMS TO BE DVB-C\n");
 	  return TUNER_CBL;
 
+#ifdef DVB_ATSC
+	case FE_ATSC:
+      mp_msg(MSGT_DEMUX, MSGL_V, "TUNER TYPE SEEMS TO BE DVB-ATSC\n");
+	  return TUNER_ATSC;
+#endif
 	default:
 	  mp_msg(MSGT_DEMUX, MSGL_ERR, "UNKNOWN TUNER TYPE\n");
 	  return 0;
@@ -386,6 +392,12 @@
 			mp_msg(MSGT_DEMUX, MSGL_V, "        SymbolRate: %d\n",feparams->u.qpsk.symbol_rate);
 			mp_msg(MSGT_DEMUX, MSGL_V, "        FEC_inner:  %d\n",feparams->u.qpsk.fec_inner);
 			break;
+#ifdef DVB_ATSC
+			case FE_ATSC:
+			mp_msg(MSGT_DEMUX, MSGL_V, "Event:  Frequency: %d\n",feparams->frequency);
+			mp_msg(MSGT_DEMUX, MSGL_V, "        Modulation: %d\n",feparams->u.vsb.modulation);
+			break;
+#endif
 			default:
 			break;
 		}
@@ -755,6 +767,13 @@
       feparams.u.qam.QAM = modulation;
 #endif
       break;
+#ifdef DVB_ATSC
+    case FE_ATSC:
+      mp_msg(MSGT_DEMUX, MSGL_V, "tuning ATSC to %d, modulation=%d\n",freq,modulation);
+      feparams.frequency=freq;
+      feparams.u.vsb.modulation = modulation;
+      break;
+#endif
     default:
       mp_msg(MSGT_DEMUX, MSGL_V, "Unknown FE type. Aborting\n");
       return 0;

Home | Main Index | Thread Index