AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TAudioVolume Komponente incl. System Mixer
Thema durchsuchen
Ansicht
Themen-Optionen

TAudioVolume Komponente incl. System Mixer

Ein Thema von EWeiss · begonnen am 6. Mai 2018 · letzter Beitrag vom 24. Jul 2019
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: TAudioVolume Komponente incl. System Mixer

  Alt 16. Mai 2018, 11:04
Ich verstehe das so, dass der Soundtreiber entscheiden kann, ob er diese Funktionalität unterstützt.
Wenn das nicht implementiert ist, dann wird das von der Anwendung implementierte OnSessionCreated nicht aufgerufen.
Zwar wird bei der Anmeldung per RegisterSessionNotification ein S_OK zurückgeliefert, aber der Zeiger auf die Methode nirgends abgespeichert und verwendet.

Werden denn die Methoden von IAudioSessionEvents aufgerufen?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: TAudioVolume Komponente incl. System Mixer

  Alt 16. Mai 2018, 11:18
Zitat:
Werden denn die Methoden von IAudioSessionEvents aufgerufen?
Ja diese..
SessionStateEvent
SessionVolumeEvent

niemals..
OnAudioSessionDisconnected
OnAudioSessionCreated

OnAudioSessionCreated mit Thread aber Fehler mit PostMessage die neue Version damit noch nicht getestet.

gruss

