optischer Ausgang knarzen beim Umschalten auf AC3

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Gorcon »

@ Tommy
Hast Du eigentlich auch mit dem IDE Interface beim abspielen von Filmen mit AC-3 Tonspur Probleme? (knacken beim Spulen)
Das Problem habe ich erst seit kurzem sonst ging das spuelen immer recht flüssig, jetzt knackts aber bei jedem Spulen und es dauert ca. 2sek bis der Ton und das Bild kommt. (Buffer ist natürlich abgeschaltet, denn damit wirds ja noch schlimmer).

Gruß Gorcon
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

Gorcon hat geschrieben:@ Tommy
Hast Du eigentlich auch mit dem IDE Interface beim abspielen von Filmen mit AC-3 Tonspur Probleme? Gruß Gorcon
Ich habe bis dato keine AC3 Aufnahmen auf HD (weil mir die entsprechende Audiokomponente bis vor kurzem fehlte) Ich werd das aber beizu mal testen
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von seife »

Tommy hat geschrieben:Da die zapTo_serviceID_NOWAIT() in zapit.cpp ist wäre vermutl doch dort der beste Ort?! Bei meinen gestrigen Versuchen habe ich ja nicht den controld benutzt - vieleicht war das der Fehler. Bei den vielen Experimenten die ich gestartet habe, hätte ich eigentlich vermutet das irgendwann der Ton mal komplett weg ist da er irgendwo nicht wieder eingeschaltet wird. Aber selbst das ist nicht passiert. Was mir fehlt ist eine Übersicht über die Struktur der Gesamtsoftware. Was hat Einfluß auf was und welcher daemon erfüllt welchen Zweck.
Wenn du das rausfindest und dokumentierst, dann wäre das schonmal ein guter Ansatz :-)
Ich wollte da auch schonmal aufräumen, aber wie das so ist...
IMO nutzt neutrino.cpp (und jeder andere Prozess) die zapit.cpp zum Umschalten. Die zapit nutzt dann den controld um die devices anzusteuern.
Nein. zapit braucht controld bisher garnicht. Controld benutzt zapit, um das (OST)-Audiodevice anzusprechen:

Code: Alles auswählen

seife@susi:/local/seife/src/tuxbox-devel/apps/dvb/zapit> grep controld -ri .
./src/zapit.cpp:/* without SET_DISPLAY_FORMAT, controld cannot correct the aspect ratio in movieplayer */
seife@susi:/local/seife/src/tuxbox-devel/apps/tuxbox/neutrino/daemons/controld> cd ../../tuxbox/neutrino/daemons/controld/
seife@susi:/local/seife/src/tuxbox-devel/apps/tuxbox/neutrino/daemons/controld> grep -r zapit .
./controld.cpp:#include <zapit/client/zapitclient.h>
./controld.cpp:CZapitClient     zapit;
./controld.cpp: zapit.setDisplayFormat(videoDisplayFormat);
./controld.cpp:         //zapit.setStandby(false);
./controld.cpp:         zapit.muteAudio(false);
./controld.cpp:         zapit.startPlayBack();
./controld.cpp:         //zapit.setStandby(true);
./controld.cpp:         zapit.muteAudio(true);
./controld.cpp:         zapit.stopPlayBack();
./controld.cpp:                 zapit.setVolume(map_volume(msg_commandVolume.volume, false), map_volume(msg_commandVolume.volume, false));
./controld.cpp:                 zapit.muteAudio(settings.mute);
./controld.cpp: zapit.setVolume(map_volume(settings.volume, false), map_volume(settings.volume, false));
./controld.cpp: zapit.muteAudio(settings.mute);
Das ist auch ein Grund, warum ich nicht unbedingt vom zapit aus den controld benutzen wollen würde, denn Abhängigkeiten "im Kreis rum" sind nicht wirklich schön.
Also laufen in der zapit.cpp beim Senderwechsel alle Fäden zusammen. Das sieht man auch sehr gut wenn man die zapit im debug startet. Man sieht auch, das beim zappen auf einen AC3 Sender mehr cmd's kommen (/include/zapit/client/msgtypes.h) Allerdings haben die cmd's nix mit Audio zu tun. Also sind diese entweder nicht in der debugausgabe oder "Audio" findet eine Ebene tiefer im controld statt.

