Old 28th July 2004, 07:24   #1
will
Nullsoft Newbie (Moderator)
 
will's Avatar
 
Join Date: Mar 2001
Location: Sheffield, England
Posts: 5,569
Winamp 5.04 SDK

The official Winamp 5.04 SDK
Download Zip: Mirror 1 Mirror 2 Mirror 3 (down)


Download Installer: Mirror 1 Mirror 2 Mirror 3 Mirror 4 (down)
Revision: #3 28/08/2004
Changes:
* Updated language sdk
* Updated wa_msgids.h

Changes:
* Bug fix in ml_lib.cpp
* Added some more wa_ipc.h documentation

Updated files only here


Note: this is a customised version of the Official 5.04 SDK but contains some extras useful for making more advanced plugins as well as better documentation of the APIs (this documentation is a work in progress so there will be updates made as the process goes on)

Note #2: The sdk contains the latest api messages for making new plugins for Winamp 5.x (including 5.05). This will still work with the older 2.x series of Winamp since the 5.x sdk is a continuation of the 2.x sdk. When run on a 2.x install you just won't be able to use the new api messages.

Package Contents:

\lang_b
\gen_ml
\winamp
\maki
\dsp_test
\out_raw
\in_raw
\gen_tray
\vis
\readme.txt
\jnetlib (installer only)
\ml_www (installer only)
\lang_b\lang_b.dsw
\lang_b\main.c
\lang_b\main.rc
\lang_b\resource.h
\lang_b\resource.hm
\lang_b\TIPS.TXT
\lang_b\main.aps
\lang_b\lang_b.dsp
\lang_b\How to Build a Language Pack.html (installer only)
\gen_ml\childwnd.h
\gen_ml\itemlist.cpp
\gen_ml\itemlist.h
\gen_ml\listview.cpp
\gen_ml\listview.h
\gen_ml\ml.h
\gen_ml\ml_ex
\gen_ml\ml_lib.cpp
\gen_ml\gaystring.cpp
\gen_ml\gaystring.h
\gen_ml\util
\gen_ml\ml_ex\ex.rc
\gen_ml\ml_ex\ml_ex.dsw
\gen_ml\ml_ex\resource.h
\gen_ml\ml_ex\view_ex.cpp
\gen_ml\ml_ex\ml_ex.dsp
\gen_ml\util\nde
\gen_ml\util\nde\nde-0.1.1.tar.gz
\winamp\in2.h
\winamp\gen.h
\winamp\dsp.h
\winamp\out.h
\winamp\wa_dlg.h
\winamp\ipc_pe.h
\winamp\wa_hotkeys.h
\winamp\wa_msgids.h (installer only)
\winamp\wa_ipc.h
\winamp\wa_api.txt (installer only)
\winamp\Command Line Options.html (installer only)
\maki\mc.exe
\maki\std.mi
\dsp_test\RESOURCE.H
\dsp_test\SCRIPT1.RC
\dsp_test\DSPECHO.NCB
\dsp_test\SCRIPT1.APS
\dsp_test\DSPECHO.C
\dsp_test\DSP.H
\dsp_test\DSPECHO.MDP
\dsp_test\DSPECHO.MAK
\out_raw\out_raw.c
\out_raw\MAIN.H
\out_raw\OUT.H
\out_raw\out_minisdk.dsw
\out_raw\CONFIG.C
\out_raw\readme.txt
\out_raw\out_minisdk.dsp
\in_raw\IN2.H
\in_raw\OUT.H
\in_raw\IN_TONE.MDP
\in_raw\IN_TONE.MAK
\in_raw\IN_TONE.C
\in_raw\IN_RAW.C
\in_raw\README.TXT
\gen_tray\GEN.H
\gen_tray\GEN_TRAY.DSP
\gen_tray\GEN_TRAY.DSW
\gen_tray\ICON1.ICO
\gen_tray\ICON2.ICO
\gen_tray\ICON3.ICO
\gen_tray\ICON4.ICO
\gen_tray\ICON5.ICO
\gen_tray\RESOURCE.H
\gen_tray\SCRIPT1.RC
\gen_tray\SYSTRAY.C
\gen_tray\TRAYCTL.C
\gen_tray\WINAMPCMD.H
\vis\vis_avs
\vis\vis_test
\vis\VIS.H
\vis\wa5vis.txt
\vis\vis_avs\apesdk
\vis\vis_avs\ns-eel
\vis\vis_avs\apesdk\ape.rc
\vis\vis_avs\apesdk\avstut00.avs
\vis\vis_avs\apesdk\avstut00.cpp
\vis\vis_avs\apesdk\avstut00.dsw
\vis\vis_avs\apesdk\avs_ape.h
\vis\vis_avs\apesdk\resource.h
\vis\vis_avs\apesdk\avstut00.dsp
\vis\vis_avs\ns-eel\megabuf.c
\vis\vis_avs\ns-eel\megabuf.h
\vis\vis_avs\ns-eel\ns-eel-addfuncs.h
\vis\vis_avs\ns-eel\ns-eel-int.h
\vis\vis_avs\ns-eel\ns-eel.h
\vis\vis_avs\ns-eel\nseel-caltab.c
\vis\vis_avs\ns-eel\nseel-cfunc.c
\vis\vis_avs\ns-eel\nseel-compiler.c
\vis\vis_avs\ns-eel\nseel-eval.c
\vis\vis_avs\ns-eel\nseel-lextab.c
\vis\vis_avs\ns-eel\nseel-yylex.c
\vis\vis_test\SVIS.MAK
\vis\vis_test\SVIS.MDP
\vis\vis_test\SVIS.DSP
\vis\vis_test\SVIS.DSW
\vis\vis_test\SVIS.C
\jnetlib\test.cpp
\jnetlib\asyncdns.h
\jnetlib\connection.cpp
\jnetlib\connection.h
\jnetlib\httpget.cpp
\jnetlib\httpget.h
\jnetlib\httpserv.cpp
\jnetlib\httpserv.h
\jnetlib\jnetlib.h
\jnetlib\listen.cpp
\jnetlib\listen.h
\jnetlib\Makefile
\jnetlib\netinc.h
\jnetlib\asyncdns.cpp
\jnetlib\test.dsp
\jnetlib\test.dsw
\jnetlib\testbnc.cpp
\jnetlib\util.cpp
\jnetlib\util.h
\jnetlib\webserver.h
\jnetlib\webserver.cpp
\ml_www\readme.txt
\ml_www\src
\ml_www\templates
\ml_www\images
\ml_www\src\res.rc
\ml_www\src\resource.h
\ml_www\src\wwwutil.cpp
\ml_www\src\wwwutil.h
\ml_www\src\pagegen.h
\ml_www\src\pagegen.cpp
\ml_www\src\ml_www.dsw
\ml_www\src\ml_www.dsp
\ml_www\src\ml_www.cpp
\ml_www\templates\070.css
\ml_www\images\starthere.png


[edited by DrO]

DO NOT PM ME WITH TECH SUPPORT QUESTIONS
will is offline  
Old 29th July 2004, 04:41   #2
shaneh
Major Dude
 
Join Date: Jan 2004
Location: Brisbane, Australia
Posts: 1,193
A couple more snippets that were omitted from the SDK... I think the LibraryGetWnd is particularly useful.

http://forums.winamp.com/showthread....hreadid=173940
shaneh is offline  
Old 30th July 2004, 21:24   #3
DrO
 
Join Date: Sep 2003
Posts: 27,880
Added the installer verison of the sdk (which tidies up things a bit for the file organisation). Some documentation updates have gone in, more coming soon (latest installer revision is shown in the first post and individual files will be available as well when updated so you don't have to download it all again if not wanted )

-daz
DrO is offline  
Old 20th August 2004, 08:15   #4
will
Nullsoft Newbie (Moderator)
 
will's Avatar
 
Join Date: Mar 2001
Location: Sheffield, England
Posts: 5,569
Currently there is a bug in the SDK!

As found by kichik, our heroic NSIS dev:
ml_lib.cpp, line 119 should be:
code:
if (strlen(value)>strlen(item->extended_info[x]+strlen(name)+1))
If you've been using any setExtendedInfo, then I suggest you make this change to your local copy of the SDK as soon as possible.

DO NOT PM ME WITH TECH SUPPORT QUESTIONS
will is offline  
Old 20th August 2004, 09:04   #5
CraigF
Passionately Apathetic
Administrator
 
CraigF's Avatar
 
Join Date: May 2000
Location: Hell
Posts: 5,436
prehaps a repackage is in order.

CraigF is offline  
Old 20th August 2004, 16:34   #6
DrO
 
Join Date: Sep 2003
Posts: 27,880
Quote:
Originally posted by CraigF
prehaps a repackage is in order.
yup, think so. installer version is being updated tonight with the fix

-daz
DrO is offline  
Old 24th August 2004, 07:27   #7
saivert
Banned
 
saivert's Avatar
 
Join Date: Jan 2001
Location: Norway
Posts: 927
All this is just fine! But what about docs on the new functions input-plugins must support, like:
winampGetExtendedFileInfo,
winampGetExtendedRead_close,
winampGetExtendedRead_getData,
winampGetExtendedRead_open,
winampSetExtendedFileInfo,
winampWriteExtendedFileInfo

There is currently no information on this.
winampGetExtendedRead_close, winampGetExtendedRead_getData & winampGetExtendedRead_open seems to be neccessary to support Format Conversion API. in_cdda.dll supports this for Winamp to be able to rip CD's.
I sincerely hope someone posts the API on this.
saivert is offline  
Old 24th August 2004, 09:51   #8
CraigF
Passionately Apathetic
Administrator
 
CraigF's Avatar
 
Join Date: May 2000
Location: Hell
Posts: 5,436
ah-hah, a good call indeed.

CraigF is offline  
Old 24th August 2004, 09:57   #9
saivert
Banned
 
saivert's Avatar
 
Join Date: Jan 2001
Location: Norway
Posts: 927
Quote:
Originally posted by CraigF
ah-hah, a good call indeed.
What the h*** do you mean with that???
Is it a trick question!?!

Let's be serious here people!!
saivert is offline  
Old 24th August 2004, 12:33   #10
CraigF
Passionately Apathetic
Administrator
 
CraigF's Avatar
 
Join Date: May 2000
Location: Hell
Posts: 5,436
as in, Yes, it should be added.

who's not being serious here?

CraigF is offline  
Old 28th August 2004, 10:36   #11
Danez
Junior Member
 
Danez's Avatar
 
Join Date: Oct 2003
Posts: 11
Does the SDK stayes the same for version 5.05?? or is a new one going to be released?
Danez is offline  
Old 28th August 2004, 10:58   #12
DrO
 
Join Date: Sep 2003
Posts: 27,880
Quote:
Originally posted by Danez
Does the SDK stayes the same for version 5.05?? or is a new one going to be released?
there are no new apis added since 5.05 is mainly a security update release.

updating thread appropriately now

-daz
DrO is offline  
Old 21st September 2004, 08:54   #13
saivert
Banned
 
saivert's Avatar
 
Join Date: Jan 2001
Location: Norway
Posts: 927
I have a pretty complete SDK for Borland Delphi (Pascal) which I'm going to upload. It will be available in a separate thread, so people can discuss it there.
saivert is offline  
Old 22nd October 2004, 14:16   #14
IronFist
Banned
 
Join Date: Oct 2004
Posts: 6
IRON JUSTICE

*removed*
IronFist is offline  
Old 24th November 2004, 02:14   #15
Logy
Senior Member
 
Logy's Avatar
 
Join Date: Jun 2004
Location: Terengganu, Malaysia, Asia, Earth
Posts: 302
it is any new to sdk for winamp 5.06.... or it just few update... bugs fixed or something like that...

The English suffix -logy denotes a field of study or academic discipline.
Logy is offline  
Old 24th November 2004, 07:45   #16
DrO
 
Join Date: Sep 2003
Posts: 27,880
there's no changes for 5.06

-daz
DrO is offline  
Old 28th November 2004, 19:35   #17
who
Junior Member
 
Join Date: Nov 2004
Posts: 9
Commands for EQ on/off?

I know I must be overlooking something. I have found
commands for external control of just about every
slider and button on the Winamp surface except for
EQ on/off, Auto, and preamp volume.

Have I missed something in the spec, or are these
not implemented?
who is offline  
Old 29th November 2004, 09:36   #18
Lord Darius
Senior Member
 
Lord Darius's Avatar
 
Join Date: Jul 2003
Posts: 248
Hey DrO, do you remember the gen_sel plugin you did with shaneh to demonstrate modification of context menu entries in the playlist and getting the currently selected files ?
Well... it doesn't compile with the latest version of the SDK
I don't have the code with me, but it seems a few IPC IDs changed since then.
Lord Darius is offline  
Old 29th November 2004, 11:25   #19
shaneh
Major Dude
 
Join Date: Jan 2004
Location: Brisbane, Australia
Posts: 1,193
If you are using the method I demonstrated, I recommend using the code I posted in that thread rather than the code in the .zip DrO posted, for reasons explained in a post in that thread. All it takes is pretty much adding that code to any gen_ plugin and calling the function.
shaneh is offline  
Old 29th November 2004, 11:39   #20
DrO
 
Join Date: Sep 2003
Posts: 27,880
hmm, that reminds me i need to put in the correct copy of the file for that example. i'll see if i can get the time to do it tonight between rebuilding the rest of my flat - got to love buying new furniture and then fitting it in

Lord Darius: which version of the sdk are you working with since the one i do is slightly restructured for the header files compared to the one Nullsoft put out (and anyone noticed they still are offering the 5.02 sdk on nsdn )

-daz
DrO is offline  
Old 30th November 2004, 09:04   #21
Lord Darius
Senior Member
 
Lord Darius's Avatar
 
Join Date: Jul 2003
Posts: 248
I'm working with the one available from this thread, the official one... i spose i should switch to the modified SDK ?

Oh, btw, good luck with the flat DrO
Lord Darius is offline  
Old 11th January 2005, 12:39   #22
saivert
Banned
 
saivert's Avatar
 
Join Date: Jan 2001
Location: Norway
Posts: 927
Winamp 5.04+ SDK for Delphi

The Winamp 5.04+ SDK for Delphi is available!


winamp504_sdk_for_delphi.exe (576kB)
saivert is offline  
Old 17th February 2005, 11:04   #23
saivert
Banned
 
saivert's Avatar
 
Join Date: Jan 2001
Location: Norway
Posts: 927
More work on Winamp SDK for Delphi

I'm going to make some more work on the Winamp SDK for Delphi so that people who are used to working in Delphi and with VCL feels more comfortable. There is a huge gap between the C/C++ world and Delphi world when it comes to how to do certain things.

The update will be released sometime the next month.
Feel free to PM me about changes you want checked in before I'm releasing it.
saivert is offline  
Old 19th March 2005, 14:12   #24
chris_d_smith
Senior Member
 
Join Date: Jan 2004
Posts: 161
Theres a some undocumented extended fields in the itemRecord struct in ml.h that Justin used in origninal version of mlwww (so i guess they're semi official). These fields can be retrieved by calling getRecordExtendedItem().

"TYPE": "0" for audio files, "1" for video files (this is mentioned in the ml gui).

"DBIDX": This returns the media library database identifier for the given item. You can use this to directly access a given item in the database at a later date (presumably much faster than running a normal query). Eg:
code:

// Get database index
char *p =getRecordExtendedItem(item,"DBIDX");

...

// Retrieve the item again
mlQueryStruct qs={0,};
qs.query=(char *)strtoul(p,NULL,10);
SendMessage(ml_hwnd,WM_ML_IPC,(WPARAM)&qs,ML_IPC_DB_RUNQUERY_INDEX);



I guess this also shows a working version of a ML_IPC_DB_RUNQUERY_INDEX call (which is fairly cryptically documented at the moment).
chris_d_smith is offline  
Old 19th March 2005, 14:18   #25
shaneh
Major Dude
 
Join Date: Jan 2004
Location: Brisbane, Australia
Posts: 1,193
I have made use of these fields in ActiveWinamp, you can see there use here:

http://cvs.sourceforge.net/viewcvs.p...pp?view=markup

http://cvs.sourceforge.net/viewcvs.p...pp?view=markup

Look at get_Item and CreateFromMLItem for some example usage.
shaneh is offline  
Old 19th March 2005, 14:24   #26
chris_d_smith
Senior Member
 
Join Date: Jan 2004
Posts: 161
There's a bunch of demo's in mlwww too, this one shows the DBIDX stuff:

http://cvs.sourceforge.net/viewcvs.p...pp?view=markup

and this one shows the TYPE field being used:

http://cvs.sourceforge.net/viewcvs.p...pp?view=markup

(see the processRequest() function)

chris_d_smith is offline  
Old 19th March 2005, 21:58   #27
saivert
Banned
 
saivert's Avatar
 
Join Date: Jan 2001
Location: Norway
Posts: 927
I'm going to release a new version of the Delphi version of Winamp SDK soon. This release will include an improved input plugin example with metadata get/set support (through the winampGetExtendedFileInfo, winampSetExtendedFileInfo and
winampWriteExtendedFileInfo functions). Still need some docs on these functions though:
  1. winampGetExtendedRead_close
  2. winampGetExtendedRead_getData
  3. winampGetExtendedRead_open
saivert is offline  
Old 20th March 2005, 19:48   #28
TazDevil
Senior Member
 
TazDevil's Avatar
 
Join Date: Nov 2003
Location: Cyprus
Posts: 359
About wa_hotkeys.h

The SDK only shows a way to add a hotkey to winamp, but is there a way to retreive the hotkey assigned by the plugin (gen_hotkeys) to the adding plugin ???

so that other plugins can incorporate the combinations to menus etc.

The combination could be returned as a scancode as saved in winamp.ini or as text

PLease if there is a way add it to the SDK
(or explain me how to do it ...)

NEW Multiple Output Plugin v1.5 | Download | outputs data to one or more audio/file output devices
Crystal Classic Skins v1.1 | Download | transparency effects for classic skins
TazDevil is offline  
Old 20th March 2005, 19:51   #29
DrO
 
Join Date: Sep 2003
Posts: 27,880
TazDevil: as you've tried to get it from the ini file, that's the only way i know off to do it. if there is a collision of hotkeys then the first one in the hotkey list will be the one that's activated i believe (and since the contents in the file are stored as the entries are shown then that should make it easy to work around)

-daz
DrO is offline  
Old 20th March 2005, 19:59   #30
TazDevil
Senior Member
 
TazDevil's Avatar
 
Join Date: Nov 2003
Location: Cyprus
Posts: 359
Dro - Thanks for the quick reply ...
Actually i hoped that the plugin should offer this feature, but anyway, i will stick to the work around until further notice

NEW Multiple Output Plugin v1.5 | Download | outputs data to one or more audio/file output devices
Crystal Classic Skins v1.1 | Download | transparency effects for classic skins
TazDevil is offline  
Old 21st March 2005, 23:50   #31
saivert
Banned
 
saivert's Avatar
 
Join Date: Jan 2001
Location: Norway
Posts: 927
The only plugin known to export the following functions is in_cdda.dll.

#1 winampGetExtendedRead_close
#2 winampGetExtendedRead_getData
#3 winampGetExtendedRead_open

And this is as far as I know to support the CD Ripping feature in Winamp 5. But why not extend this to other plugins as well. The functions above is simply another mechanism (again as far as I know) to provide the sound data to Winamp (instead of through the usual input plugin mechanism) and which is written to be used in fast extraction purpoes vs. playback only.

I have experimented with the IPC_CONVERTFILE message and found that this is true:

- Calling IPC_CONVERTFILE with "cd://d:,3" as the source filename starts ripping track 3 on a CD in drive D.
- Calling IPC_CONVERTFILE with any other source filename does nothing at all and tells me that the input plugin does not support the call.

So the conlusion is: If in_mp3.dll and any other input plugins started exporting the functions above, then we would have a system for converting between various formats.
saivert is offline  
Old 21st March 2005, 23:53   #32
DrO
 
Join Date: Sep 2003
Posts: 27,880
the transcoding api was only part implemented for cda and was never finished before Christophe left the team. and a bit more is needed than just adding in those exported functions from what i heard mentioned about it.

-daz
DrO is offline  
Old 25th March 2005, 18:07   #33
TazDevil
Senior Member
 
TazDevil's Avatar
 
Join Date: Nov 2003
Location: Cyprus
Posts: 359
output plugin ids

How can i safely get each output plugins ids..
Here is a quote from the out.h in the sdk
Quote:
// ids:
// waveout: 32
// gapless: 64
// xfade: 63
// disk: 33
// dsound: 38
// NULL: 65
// mm2: 69
when i get each output plugins's id it turns out sont like

disk: 1480728
dsound: 1462912
waveout: 1504144

While my plugin returns 1499872 whatever value i put as id.

Please reply i'm in a hurry...

NEW Multiple Output Plugin v1.5 | Download | outputs data to one or more audio/file output devices
Crystal Classic Skins v1.1 | Download | transparency effects for classic skins
TazDevil is offline  
Old 25th March 2005, 18:10   #34
DrO
 
Join Date: Sep 2003
Posts: 27,880
i don't believe that they apply now and the values are generated at run time (since they change everytime for me) or auto generated based on another value, etc.

-daz
DrO is offline  
Old 25th March 2005, 18:14   #35
TazDevil
Senior Member
 
TazDevil's Avatar
 
Join Date: Nov 2003
Location: Cyprus
Posts: 359
Actually they are always the same (have been until i installed the latest version of winamp i think !!!) so is there i way to find out who it is generated ?

NEW Multiple Output Plugin v1.5 | Download | outputs data to one or more audio/file output devices
Crystal Classic Skins v1.1 | Download | transparency effects for classic skins
TazDevil is offline  
Old 25th March 2005, 18:17   #36
DrO
 
Join Date: Sep 2003
Posts: 27,880
there's a good chance it's part of the changes made due to the output stacker fiasco (if you're running 5.08e). if so then there's nothing you can really do about it.

-daz
DrO is offline  
Old 26th March 2005, 00:42   #37
saivert
Banned
 
saivert's Avatar
 
Join Date: Jan 2001
Location: Norway
Posts: 927
Back to the CD Ripping stuff again:

About the Ripping engine? Isn't that part of Winamp's core (winamp.exe). I mean since the dialog resources for the Ripping status dialog is located in Winamp.exe, the Media Library must only be a frontend to this. So the CD Ripping feature in Winamp must consist of three components in order to work:

- Winamp.exe core functionality (IPC_CONVERTFILE API and friends) + ripping status window.
- in_cdda.dll CD-Audio ripping code
- Media Library (gen_ml.dll) frontend/user interface.

Am I right??

Why did Nullsoft decide to split it up this way? Beats me.
It's okay that the CD-Audio ripping code is located in in_cdda.dll since this is the CD plugin afterall, but why have two different sets of API's to do the same thing?
The first API set is the standard input plugin architecture (winampGetInputPlugin and structures) and the second is the winampGetExtendedRead_* function set.

It's no speed difference between the two actually. When playing a cd using in_cdda.dll in DAE mode and using a proper output plugin like the out_lame.dll to "send the audio" to a MP3 file, this doesn't seem to go slower than using the built in ripping in Winamp 5.x (which uses the winampGetExtendedRead_* function set).

What do you people (=Nullsoft) think?
saivert is offline  
Old 5th May 2005, 08:18   #38
DJ Egg
Techorator
Winamp & SHOUTcast Team
 
Join Date: Jun 2000
Posts: 35,767
Milkdrop Source Code released (May 4, 2005)

http://www.nullsoft.com/free/milkdrop/
http://www.nullsoft.com/free/milkdro....04_Source.zip


AVS Source Code released (May 23, 2005)

http://www.nullsoft.com/free/avs/
http://www.nullsoft.com/free/avs/avs_src.zip


Both released under BSD template license
DJ Egg is offline  
Old 31st August 2005, 04:12   #39
Logy
Senior Member
 
Logy's Avatar
 
Join Date: Jun 2004
Location: Terengganu, Malaysia, Asia, Earth
Posts: 302
just curiosity... can we expect a new sdk on winamp 5.1....

The English suffix -logy denotes a field of study or academic discipline.
Logy is offline  
Old 31st August 2005, 08:43   #40
CraigF
Passionately Apathetic
Administrator
 
CraigF's Avatar
 
Join Date: May 2000
Location: Hell
Posts: 5,436
yes, most definately. there have been a number of additions i believe.

CraigF is offline  
Closed Thread
Go Back   Winamp & SHOUTcast Forums > Developer Center > Winamp Development

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump