ATSC for VDR 1.7.4

Message ID 497CD49B.8070200@fepg.org
State New
Headers

Commit Message

Alex Lasnier Jan. 25, 2009, 9:07 p.m. UTC
  Hi all,

This patch adds ATSC support to VDR 1.7.4.

Klaus, would you consider adding this to VDR?


Regards,

Alex Lasnier
  

Comments

Klaus Schmidinger Jan. 26, 2009, 6:35 p.m. UTC | #1
On 25.01.2009 22:07, Alex Lasnier wrote:
> Hi all,
> 
> This patch adds ATSC support to VDR 1.7.4.
> 
> Klaus, would you consider adding this to VDR?

Am I right in understanding that ATSC is a "subset" of DVB-T?

How are ATSC transponders announced in the NIT?
Shouldn't there also be some code in cNitFilter::Process() for this?

Klaus
  
Alex Lasnier Jan. 26, 2009, 9:27 p.m. UTC | #2
Klaus Schmidinger wrote:
> On 25.01.2009 22:07, Alex Lasnier wrote:
>> Hi all,
>>
>> This patch adds ATSC support to VDR 1.7.4.
>>
>> Klaus, would you consider adding this to VDR?
> 
> Am I right in understanding that ATSC is a "subset" of DVB-T?
> 
> How are ATSC transponders announced in the NIT?
> Shouldn't there also be some code in cNitFilter::Process() for this?
> 
> Klaus
> 

Although ATSC and DVB-T share some similarities, they are fundamentally 
different. For instance, the ATSC standard does not even define a NIT. 
The patch simply allows VDR to tune and view ATSC channels, the various 
tables are parsed by a plugin.

Alex
  

Patch

diff -u vdr-1.7.4.orig/dvbdevice.c vdr-1.7.4/dvbdevice.c
--- vdr-1.7.4.orig/dvbdevice.c	2009-01-10 05:07:33.000000000 -0500
+++ vdr-1.7.4/dvbdevice.c	2009-01-25 15:23:21.000000000 -0500
@@ -319,6 +319,16 @@ 
      tuneTimeout = DVBT_TUNE_TIMEOUT;
      lockTimeout = DVBT_LOCK_TIMEOUT;
      }
+  else if (frontendType == SYS_ATSC) {
+     // ATSC
+     SETCMD(DTV_DELIVERY_SYSTEM, frontendType);
+     SETCMD(DTV_FREQUENCY, FrequencyToHz(channel.Frequency()));
+     SETCMD(DTV_INVERSION, channel.Inversion());
+     SETCMD(DTV_MODULATION, channel.Modulation());
+     
+     tuneTimeout = DVBT_TUNE_TIMEOUT;
+     lockTimeout = DVBT_LOCK_TIMEOUT;     
+     }
   else {
      esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
      return false;
@@ -856,7 +866,7 @@ 
   return type == cSource::stNone
       || type == cSource::stCable && (frontendType == SYS_DVBC_ANNEX_AC || frontendType == SYS_DVBC_ANNEX_B)
       || type == cSource::stSat   && (frontendType == SYS_DVBS || frontendType == SYS_DVBS2)
-      || type == cSource::stTerr  && (frontendType == SYS_DVBT);
+      || type == cSource::stTerr  && (frontendType == SYS_DVBT || frontendType == SYS_ATSC);
 }
 
 bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const