Patch für Neutrino on TD, Mute Problem

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
hannebamb(el)
Foren-Moderator
Beiträge: 297
Registriert: Montag 11. Oktober 2004, 14:51

Patch für Neutrino on TD, Mute Problem

Beitrag von hannebamb(el) »

Auf der Triple Dragon mit Neutrino-SD hab ich folgendes Verhalten:
Mute geschaltet, Neutrino zeigt Mute sysbol an, Ruhe auf den Lautsprechern

Einmal gezappt

Neutrino zeigt weiterhin das Mute Symbol an, mit controldc getmute kommt immer noch eine 1, d.h. alle sind der Meinung, es sei still
Aus den Lautsprechern kommt aber Ton

Folgender Patch als workaround behebt das Verhalten:
index 08f6dfe..e4af7e7 100644
--- a/dvb/zapit/src/zapit.cpp
+++ b/dvb/zapit/src/zapit.cpp
@@ -1498,6 +1498,14 @@ bool parse_command(CBasicMessage::Header &rmsg, int connfd)
CZapitMessages::commandZapto msgZapto;
CBasicServer::receive_data(connfd, &msgZapto, sizeof(msgZapto)); // bouquet & channel number are already starting at 0!
zapTo(msgZapto.bouquet, msgZapto.channel);
+#ifdef HAVE_TRIPLEDRAGON
+ /*on tripledragon there seems to be a problem with Mute, Neutrino thinks, it is muted but sound is there, so make sure
+ *to re-mute
+ */
+ if (settings.mute){
+ audioDecoder->mute();
+ }
+#endif
break;
}

@@ -1506,6 +1514,14 @@ bool parse_command(CBasicMessage::Header &rmsg, int connfd)
CZapitMessages::commandZaptoChannelNr msgZaptoChannelNr;
CBasicServer::receive_data(connfd, &msgZaptoChannelNr, sizeof(msgZaptoChannelNr)); // bouquet & channel number are already starting
zapTo(msgZaptoChannelNr.channel);
+#ifdef HAVE_TRIPLEDRAGON
+ /*on tripledragon there seems to be a problem with Mute, Neutrino thinks, it is muted but sound is there, so make sure
+ *to re-mute
+ */
+ if (settings.mute){
+ audioDecoder->mute();
+ }
+#endif
break;
}

@@ -1522,6 +1538,14 @@ bool parse_command(CBasicMessage::Header &rmsg, int connfd)
/* else send it after zapping... */
if (!msgZaptoServiceID.nowait || fastzap)
CBasicServer::send_data(connfd, &msgResponseZapComplete, sizeof(msgResponseZapComplete));
+#ifdef HAVE_TRIPLEDRAGON
+ /*on tripledragon there seems to be a problem with Mute, Neutrino thinks, it is muted but sound is there, so make sure
+ *to re-mute
+ */
+ if (settings.mute){
+ audioDecoder->mute();
+ }
+#endif
break;
}
Vielleicht hat seife noch eine Idee wegen der eigentlichen Ursache, sonst ist das als Workaround erstmal funktionsfähig

Gruss

HB
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Patch für Neutrino on TD, Mute Problem

Beitrag von seife »

du kannst mal versuchen, zapit mit "zapit -d" zu starten, dann sieht du glaube ich alle ioctl()s die gemacht werden. Dabei würde man dann sehen, ob da irgendwo aus versehen unmuted wird.

Ansonsten gehört das in dvb/zapit/src/zapost/audio.cpp, dort beim "mute" und "unmute" den Status merken, und beim "start" wieder muten.
Ist aber eklig mit den ganzen ifdefs.

Ich würde sagen, wir fixens einfach im neutrino-hd und gut ist ;)
hannebamb(el)
Foren-Moderator
Beiträge: 297
Registriert: Montag 11. Oktober 2004, 14:51

Re: Patch für Neutrino on TD, Mute Problem

Beitrag von hannebamb(el) »

hehe, im neutrino-hd funktioniert das prima

Mit zapit -d hab ich nichts auffällig erkennen können
[audio.cpp:setMute:109] ioctl(fd, AUDIO_SET_MUTE, enable)
[zapit.cpp:parse_command:1239] cmd 6 (version 8) received
[zapit.cpp:zapit:816] tuned_transponder_id: 2da600c004530001
[dmx.cpp:stop:195] ioctl(fd, DMX_STOP)
[dmx.cpp:stop:195] ioctl(fd, DMX_STOP)
[dmx.cpp:stop:195] ioctl(fd, DMX_STOP)
[video.cpp:stop:386] ioctl(fd, VIDEO_STOP)
[audio.cpp:stop:216] ioctl(fd, AUDIO_STOP)
[zapit.cpp:zapit:961] looking up pids for channel_id 4530001445f
[dmx.cpp:sectionFilter:47] ioctl(fd, DMX_STOP)
[dmx.cpp:sectionFilter:163] ioctl(fd, DMX_SET_FILTER, &sctFilterParams)
[dmx.cpp:read:200] read(fd, buf, n)
[dmx.cpp:sectionFilter:47] ioctl(fd, DMX_STOP)
[dmx.cpp:sectionFilter:163] ioctl(fd, DMX_SET_FILTER, &sctFilterParams)
[dmx.cpp:read:200] read(fd, buf, n)
[dmx.cpp:pesFilter:185] ioctl(fd, DMX_SET_PES_FILTER, &pesFilterParams)
[dmx.cpp:start:190] ioctl(fd, DMX_START)
[dmx.cpp:pesFilter:185] ioctl(fd, DMX_SET_PES_FILTER, &pesFilterParams)
[dmx.cpp:start:190] ioctl(fd, DMX_START)
[dmx.cpp:pesFilter:185] ioctl(fd, DMX_SET_PES_FILTER, &pesFilterParams)
[dmx.cpp:start:190] ioctl(fd, DMX_START)
[video.cpp:setBlank:432] ioctl(fd, MPEG_VID_STILLP_WRITE, &buf)
[video.cpp:start:374] ioctl(fd, MPEG_VID_PLAY)
[video.cpp:start:375] ioctl(fd, MPEG_VID_SYNC_ON, VID_SYNC_VID)

Vielen Dank für den schubs in die Richtung, hier ein Patch gegen audio.cpp
--- a/dvb/zapit/src/zapost/audio.cpp
+++ b/dvb/zapit/src/zapost/audio.cpp
@@ -36,6 +36,7 @@

extern struct Ssettings settings;
unsigned char map_volume(const unsigned char volume, const bool to_AVS);
+unsigned int ismuted=0;

CAudio::CAudio(void)
{
@@ -106,6 +107,7 @@ int CAudio::setMute(int enable)
/* we can not mute AVS, so mute mpeg */
int CAudio::setMute(int enable)
{
+ ismuted=enable;
return fop(ioctl, AUDIO_SET_MUTE, enable);
}
#endif
@@ -208,7 +210,14 @@ audio_stream_source_t CAudio::getSource(void)

int CAudio::start(void)
{
+#ifdef HAVE_TRIPLEDRAGON
+ /* there seems to be some problem with the TD as it makes the sound available again on
+ * zap if muted whereas it shouldn't.
+ * workaround by re-muting */
+ fop(ioctl, AUDIO_SET_MUTE, ismuted);
+#endif
return quiet_fop(ioctl, AUDIO_PLAY);
+
}

int CAudio::stop(void)
Macht die Sache dann doch übersichtlicher :-)