AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DirectSound multiple input

Ein Thema von TERWI · begonnen am 2. Sep 2011 · letzter Beitrag vom 3. Sep 2011
Antwort Antwort
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
378 Beiträge
 
Delphi 11 Alexandria
 
#1

DirectSound multiple input

  Alt 2. Sep 2011, 12:49
Bin gerade (wieder) dabei, meine kleine aber feine DVB-App ein wenig aufzubohren.

Neben normalem TV sehen & hören möchte ich gerne weitere Videoquellen in PIPs anzeigen.
Z. B. ein 2. DVB-Programm, eine WEB-(Baby-) CAM, ein File abspielen, ...
Das klappt so weit schon ganz gut in Verbindung mit der GMF-Bridge auf der Videoseite, in dem ich mehere Inputs des VMR-9 belege und das IVideowindow passend einstelle.

Nur hätte ich auch gerne mehrere Töne gleichzeitig - z.B. neben dem abendlichen Krimi auch den Ton der Baby-Cam.
Oder mal zwischendurch einen andern Sound (z.B. DVB-Radio) mal 'aufziehen'.

Wie bekommt man das an dem vermeintlich einzigem Eingang des DirectSound-Devices geregelt ?

Einfach nur umschalten ohne jedes mal neu mit einem anderen Audio-Source zu connecten wäre schon hilfreich.
Schöner natürlich, wenn man umblenden oder auch div Sounds gleichzeitig in verschiedenen Lautstärken einstellen kann.
Auf spezielle Features wie Klangeinstellung, Balance o.ä. kann ich verzichten.

Jemand ne Idee, wie man so etwas relativ einfach bewerkstelligen kann ?

