Click here to Skip to main content
15,885,216 members
Articles / Desktop Programming / WTL

Multidevice ASIO output plugin for WinAMP

Rate me:
Please Sign up or sign in to vote.
4.80/5 (9 votes)
13 Feb 2009CDDL27 min read 48.1K   728   23  
A tiny WinAMP output DLL that uses a C++ replacement of the official ASIO SDK that supports multiple ASIO devices.
// Modified without permission by Domagoj �ari� (dsaritz at gmail . com ).
// 02/10/09

Change list:
- alloc.cpp � changed it to use Windows XP�s low fragmentation heap and call GetProcessHeap() only once.
- file.cpp - refactored it to no longer require manual initialization of STD handles via _init_file().
- initterm.cpp � refactored it to no longer use a dynamically allocated at-exit function pointer list as it still used a fixed size for the list; replaced the two index variables with a single pointer.
- crt0t*.cpp and libct.h � made the changes required by the changes to the above two files.
- math.cpp � added the ldiv() function.
- memory.cpp � added a (naive �implementation�) of _resetstkoflw() required by alloca(); added the __sse2_available DWORD required by Microsoft asm memory routines; disabled the original �manual� memory routines in favor of Microsoft�s asm optimized ones (this slightly increases the binary but I consider it well worth it).
- newdel.cpp � minor code reuse refactoring.
- sprintf.cpp � added minor sanity checks and the wide version of _snprintf.
- string.cpp � added the _String_base::_Xlen(), _String_base::_Xran(), _String_base::_Xinvarg() functions required/used by Dinkumware�s std::string implementation to report/handle errors.
- added memory_s.h and string_s.h with implementations for some of Microsofts �secure� CRT functions.
- .vcproj - converted to a VC9.0 project, tweaked optimization switches and added MASM support and Microsoft P4 memory routines .obj files and asm sources.
- throughout the files:
  - added __declspec(selectany) specifiers to aid the linker in removing unused objects.
  - added warning disabling pragma directives.
  - added #pragma function() directives to enable compiling with �Enable Intrinsic Functions� set to �On�.
  - did various minor stylistic changes and refactorings.

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Common Development and Distribution License (CDDL)


Written By
Software Developer Little Endian Ltd.
Croatia Croatia
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions