Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Winmap FFT Daten ? (https://www.delphipraxis.net/138359-winmap-fft-daten.html)

Blamaster 8. Aug 2009 15:25


Winmap FFT Daten ?
 
Hi,

ich benötige eine ganz einfache Dll die mir die FFT Daten aus Winamp ausliest.

Dazu habe ich ein paar Fragen kann eine Dll doppelt eingebunden werden ?

Also auf der einen Seite in Winamp als Vis Plugin um an die FFT Daten zu kommen und andereseits in ein Delphiprogramm, welches dann mit einem Timer alle x ms die FFT Daten abholt ?

Wenn das möglich ist, gibt es dann eine Delphidokumentation zu der aktuellen Winamp Plugin Schnittstelle ?

mfg Yannic

Medium 8. Aug 2009 16:39

Re: Winmap FFT Daten ?
 
Eine DLL "doppelt" einbinden geht nicht. Du müsstest dann auf eine Form der IPC zurückgreifen, wobei sich hier wohl eine Mischung aus MMF und Messages empfiehlt. (Daten ins MMF, und via Message signalisieren dass neue Daten vollständig da sind.)

Die aktuellste Definition von VisPlugins dürftest du auf der WinAmp Seite selbst finden. Falls diese nur in C vorliegt sollte eine Übersetzung nicht allzu kompliziert ausfallen dürfen, da es ja idR nur eine Hand voll Funktionen sind - bei weitem nicht so ein Klopper wie z.B. die Direct3D Schnittstelle :)

Blamaster 10. Aug 2009 16:35

Re: Winmap FFT Daten ?
 
Hi,

könnte ich nicht im Grunde auch nur Messages nehmen ?

Die Dll könnte dann ja 2 Parameter übergeben.

Parameter 1: Zeiger auf Array "Index"
Parameter 2: Wert der ins Array soll.

Dann hätte man ja auch nicht das Problem, dass man noch verhindern müsste das Programm 2 die Daten aus dem Speicher holt wenn Programm 1 die Daten noch schreibt.

Ich habe jetzt recht lange gesucht, um was passendes für die Winamp dll zu finden. Das ganze war allerdings bis jetzt erfolglos.

Hat jemand da schonmal was passendes gefunden ?

mfg Yannic

wicht 10. Aug 2009 16:40

Re: Winmap FFT Daten ?
 
Zitat:

könnte ich nicht im Grunde auch nur Messages nehmen ?
Ja. Und wenn es ein paar mehr Daten werden, evtl. WM_COPYDATA anschauen. Oder halt einen MMF benutzen mit Events/WaitForSingleObject (glaube ich).

Zitat:

Ich habe jetzt recht lange gesucht, um was passendes für die Winamp dll zu finden. Das ganze war allerdings bis jetzt erfolglos.
Was exakt suchst du denn? Plugins für Winamp in Delphi, bzw. Doku dazu, gibt Google doch einiges aus?

Blamaster 10. Aug 2009 18:53

Re: Winmap FFT Daten ?
 
Hi,

Danke schonmal :)

Ich suche im prinzip nur ein Beispiel bzw. den Funktionsaufruf um an die FFT Daten zu kommen. Soweit ich weiß liefert Winamp die ja schön in einem Array.

mfg Yannic

Medium 11. Aug 2009 01:38

Re: Winmap FFT Daten ?
 
Was die Messages mit dem Pointer angeht: So wird's nicht gehen. Die DLL wird ja im Prozess von WinAmp gestartet, und hat somit den virtuellen Speicher mit WinAmp - nicht mit deinem Programm. Das heisst wenn du da jetzt einfach so einen Pointer rüber wirfst, zeigt der in deiner Prozessumgebung auf zufälligen Krams und wird höchstwahrscheinlich eine AV begünstigen.
Wenn nur via Messages, dann wie schon erwähnt mit WM_COPYDATA. Wobei ich ein MMF noch immer bevorzugen würde.

@FFT: Ich hab mal vor einiger Zeit mit einem mittlerweile veralteten Header gearbeitet. Dort war es dann so, dass man nich mit Funktionsaufrufen an WinAmp herangetreten ist, sondern man hat Pointer auf diverse Puffer übergeben - z.B. ein Array in das die FFT Daten sollen. Es gab da eine Hand voll Prozeduren die so eine DLL zu exportieren hatte, u.a. eine Init() die diese Dinge zu erledigen hat. Dann gibt's da noch eine "Render" Prozedur die von WinAmp dann aufgerufen wird, wenn es denkt dass sich dein Plugin mal neu zeichenen könnte. Das ist dann der Zeitpunkt zu dem du weisst dass deine Datenpuffer aktuell sind.
Ich vermute mal, dass sich an der grundlegenden Art und Weise nicht so arg viel getan hat.


PS: http://dev.winamp.com/plugin-developers. Da gibt's auch nen SDK. War jetzt nicht SO schwer zu finden :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 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