Geändert von TERWI ( 2. Sep 2011 um 16:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
378 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DirectSound multiple input

  Alt 2. Sep 2011, 17:43
Zur Info & wissenswertes hier noch zur Info:

Ich arbeite mit DirectShow-Graphen und -Filtern.

Da man nicht mehrere grundsätzlich verschiedene Inputs (DVB, File, CAM, WEB-Stream, ...) 'problemfrei' zu einem AV-Out (mit PIPs) verbinden kann, verwende ich die GMF-Bridge.
... ist hier so gut wie nicht bekannt / präsent ! ( Warum nicht ... ? )
Lesenswertes & wichtiges zum 'warum und wieso' hier: http://www.gdcl.co.uk/articles/MultipleGraphs.pdf
Source in C mit Demo's dazu: http://www.gdcl.co.uk/gmfbridge/GMFBridge.zip
Aktueller Stand: June 2010 - Build 1.0.0.19
... ich denke / hoffe Geraint Davies arbeit immer noch fleissig dran (man sieht es in anderen Foren)

Delphi-Adaptionen gibt es es logo auch dazu - ich arbeite gerade an einer Eierlegenden Wollmichsau.

Mit dem VMR-9 oder auch EVR kann man sehr schön & praktisch Video-Signale (bis zu 16) in einzeln definierten Fenstern auf dem VideoWindow auch mit unterschiedlicher Transparenz darstellen.
Mit ein wenig Fantasie lassen sich die tollsten Fade-/Flip-/-Ins/-Outs kreieren.

Aber was ist mit dem Ton ????
Dazu hätte ich zumindestens ansatzweise gerne die gleiche Funktionalität (Blenden) !
Habe dazu schon div. kleine Ewigkeiten im WWW recherchiert, aber nix gescheites gefunden....
Bin ich zu blöd zum Suchen oder gibt's da wirklich nix ?

Schaue ich mir mal die Out-Pins der Audio-Decoder in den SINK-Graphen an, sehe ich i. d. R. immer die gleichen Daten (hier i.d.R. AC3-Filter):

majortype = MEDIATYPE_Audio
subtype = MEDIASUBTYPE_PCM
formattype = FORMAT_WaveFormatEx

Definition WaveFormatEx:
wFormatTag = 1 (WAVE_FORMAT_PCM)
nChannels = 2
nSamplesPerSec = 48000
nAvgBytesPerSec = 19200
nBlockAlign = 4
wBitsPerSample = 16
cbSize = 0

Muss man sich das wie in anderen Foren gesehen in/aus Arrays 'live' selber zusammenrechnen ?
Gibt's da 'schmalen' & effizienten Source - meinetwegen auch in C ?

Hat jemand sich schon mal nen Kopf über einen entsprechenden DS-Filter gemacht, welcher wie der VMR-9/EVR (oder umgekehrt wie InF-/SmartTee) dynamisch entsprechende Audio-Input's zur Verfügung stellt ?

Ich bin doch bestimmt nicht der erste Mensch auf diesem Planeten, dem das 'aufstößt', bzw. der so was haben will / braucht .....

Oder ? ... nur zu blind zum suchen ?

HELP please !
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
378 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: DirectSound multiple input

  Alt 3. Sep 2011, 14:26
... immer wieder interessant: Man sieht Bäume und versucht die umzuhauen, wo gar keine sind ...

Dazu dieser höchst lesenswerte Artikel: http://edn.embarcadero.com/article/20941
11 Jahre alt... immer noch in den Grundsätzen aktuell.

Meine irrige Annahme war bisher, das ein Sound-Renderer immer nur einen Stream verarbeitet.
Das ist auch in so weit richtig, als das dieses COM-Object jeweils nur einen Puffer bereitstellt, DirectSound jedoch jede Menge davon verarbeiten kann.
Zitat aus dem o.g. Artikel unter 'How Direct Sound Works':

Zitat:
DirectSound works off sound buffers. The secondary sound buffer object is were it all starts. It represents a single sound, whether it be a short sound that fits into the block of memory or a long sound that has to be streamed into the buffer. The buffer stores the sound sample in the form of pulse code modulation (PCM) data. You can have as many secondary sound buffer's as you like, and when you play them DirectSound will "mix" them on to the primary sound buffer, performing any conversions like -- converting the sample rate and adding 3D special effects. From the primary buffer the PCM data is sent to the output device.

Like all of the DirectX components DirectSound tries to use as much hardware acceleration as possible. Whenever possible it places as many buffers as it can in hardware memory and uses hardware mixing if available. If this is not possible then DirectSound will use hardware emulation to get the task done. The figure below illustrates this process.
Irgendwie logisch ... denn:
Verschiedene Media-Player mit verschiedenen Quellen gestartet gibt ein herrliches Sound-Kuddel-Muddel !
Schaut man sich - sofern möglich - die jeweiligen Graphen an (oder bastelt sich 'on the fly' mit z.B. Monogram Graphstudio selber welche), hat jeder so ein DirectSoundDevice drin.
Sprich: erzeugt jeweils einen Puffer für DirectSound.

1. Fazit:

In meinem Anwendungsfall 'knalle' ich halt so viele Audio-Renderer in den Ausgabe-Graph wie benötigt.
Man/ich muss dann halt nür dafür sorgen, das der/die Sounds im Audio-Pegel passend eingestellt sind.

Das DSPack hält für die Delphi-Freaks in den Demo's bereits einen passenden DS-Filter bereit -> DirectSound Renderer.
Dort hat man elementar den Zugriff auf Volume & Balance.

2. Fazit:

Normalerweise ist die 'Sache' damit erledigt.
Wenn man es 'schön' machen will, wäre so was wie ein Wrapper in Anlehnung zum VMR-9 / EVR mit seinen 'multiple-Inputs' eine feine Sache:
- ein Filter mit definierbarer (oder automatischer) Anzahl von Inputs (Audio, alle Formate)
- Zentrale Verwaltung der Sounds zu VOL & BAL
- Switching / Blending verfügbarer / aktiver Eingänge
- uws. etc. pp. was einem sonst noch so einfällt....

Hier gibts es auch noch was lesenswertes dazu: http://www.dsp-worx.de/?n=14
Allerdings habe ich den Sinn dieses FIlters noch nicht wirklich verstanden. Nocht nicht ...
Basiert auf dem 'DirectSound Renderer' des DSPack's - ist ja auch der gleiche Autor.

Hat jemand schon mal so was 'gebastelt', ist dabei, hat interesse was zu proggen ?
Ich bin dabei.
  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 19:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz