dBpowerAMP is has advanced features
such as crossfade, because of this you will want to write your DLL
as a class based object system (the raw example does this), as crossfade
will create a 2nd instance of your input DLL whilst the other one is still
active, so global variables are a no no. When dBpowerAMP calls CreateANewDecoderObject
you can return a pointer to a new class you have created, this pointer is
supplied to all the other calls which require it.
When OutputWantsABlockOfData is called, you
should try to return as much data as you can, rather than small chunks (as
OutputWantsABlockOfData is only called 10 times per second, or so).
If your DLL streams data out (i.e. gives
dBpowerAMP data) then functions such as SetVolume, Pause, Unpause should
not be used (dBpowerAMP's own output DLLs handle this).
ShowAboutOptionsPage
should create a dialog
message with the style MB_TOPMOST, or a window with WM_TOPMOST style.
|