My Cable provider or VDR seems to mess up the audio pid regularly for various channels. Is there a way (or patch) that I can keep the update pids on, except for the apids? They move the vpids around about once a month, so keeping vpid updating depending on sid is worthwhile, otherwise I would turn off the updatepids line.
On Mon, 2009-12-14 at 00:03 -0500, Alex Lasnier wrote:
Klaus Schmidinger wrote:
On 02.08.2009 19:22, Alex Lasnier wrote:
Klaus Schmidinger wrote:
On 07/30/09 01:05, Rob Davis wrote:
Stile wrote:
On Tue, Jun 23, 2009 at 12:43 PM, Rob Davisrob@davis-family.info wrote:
> Alex Lasnier wrote: > >> Rob Davis wrote: >> >> >>> I have it normally connected to Comcast cable which should pipe >>> through >>> a bunch of FTV channels using QAM256. These I can see and hear in >>> kaffeine with AC97 audio. However, in VDR it appears to change the >>> pids >>> automatically so that the audio stops working. If I manually change >>> VDR >>> to not auto update and put the APID in then it squeeks rather than >>> works. However, streaming to mplayer using streamdev seems to work. >>> (It >>> does the same this with OTA channels too - although I can only get 4 >>> with a portable antenna.) >>> >>> >> ATSC uses only AC-3 audio, so the Apid should be 0 and the Dpid >> needs to >> be set appropriately. Since the sound squeaks, whatever value you >> have >> set for the Apid should be the Dpid. >> >> For example, >> >> WIFR-Wx:495000:M256:C:0:1984:0;Dpid:0:0:2:0:0:0 >> >> >> > Perfect... Thanks > > Is there a way to keep auto update on, but stop Comcast from sending > wrong pids? It keeps settings all audio options to 0 and some vpids > too? > > The streamtype for those AC3 PIDs is 0x81. Adding this to pat.c will add the digital PIDs correctly.
--- pat.c~ 2009-06-22 12:28:08.000000000 -0400 +++ pat.c 2009-06-22 13:32:48.461538560 -0400 @@ -432,6 +432,9 @@ } } break;
case 0x81: // AC3 DPIDs
Dpids[NumDpids++] = stream.getPid();
break; //default: printf("PID: %5d %5d %2d %3d %3d\n",
pmt.getServiceId(), stream.getPid(), stream.getStreamType(), pmt.getVersionNumber(), Channel->Number());//XXX } for (SI::Loop::Iterator it; (d = (SI::CaDescriptor*)stream.streamDescriptors.getNext(it, SI::CaDescriptorTag)); ) {
Perfect. I wonder if this could go in the atscepg patch?
Can you try if this also works if you insert the line
case 0x81: // AC3 DPIDs
after the line
//XXX case 8: // STREAMTYPE_13818_DSMCC
instead? I'm asking because I'd like to see whether there are also language descriptors available...
Klaus
Yes, language descriptors are present. However, ATSC also uses 0x81 as the AC3 descriptor tag. So we need another
case 0x81:
after
case SI::AC3DescriptorTag:
In case this is still current, can you please send me a (tested) patch?
Klaus
Sure, please see the attached patch.
plain text document attachment (vdr-1.7.10-atsc.diff) 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;
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr