tmbinc hat geschrieben:was war denn kaputt?
kaputt ist ein zu strenge wort dafür.
naja gefixt ,ein bissel übertrieben,nur ne reise zurück in Zeit.
2a3,15
> int isValidONIDTSID(eOriginalNetworkID onid, eTransportStreamID tsid)
> {
> if ((onid == 1) && (tsid > 1))
> return 1;
> if (onid == 1)
> return 0;
> if (onid == 0)
> return 0;
> if (onid == 0xFFFF)
> return 0;
> return 1;
> }
>
4c17
< static void fakeONIDSID(eOriginalNetworkID &onid, eTransportStreamID &tsid, int freq)
---
> eDVBNamespace eTransponder::buildNamespace(eOriginalNetworkID onid, eTransportStreamID tsid, int orbital_position, int freq)
6,13c19,23
< // do nothing on valid ONIDs
< if ((onid != 1) && (onid != 0xFFFF) && (onid != 0))
< return;
< // onid 1 is astra, don't mess with it.
< if (tsid > 1)
< return;
< // fake together an onid.
< onid=freq&0xFFFF;
---
> int dvb_namespace=orbital_position<<16;
> // on invalid ONIDs, build hash from frequency.
> if (!isValidONIDTSID(onid, tsid))
> dvb_namespace|=freq&0xFFFF;
> return eDVBNamespace(dvb_namespace);
185a196
> eDVBNamespace dvb_namespace=-1;
189c200
< if (dvb.settings->transponderlist->searchTS(tsid, onid))
---
> if (dvb.settings->transponderlist->searchTS(dvb_namespace, tsid, onid))
192c203
< eTransponder tp(*dvb.settings->transponderlist, tsid, onid);
---
> eTransponder tp(*dvb.settings->transponderlist, -1, tsid, onid);
226c237
< dvb.settings->addDVBBouquet(bat);
---
> dvb.settings->addDVBBouquet(transponder->dvb_namespace, bat);
325a337,339
> eDVBNamespace dvb_namespace;
>
> // build "namespace" to work around buggy satellites
327c341,345
< fakeONIDSID(onid, tsid, transponder->satellite.frequency);
---
> dvb_namespace=eTransponder::buildNamespace(onid, tsid, transponder->satellite.orbital_position, transponder->satellite.frequency);
> else
> dvb_namespace=0;
>
> transponder->dvb_namespace=dvb_namespace;
330c348
< eTransponder &real=dvb.settings->transponderlist->createTransponder(tsid, onid);
---
> eTransponder &real=dvb.settings->transponderlist->createTransponder(dvb_namespace, tsid, onid);
353c371
< dvb.settings->transponderlist->handleSDT(sdt, onid, tsid);
---
> dvb.settings->transponderlist->handleSDT(sdt, dvb_namespace, onid, tsid);
356d373
<