Ich werde heute abend mal den WAF weiter strapazieren (ich kann diese Tests leider nur im Wohnzimmer durchführen) und folgendes in die zapit einbauen "+":

Code: Alles auswählen

	case CZapitMessages::CMD_ZAPTO_SERVICEID_NOWAIT:
	case CZapitMessages::CMD_ZAPTO_SUBSERVICEID_NOWAIT:
	{
		CZapitMessages::commandZaptoServiceID msgZaptoServiceID;
		CBasicServer::receive_data(connfd, &msgZaptoServiceID, sizeof(msgZaptoServiceID));
+     int oldvolume = controld->getVolume();
+     controld->setVolume(0);
		zapTo_ChannelID(msgZaptoServiceID.channel_id, (rmsg.cmd == CZapitMessages::CMD_ZAPTO_SUBSERVICEID_NOWAIT));
+     controld->setVolume(oldvolume);
		break;
	}
Das geht natürlich so erstmal nicht, da du ja ein controld-Objekt erzeigen mußt etc. Das merkst du aber beim Kompilieren... :-)
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von dbt »

Ich habe mal gaudihalber meine Spielbox digital an meine Soundkarte angeschlossen. Die Karte kann kein AC3. Das Geräusch ist da permanent nachvollziehbar. Also meine Meinung ist die, das der Receiver wohl zu träge ist. Mit einem mute geht das aber auch nicht weg. Ob es sich lohnt da dran zu schrauben...? :gruebel:
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

@seife:
Danke das Du mich nicht in die Falle tappen läßt :wink:

In neutrino.cpp wird ein objekt erzeugt:

Code: Alles auswählen

g_Controld      = new CControldClient;
in remotecontrol gibt es so ein Objekt nicht - kann ich es dort auf die gleiche art erzeugen? Muß ich noch was "includen"?

und dann ist mir in remotecontrol diese schnuckelige funktion aufgefallen:

Code: Alles auswählen

void CRemoteControl::setAPID( uint APID )
{
	if ((current_PIDs.PIDs.selected_apid == APID ) ||
	    (APID >= current_PIDs.APIDs.size()))
		return;

	current_PIDs.PIDs.selected_apid = APID;
	g_Zapit->setAudioChannel( APID );
}
Selbst wenn die nur angesprungen wird bei der Menüauswahl der Tonspur ist es ein super Testkandidat weil beim auswählen in richtung AC3 knarzt es. Mir geht es ja in erster Linie darum den Beweis zu erbringen. Systemweit muß es Jemand mit mehr Ahnung implementieren :oops:
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

dbt hat geschrieben:Ich habe mal gaudihalber meine Spielbox digital an meine Soundkarte angeschlossen. Die Karte kann kein AC3. Das Geräusch ist da permanent nachvollziehbar. Also meine Meinung ist die, das der Receiver wohl zu träge ist. Mit einem mute geht das aber auch nicht weg. Ob es sich lohnt da dran zu schrauben...? :gruebel:
Naja - es gibt Schlechtere als Denon :-? Das mit dem Mute hatte ich auch schon festgestellt - das knarzt dann nicht sofort sondern erst wenn man wieder "unmuted". Konntest Du das "Nichtknarzen" bei Volume= 0 (also nicht Mute sondern ganz leise) nachvollziehen?
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von dbt »

Naja - es gibt Schlechtere als Denon
Da hast Du recht :wink:
Bei meinem "Experiment" knarzt das permanent. Auch bei 0. Ich bemerke nur eine kurze Pause im Knarzgeräusch beim umschalten auf AC3 und dann gib ihm... nichts für empfindliche Ohren! ...
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von seife »

