Click here to Skip to main content
13,293,173 members (36,714 online)
Click here to Skip to main content


22 bookmarked
Posted 13 Feb 2009

Multidevice ASIO output plugin for WinAMP

, 13 Feb 2009
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.


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


About the Author

Domagoj Šarić
Software Developer Little Endian Ltd.
Croatia Croatia
No Biography provided

You may also be interested in...

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.171207.1 | Last Updated 13 Feb 2009
Article Copyright 2009 by Domagoj Šarić
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid