![]() |
DirectSound multiple input
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 ? |
AW: DirectSound multiple input
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: ![]() Source in C mit Demo's dazu: ![]() 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 ! |
AW: DirectSound multiple input
... immer wieder interessant: Man sieht Bäume und versucht die umzuhauen, wo gar keine sind ...
Dazu dieser höchst lesenswerte Artikel: ![]() 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:
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: ![]() 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 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