Tommy hat geschrieben:@seife:
Danke das Du mich nicht in die Falle tappen läßt :wink:

In neutrino.cpp wird ein objekt erzeugt:

Code: Alles auswählen

g_Controld      = new CControldClient;
in remotecontrol gibt es so ein Objekt nicht - kann ich es dort auf die gleiche art erzeugen? Muß ich noch was "includen"?
Includen mußt du nix, denn controldclient/controldclient.h wird in global.h included.
Du mußt (vermutlich) auch in remotecontrol.cpp kein neues controld-Objekt erzeugen, sondern kannst einfach g_Controld->foo() machen.
und dann ist mir in remotecontrol diese schnuckelige funktion aufgefallen:
Sehr schön. Also

Code: Alles auswählen

void CRemoteControl::setAPID( uint APID )
{
	if ((current_PIDs.PIDs.selected_apid == APID ) ||
	    (APID >= current_PIDs.APIDs.size()))
		return;

	unsigned char old_volume = g_Controld->getVolume();
	g_Controld->setVolume(0);
	current_PIDs.PIDs.selected_apid = APID;
	g_Zapit->setAudioChannel( APID );
	g_Controld->setVolume(old_volume);
}
Kompiliert bei mir zumindest. Was schon mal besser ist als nix :-)
Selbst wenn die nur angesprungen wird bei der Menüauswahl der Tonspur ist es ein super Testkandidat weil beim auswählen in richtung AC3 knarzt es. Mir geht es ja in erster Linie darum den Beweis zu erbringen.
Genau, und das sollte damit möglich sein.
Ein printf rein, damit du im log siehst, wann die Funktion genau angesprungen wird, kann auch nicht schaden
Systemweit muß es Jemand mit mehr Ahnung implementieren :oops:
Ach was, das schaffst du schon. Jeder hat mal so angefangen :-)
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

die Testversion ist fertig nur habe ich heute abend Wohnzimmer-Testverbot :dash: Weiberrunde - > ich verpiss mich lieber dann mal zu den Kumpels auf ein Bier :wink:

@seife - wenns bei Dir compiled hat kannst Du vllt. deine neutrino mal Thulsadoom schicken
@Thulsa - wenn es funktioniert wie ich mir denke wirkt sich das erstmal nur aus wenn Du auf einem AC3 Channel bist und mit grün die Audiospuren wechselst

Ansonsten gibts von mir morgen abend den Testbericht.
wittinobi
Einsteiger
Einsteiger
Beiträge: 116
Registriert: Montag 29. März 2004, 22:00

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von wittinobi »

huhu,
hilft jetzt vielleicht nicht grad weiter, aber anmerken wollt ich es hier trotzdem mal noch.
also ich hab hier eine nokia sat 2xi avia500.
verwendet wird avia500v110, avia600vb022 und ucode_0014 (built-in).
box ist auch nur mit einem optischen kabel an einem denon (avc) angeschlossen.
dolby digital default steht auf ein, volume steuerung steht normalerweise auf lirc, hab jetzt aber zum test auch mit avs und ost probiert (jeweils auf 100%).

bei mir kommt kein knarcksen oder sonst irgendein störgeräusch.
es wird einfach ganz normal der ton umgeschaltet.
hab alle oben genannten variationen mehrmals durchgeschaltet, aber hat nie was komisches gemacht dabei.

achso, und image ist ein eigen-compilat ausm cvs vom 28.10.2007.

mfg
wittinobi
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

Jo - ich vermute das es ein Avia 600 Problem ist und evtl. auch nur bei Sagem auftritt. Anders kann ich mir nicht erklären das so wenig Leute betroffen sind.
BTW: evtl. nutzen auch nur wenig Leute SPDIF only
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von ingrid »

Tommy hat geschrieben:...und evtl. auch nur bei Sagem auftritt. Anders kann ich mir nicht erklären das so wenig Leute betroffen sind.
BTW: evtl. nutzen auch nur wenig Leute SPDIF only
Also, ich habe SPDIF only, zwei Sagems (1x & 2x) und keinerlei Geknackse. Allerdings 'nen Sony-Receiver. Alles Bestens.
Ich vermute mal stark, dass Dein Receiver/Verstärker die Schwachstelle ist ("dekodieren" von unvollständigen Paketen, Sony scheint sowas zu filtern...) und Du von der dbox-Seite nicht weiterkommen wirst. Aber - ich lasse mich natürlich gerne vom Gegenteil überzeugen. ;-)
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

@seife:
seh ich das richtig, das die remotecontrol.cpp nach dem compilieren IM neutrino binary ist? Wenn ja siehts schlecht aus. Habe die Änderung in remotecontrol.cpp gemacht und nach dem compilen die neutrino nach tmp gelegt und von dort gestartet. Das knarzen ist nach wie vor. Sieht man printf's am telnet wenn das binary händisch gestartet ist? Habe gerade mal ein paar eingebaut um zu sehen ob der code da überhaupt verwurstet wird.

EDIT:
mangels serieller console habe ich einen weiteren test gemacht. Ich habe das g_Controld->setVolume(old_volume); einfach mal auskommentiert und sehe nun das es ausgeführt wird - Lautstärke ist auf 0 nach dem APID Wechsel. Leider scheint der controld nicht schnell genug zu sein. Kann man was einbauen, was auf g_Controld->setVolume(0); wartet? meinetwegen auch testweise ein sleep/wait.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von seife »

Die printf's sieht du in der Konsole, wo du das Programm gestartet hast, also in deinem Fall im telnet.

sleep(1);

nach dem g_Controld->setVolume(0); läßt neutrino eine Sekunde schlafen, vor es weiter macht.
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

ich dreh bald durch hier :dash: zur Zeit compiled dies:

Code: Alles auswählen

  unsigned char old_volume = g_Controld->getVolume();
  int new_volume = 0;
  printf("Hack");
  g_Controld->setVolume(0);
  
  //while ( g_Controld->getVolume() != 0 ){}
  
  sleep(2);
	current_PIDs.PIDs.selected_apid = APID;
	g_Zapit->setAudioChannel( APID );
	sleep(2);
	while ( new_volume < old_volume )
  {
  new_volume++;
	g_Controld->setVolume(new_volume);
	}
	printf("Hack");
die beiden sleep(2) sorgen für eine ordentliche Verzögerung nur knarzt es trotzdem. Leider sehe ich die printf's nicht am telnet sonst hätte ich hinter jeden Step eins gesetzt. Das kuriose ist, dass wenn ich volume nicht wieder hochsetze das knarzen ausbleibt. Daher meine "übernächste" Überlegung - abchecken in welche Richtung der Wechsel geht. Geht es zu AC3 dann Lautstärke merken (Datei) und auf Null setzen und lassen. Geht es in Richtung PCM dann Lautstärke holen und setzen (im Zweifel auf 50%)

EDIT:
zum code oben - das faden in 1er Schritten gibt nen Timeout (dauert vermutl. zu lange)
Die printf's krieg ich doch am telnet. Man sollte doch mal noch ein \n dahinter setzen weil "HackHack" fällt kaum auf :roll:
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Houdini »

mach mal hinter den "Hack"s ein \n dann werden die prints sofort geflusht
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

@Houdini: hatte ich schon rausgefunden ;-) Nur ist mir die Syntax von printf nicht klar

Code: Alles auswählen

printf( variable, "<- Das ist mein Wert")
geht irgendwie nicht

@All
Nach ettlichen Fehlschlägen gestern mein neuer Plan:

1. Umschaltung auf AC3 identifiziern
1.1 Richtung AC3 -> Volume auf 0 setzen und vorherigen Stand merken -> APID umschalten
1.2. Richtung PCM -> APID umschalten -> vorherigen Stand holen und setzen