Geändert von EWeiss (16. Mai 2018 um 11:22 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TAudioVolume Komponente incl. System Mixer

  Alt 16. Mai 2018, 12:53
Boah, meine Fresse! Darauf muss man erstmal kommen.
Man muss nach Anmeldung der Notifizierung definitiv GetSessionEnumerator aufrufen, dann geht das erst.
Siehe Beispielprojekt im Anhang!

Drauf gekommen bin ich deswegen:
Zitat von Larry Osterman:
The first is that his application hasn't retrieved the current list of sessions. This is one of the really subtle things about the session enumeration APIs. In order to prevent a race condition that can occur when a session notification arrives while the application using the session APIs is starting up, the session enumeration API discards new session notifications until the application has first retrieved the list of existing sessions.

The expected usage pattern is:

Application activates a session manager2. Application registers for session notifications. Application retrieves the current list of sessions for the endpoint and stores the session control objects into a list (don't forget to addref the session).

When a new session is created, the application takes a reference to the newly created session control object and inserts it into the list if it's not already present. Note that the session control object passed into the notification will be destroyed when the session notification returns - if you call GetSessionEnumerator at this point it will probably NOT hold the newly created session (it might, it all depends on timing).
https://stackoverflow.com/a/740241
Angehängte Dateien
Dateityp: zip NotificationTest_2018-05-16_13-48-15.zip (11,8 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: TAudioVolume Komponente incl. System Mixer

  Alt 16. Mai 2018, 13:02
Danke für deine Mühe das Problem zu beseitigen.
Ich werde es mir anschauen und direkt implementieren wenn es bei mir zum Erfolg führt. (Win10 <> Win7)

Bin gerade mit den Peaks dran habe da noch kleine Probleme wie immer ..
Es verhält sich anders ohne Komponente.

EDIT:
Scheint zu funktionieren..
Warum aber die gleiche EXE 6x mal überprüft wird bis zur fertigen Initialisierung verstehe ich nicht.

Zitat:
\Device\HarddiskVolume1\Program Files (x86)\Microsoft Visual Studio\VB98\Sourcemein\SKAero Projekte\Sound Machine\_build\Soundmachine.exe%b{00000000-0000-0000-0000-000000000000}
42 - 14:05:44:640 - {0.0.1.00000000}.{08c3e840-ce12-439b-bcaf-faead90881e8}|\Device\HarddiskVolume1\Program Files (x86)\Microsoft Visual Studio\VB98\Sourcemein\SKAero Projekte\Sound Machine\_build\Soundmachine.exe%b{00000000-0000-0000-0000-000000000000}
46 - 14:05:44:643 - {0.0.1.00000000}.{0a41dc96-5b3f-41b9-9baf-6930ef37f85b}|\Device\HarddiskVolume1\Program Files (x86)\Microsoft Visual Studio\VB98\Sourcemein\SKAero Projekte\Sound Machine\_build\Soundmachine.exe%b{00000000-0000-0000-0000-000000000000}
50 - 14:05:44:647 - {0.0.1.00000000}.{71d9af33-c9cd-4f8c-933a-d91c099252da}|\Device\HarddiskVolume1\Program Files (x86)\Microsoft Visual Studio\VB98\Sourcemein\SKAero Projekte\Sound Machine\_build\Soundmachine.exe%b{00000000-0000-0000-0000-000000000000}
54 - 14:05:44:652 - {0.0.1.00000000}.{a7365fee-d1ad-41d1-b9ad-78d48c1b797e}|\Device\HarddiskVolume1\Program Files (x86)\Microsoft Visual Studio\VB98\Sourcemein\SKAero Projekte\Sound Machine\_build\Soundmachine.exe%b{00000000-0000-0000-0000-000000000000}
58 - 14:05:44:657 - {0.0.0.00000000}.{74088c25-4c92-4184-b938-5651c2eeb6fd}|\Device\HarddiskVolume1\Program Files (x86)\Microsoft Visual Studio\VB98\Sourcemein\SKAero Projekte\Sound Machine\_build\Soundmachine.exe%b{00000000-0000-0000-0000-000000000000}
Disconnect geht nicht oder aber nicht implementiert zur zeit.

gruss

Geändert von EWeiss (16. Mai 2018 um 13:10 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TAudioVolume Komponente incl. System Mixer

  Alt 16. Mai 2018, 13:10
Hängt vielleicht mit der Anzahl der Devices zusammen. Ich habe in dem Beispielprogramm über alle Devices iteriert und da über den jeweiligen SessionManager2 die Callback angemeldet. Wenn du dir nur das DefaultDevice geben lässt, sollte das schon weniger sein.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: TAudioVolume Komponente incl. System Mixer

  Alt 16. Mai 2018, 13:10
Hängt vielleicht mit der Anzahl der Devices zusammen. Ich habe in dem Beispielprogramm über alle Devices iteriert und da über den jeweiligen SessionManager2 die Callback angemeldet. Wenn du dir nur das DefaultDevice geben lässt, sollte das schon weniger sein.
Ja das wäre eine logische Erklärung.

PS:
Nebenbei.. Ich war selber schon auf der gleichen Seite habe aber wegen meiner schlechten English Kenntnisse das nicht richtig verstanden.
Aber Larry.. sollte es wissen er hat das Teil ja mit entwickelt.

Zufall? 100 voll. LOL

gruss

Geändert von EWeiss (16. Mai 2018 um 13:17 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TAudioVolume Komponente incl. System Mixer

  Alt 16. Mai 2018, 13:20
Nebenbei.. Ich war selber schon auf der gleichen Seite habe aber wegen meiner schlechten English Kenntnisse das nicht richtig verstanden.
Aber Larry.. sollte es wissen er hat das Teil ja mit entwickelt.
Nutze https://www.deepl.com/translator
Das spuckt für oben zitierten Abschnitt folgendes aus:

Zitat:
Die erste ist, dass seine Anwendung die aktuelle Liste der Sitzungen nicht abgerufen hat. Dies ist eines der wirklich subtilen Dinge über die Session Enumeration APIs. Um eine Wettlaufsituation zu verhindern, die auftreten kann, wenn eine Sitzungsbenachrichtigung eintrifft, während die Anwendung mit den Sitzungs-APIs gestartet wird, verwirft die Sitzungsaufzählungs-API neue Sitzungsbenachrichtigungen, bis die Anwendung zuerst die Liste der vorhandenen Sitzungen abgerufen hat.

Das erwartete Nutzungsverhalten ist:

Anwendung aktiviert einen Session-Manager2. Anwendungsregister für Sitzungsbenachrichtigungen. Die Anwendung ruft die aktuelle Liste der Sitzungen für den Endpunkt ab und speichert die Sitzungssteuerungsobjekte in einer Liste (vergessen Sie nicht, die Sitzung hinzuzufügen).

Wenn ein neuer Modus erstellt wird, nimmt die Anwendung eine Referenz auf das neu erstellte Session-Control-Objekt und fügt es in die Liste ein, falls es noch nicht vorhanden ist. Beachten Sie, dass das in die Benachrichtigung übergebene Sitzungssteuerungsobjekt zerstört wird, wenn die Sitzungsbenachrichtigung zurückkehrt - wenn Sie GetSessionEnumerator an dieser Stelle aufrufen, wird es wahrscheinlich NICHT die neu erstellte Sitzung halten (es könnte sein, es hängt alles vom Timing ab).
Ist nicht perfekt, aber gut verständlich.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz