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 18. Mai 2018, 09:33
1. Bitte beachte was ich einige Seiten zuvor über das Casten und Versenden von Interface-Pointern schrieb.
2. OnSessionDisconnected könnte möglicherweise mit der 3 Minuten-Regel zusammenhängen, die HolgerX einige Seiten zuvor herausgefunden hat. Hast du das mal länger laufen lassen?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: TAudioVolume Komponente incl. System Mixer

  Alt 18. Mai 2018, 09:36
Zitat:
Bitte beachte was ich einige Seiten zuvor über das Casten und Versenden von Interface-Pointern schrieb.
Ja ich weis das es keine gute Lösung ist.
Nur wie mache ich es besser?

Dazu müsste ich den Event Thread in TAudioVolume integrieren nur weis nicht wie. Sorry

gruss
  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 18. Mai 2018, 09:58
Du weißt doch, wie man eine Callback schreibt, was hält dich auf?

Welche Klasse integriert denn jetzt eigentlich das Interface IAudioSessionNotification?
Der TSessionThread ist es nicht.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: TAudioVolume Komponente incl. System Mixer

  Alt 18. Mai 2018, 10:09
Welche Klasse integriert denn jetzt eigentlich das Interface IAudioSessionNotification?
Der TSessionThread ist es nicht.
TAudioVolume..

Zitat:
Du weißt doch, wie man eine Callback schreibt, was hält dich auf?
Ach mano..

OK..
Habe die Winproc rausgeworfen brauche ich nicht.
Benötige den Thread nur zur Initialisierung von CoInitializeEx.

Werde mal testen ob es jetzt ohne zu blocken funktioniert.

EDIT:
Nein geht nicht hängt bei SimpleAudio := nil.
Ich gebe es bald auf.. LOL

gruss

Geändert von EWeiss (11. Jul 2019 um 15:51 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 18. Mai 2018, 12:22
Bring doch erstmal ein bisschen Übersicht rein.
Es ist ja wieder so eine 3000 Zeilen Unit.

Du hast fünf Stellen, bei denen du ...Device.Activate(IID_IAudioSessionManager... aufrufst.
Baue das doch bitte so um, dass du pro Device (in der Regel nutzt du ja das Default) das nur einmal machst.
Speichere dir alle Referenzen von den Interfaces ab, die du dann benötigst (IAudioSessionControl2, IAudioSessionEnumerator usw.).
Am besten in einen Container in einer generischen Liste/Dictionary.
Vielleicht ist das ständige Neuholen und Überschreiben der Member-Variablen SessionManager, SessionManager2, AudioClient, SessionEnumerator und SessionControl nicht ohne Gefahr.

Dann haben wir erstmal ganz viel Quelltext, der weg kann. Weniger Quelltext -> weniger Fehler.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: TAudioVolume Komponente incl. System Mixer

  Alt 18. Mai 2018, 12:39
Zitat:
Du hast fünf Stellen, bei denen du ...Device.Activate(IID_IAudioSessionManager... aufrufst.
Werde ich machen auch wenn ich glaube das es nichts hilft
Aber wo du recht hast.. hast du recht.

EDIT:
Bringt nichts.. Aber egal denke es liegt an Win7 und der alten Version der AUDIOKSE.dll (Audio KS endpoint) oder was auch immer.

gruss

Geändert von EWeiss (19. Mai 2018 um 09:58 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: TAudioVolume Komponente incl. System Mixer

  Alt 20. Mai 2018, 16:11
Ein Nachtrag..

Zitat:
Du hast fünf Stellen, bei denen du ...Device.Activate(IID_IAudioSessionManager... aufrufst.
Nun das meine Anwendung nicht funktioniert hat den Grund das du mir im Code einen klassischen Deadlock eingebaut hast.
Nicht mit den vermehrten Aufrufen von Device.Activate(IID_IAudioSessionManager) die ich im übrigen entfernt habe
sondern wegen deinem Deadlock funktioniert sie nicht.

TThread.Synchronize du blocks meine Nachfolgenden GUI Threads die ich dann erstellen will\muss mit .wait.
Also bei solchen dingen wäre es angebracht TThread.Queue zu verwenden.

Ach was soll's funktioniert jetzt.

vorher.. siehe shot
nachher.. siehe shot

Wenn ich aus OTTB heraus mein Virtual Piano starte werden zwei neue Controls addiert.
Einmal "Over The Task Bar wenn nicht vorhanden" weil dieses beim klick auf das VPiano Icon Sound wiedergibt und dann das Piano selbst was beim Start ebenfalls Sound wiedergibt.

gruss

Geändert von EWeiss (31. Mai 2018 um 13:42 Uhr)
  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 23:27 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