Gibt es in der config einen wert, der die aktuelle Lautstärke verkörpert? Wenn nein woher kommt die Lautstärke nach dem einschalten der Box? Was macht mehr sinn - eine neutrinoweite variable nutzen oder die settings?

Es gibt in der config einen Wert

Code: Alles auswählen

g_settings.audio_DolbyDigital
Wird dieser Wert ständig gesetzt oder ist das ein Menüparameter. Wenn er ständig geändert wird - vor oder nach dem umschalten der APID. (wäre dann die Lösung für 1.) Wenn es da nicht weitergeht - woher bekomme ich die info ob die APID (zu der hingeschaltet werden soll) != AC3 ist?

Und schließlich und vermutl. die leichteste Frage ist g_settings. auch in remotecontrol.cpp und zapit.cpp verfügbar?

Achso - bisher mache ich immer einen flash-semiclean und stoße dann ein image an. Das dauer aber immer 8-10 Min um eine Testversion zu haben. Mir war so, dass es auch ein target "neutrino" gibt. Wird da der zapit mitgebaut, muß ich vorher was cleanen und wo finde ich dann die files (cdkroot?)?

Sorry wenn ich Euch nerve aber ich will da jetzt mal durch ;-)
PT-1
Moderator english
Beiträge: 2458
Registriert: Donnerstag 20. Dezember 2001, 00:00

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von PT-1 »

Make Neutrino ..?
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von ingrid »

Tommy hat geschrieben:...die Syntax von printf nicht klar

Code: Alles auswählen

printf( variable, "<- Das ist mein Wert")
geht irgendwie nicht
Probier mal

Code: Alles auswählen

