View Single Post
Old 15th June 2015, 20:15   #21
Forum King
J_Darnley's Avatar
Join Date: Apr 2004
Location: Belgium, Europe
Posts: 3,625
Send a message via ICQ to J_Darnley
Shit! Fukken forum just vanished my reply. Well, time to re-type it.

Originally Posted by Dr.Flay View Post
BTW. Don't forget that many Winamp plugins are used with other programs, and that "the way of the Llama" has become a semi-standard in its own right.
I use various Winamp Visualisers, DSPs, general purpose, inputs and outputs, etc. with XMPlay. (The skins are ported, but it can make a convincing Winamp clone)
Winamp users may be in the minority but the support is big.
I envision the core visualization library to be portable meaning you can write a plugin for any player. (As I said previously, I already have a working filter for FFmpeg's libavfilter.) I don't intend to use any features that are not part of the C99 standard. Things that are, like multi-threading and assembly, will be optional. That being said I guess I am making similar assumptions as other software: two's complement, size of int, and signed shifts.

Some more implementation thoughts: everything will be optional.
  • Not on x86? Current assembly is optional and used though function pointers set at init.
  • No SSE2 or AVX2 support? It will fallback to MMX. However I intend to use some inline assembly for blending single pixels. The minimum feature set will be chosen at compile time. My future plans are to require SSE2 (saving countless emms instructions) for the DLL I provide much like the original plugin requires MMX(2).
  • No multi-threading on your platform? Optional and disabled at compile time.
  • A single core on your machine? 1 thread used.
  • Components like Texer will load bitmaps through a function pointer provided by the "plugin" layer.
  • Multi-threading will probably be done like that too, when/if I get around to it.
  • An options system will allow any software to interactively control the visualizer rather than original AVS's built-in Windows' dialogs.
Lots to do.

As for the Winamp plugin, it will be developed on a Windows 7 system with a Lynnfield Core i5 processor and designed with Winamp 5.666 in mind, which means I might inadvertently use some too-new features. I plan on supporting XP though (which I would be using right now but my old PC died). I probably won't consider other players while writing but if you can explain why, where, and exactly how I should make a change I will listen.

Originally Posted by DrO View Post
which ends up compromising improving how Winamp works with its own plug-ins as all of those programs stick on the plug-in api style from Winamp 2.x and then Winamp got complaints for not improving things or "breaking" external programs.
That must be the price of being so popular. I wonder whether you can tell me if there are already any large changes to the vis API in version 6?

Oh and I just realised that I have said that I did move the code onto GitLab and that I didn't provide a link. Here's the new location for anyone wondering:

Winamp ATF ReferenceMy cPro timer widgetMy port of AVS
Do NOT email me with general tech support questions.
J_Darnley is offline   Reply With Quote