diff -ur vdr-1.7.10.orig/dvbdevice.c vdr-1.7.10/dvbdevice.c --- vdr-1.7.10.orig/dvbdevice.c 2009-06-06 07:17:20.000000000 -0400 +++ vdr-1.7.10/dvbdevice.c 2009-11-22 13:26:57.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; @@ -904,7 +914,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 diff -ur vdr-1.7.10.orig/pat.c vdr-1.7.10/pat.c --- vdr-1.7.10.orig/pat.c 2009-08-16 11:01:03.000000000 -0400 +++ vdr-1.7.10/pat.c 2009-11-22 13:31:37.000000000 -0500 @@ -389,6 +389,7 @@ break; case 5: // STREAMTYPE_13818_PRIVATE case 6: // STREAMTYPE_13818_PES_PRIVATE + case 0x81: // ATSC AC-3 //XXX case 8: // STREAMTYPE_13818_DSMCC { int dpid = 0; @@ -397,6 +398,7 @@ for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { switch (d->getDescriptorTag()) { case SI::AC3DescriptorTag: + case 0x81: // ATSC AC-3 descriptor tag dpid = esPid; break; case SI::SubtitlingDescriptorTag: diff -ur vdr-1.7.10.orig/remux.c vdr-1.7.10/remux.c --- vdr-1.7.10.orig/remux.c 2009-11-22 06:23:27.000000000 -0500 +++ vdr-1.7.10/remux.c 2009-11-22 13:31:28.000000000 -0500 @@ -532,6 +532,7 @@ } break; case 0x06: // STREAMTYPE_13818_PES_PRIVATE + case 0x81: // ATSC AC-3 { int dpid = 0; char lang[MAXLANGCODE1] = ""; @@ -539,6 +540,7 @@ for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { switch (d->getDescriptorTag()) { case SI::AC3DescriptorTag: + case 0x81: // ATSC AC-3 descriptor tag dbgpatpmt(" AC3"); dpid = stream.getPid(); break;