printf("%d <- Das ist mein Wert\n", variable);
%d wäre decimal, falls Du kein integer ausgeben willst, musst Du was anderes nehmen. (Referenz hierfür z.B.: http://www.cplusplus.com/reference/clib ... rintf.html)

Vergiss das "\n" nicht, sonst wunderst Du Dich, warum die Ausgabe zu spät kommt.
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

Hiho,

folgender code funktioniert zu 50% - manchmal knarzt es manchmal nicht.

Frage: kann ich den AVIA resetten aus neutrino? Evtl. den Watchdog auslösen osder sowas? Ich würde gerne statt dem sleep(2) den AVIA zurücksetzen. Evtl ist es ja wirklich nur Müll in dessen RAM was da noch durch den SPDIF gedrückt wird?!?!

void CRemoteControl::setAPID( uint APID )
{
if ((current_PIDs.PIDs.selected_apid == APID ) ||
(APID >= current_PIDs.APIDs.size()))
return;

/* Tommys AC3 Hack */

if ( current_PIDs.APIDs[APID].is_ac3 )
{
g_Controld->setVolume(0);
printf("switch to AC3 detected - Volume to Zero and sleep 2\n");
hier würde ich gerne den AVIA resetten
sleep(2);
}
else
{
printf("switch to PCM detected - Volume to 50\n");
g_Controld->setVolume(50);
}

current_PIDs.PIDs.selected_apid = APID;
g_Zapit->setAudioChannel( APID );

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

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von seife »

Tommy hat geschrieben:Frage: kann ich den AVIA resetten aus neutrino?
Welchen?
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

seife hat geschrieben:
Tommy hat geschrieben:Frage: kann ich den AVIA resetten aus neutrino?
Welchen?
frag mich nicht - den der für den SPDIF zuständig ist. Der soll einfach sein RAM von Restmüll befreien und bei Null starten. Scheinbar merkt der ja nicht das das was er rausschickt - naja - nicht optimal ist.

Log nach mehrmaligen knarzen
/proc/bus # cat avia_debug
Debug:
PROC_STATE: 4
MRC_ID: 0x31
MRC_STATUS: 4
INT_STATUS: 0
BUFF_INT_SRC: 0
UND_INT_SRC: 0
ERR_INT_SRC: 0
VIDEO_EMPTINESS: 0x17ae4
AUDIO_EMPTINESS: 0x4ea8
N_SYS_ERRORS: 4
N_VID_ERRORS: 3
N_AUD_ERRORS: 0
N_VID_DECODED: 28272
N_AUD_DECODED: 35633
VSYNC_HEARTBEAT: 0x05bc80
ML_HEARTBEAT: 0x52fcf5
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von seife »

Also "pzapit --pal" resettet den avia500/avia600, da mußt du halt mal schauen, was da genau gemacht wird.
Der verliert dabei aber auch teilweise seine Einstellungen (das ist ein Treiber-Bug), wie z.B. 4:3 / 16:9 etc.
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

seife hat geschrieben:Also "pzapit --pal" resettet den avia500/avia600, da mußt du halt mal schauen, was da genau gemacht wird.
Der verliert dabei aber auch teilweise seine Einstellungen (das ist ein Treiber-Bug), wie z.B. 4:3 / 16:9 etc.
was ich nebenbei gefunden habe: pzapit --iecon und pzapit --iecoff (optisch an/aus)
Ich muß morgen nur noch rausfinden wie ich das aus der remotecontrol.cpp triggern kann.

Für heute ist erstmal Feierabend :)
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: optischer Ausgang knarzen beim Umschalten auf AC3

Beitrag von Tommy »

Ja, Ja, Ja :lol: :lol: :lol:

es f-u-n-z-t !!!!!! Der Beweis ist erbracht:

Code: Alles auswählen

void CRemoteControl::setAPID( uint APID )
{
	if ((current_PIDs.PIDs.selected_apid == APID ) ||
	    (APID >= current_PIDs.APIDs.size()))
		return;

  /* Tommys AC3 Hack */
  int result = 0;
  if ( current_PIDs.APIDs[APID].is_ac3 )
  {
    printf("switch to AC3 detected - IEC -> OFF\n");
    result = system("pzapit --iecoff");
    current_PIDs.PIDs.selected_apid = APID;
    g_Zapit->setAudioChannel( APID );
    result = system("pzapit --iecon");
  }
  else
  {
    printf("switch to PCM detected - \n");
    current_PIDs.PIDs.selected_apid = APID;
    g_Zapit->setAudioChannel( APID );
  }

}
Das ist mit Sicherheit richtig besch..en von der Machart aber besser kann ichs (im Moment) nicht. Zur Erklärung:
1. Rauskriegen ob die Umschaltung Richtung AC3 geht
2. Falls ja - IEC aus - APID wechseln - IEC ein
3. Falls nein - business as usual

Der riesen Vorteil gegenüber allen anderen Ansätzen - ich muß mir die Lautstärke nirgendwo merken :lol:

Da ich nicht rausbekommen habe, wie man den die Funktion im pzapit direkt anstößt hab ichs halt außenrum gemacht. Zeitliche Verzögerung beim Umschalten -> AC3 ist minimal (besser als sleep(2) allemal) dafür geht der APID Wechsel nun völlig geräuschlos von sich.

Leider ist die o.g. Funktion nur zuständig für die APID Auswahl über grüne Taste. Das müßte jetzt Systemweit eingebaut werden (sprich bei jedem Wechsel ->AC3) und evtl. per /.ac3hack configuriert werden. Da das Problem nur wenige betrifft halte ich einen zusätzlichen Menüpunkt für überflüssig.

@seife:
was ich nicht verstehe ist warum das überhaupt geht (erste Zeile):
pzapit.cpp

Code: Alles auswählen

#ifndef HAVE_DREAMBOX_HARDWARE
	if (Iecon)
	{
		std::cout << "Iec on" << std::endl;
		zapit.IecOn();
		return 0;
	}
	if (Iecoff)
	{
		std::cout << "Iec off" << std::endl;
		zapit.IecOff();
		return 0;
	}
@All:
Danke Allen die mir bis hierher geholfen haben. Wer ein neutrino binary zum testen braucht -> melden