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
<