Hi,
für ein neues Feature in meinem Skin habe ich eine kleine Sache von Louis übernommen, dabei geht es darum herauszufinden welches DVB-Device von wem verwendet wird und auf welchem Kanal dieser geschaltet ist. Dies ist aber anscheinend schwieriger als gedacht.
Das ganze sieht dann ungefähr so aus:
// check device which currently displays live tv
int deviceLiveTV = -1;
cDevice *primaryDevice = cDevice::PrimaryDevice();
if (primaryDevice) {
if (!primaryDevice->Replaying() || primaryDevice->Transferring())
deviceLiveTV = cDevice::ActualDevice()->DeviceNumber();
else
deviceLiveTV = primaryDevice->DeviceNumber();
}
// check currently recording devices
bool *recDevices = new bool[numDevices];
for( int i=0; i < numDevices; i++ )
recDevices[i] = false;
for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
if (!timer->Recording()) {
continue;
}
if (cRecordControl *RecordControl = cRecordControls::GetRecordControl(timer)) {
const cDevice *recDevice = RecordControl->Device();
if (recDevice) {
recDevices[recDevice->DeviceNumber()] = true;
}
}
}
int actualNumDevices = 0;
for (int i = 0; i < numDevices; i++) {
const cDevice *device = cDevice::GetDevice(i);
if (!device || !device->NumProvidedSystems()) {
continue;
}
actualNumDevices++;
std::stringstream strDevice;
strDevice << i << ": " << *(device->DeviceType()) << " - ";
const cChannel *channel = device->GetCurrentlyTunedTransponder();
Alles anzeigen
Ist nicht komplett aber man sollte erkennen was getan wird.
Das erste Problem ist wie man herausfindet welches Device von wem verwendet wird. Hier sieht man das man das nicht einfach abfragen kann, sondern derzeit auf 2 Sachen geprüft wird, LiveTV und Recording. Was ist aber mit EPG-Scan, Streamdev, etc. ?
Das 2. Problem besteht beim herausfinden des Kanals mittels:
Laut diesem Forumspost funktioniert dies nicht richtig. Auch ich kann bestätigen das ich mit diesem Aufruf und Streamdev-Client kein Kanal zurück bekomme (warum nicht?). Ich hatte dies dann wie vom Poster beschrieben geändert in
Damit erhalte ich auch mit streamdev-client den richtigen Kanal allerdings soll laut MegaV0lt hier immer der gleiche Kanal bei mehreren DVB-Devices erscheinen.
Leider habe ich derzeit auf meinem Entwicklungsrechner nicht die Möglichkeit alle Konstellationen durchzutesten da ich dort derzeit nur 1 streamdev-client habe.
Kann mir hier jemand evtl. helfen? Bekomme ich das überhaupt sauber gelöst? Beim ersten Problem sehe ich schwarz das 2. Problem mit dem Kanal sollte sich doch aber lösen lassen!?!
Grüße
Martin