TAK SDK
Software Development Kit for TAK, (T)om's lossless (A)udio (K)ompressor.
Version: TAK SDK 2.3.3, 2022-06-30
Copyright 2007 by Thomas Becker, D-49080 Osnabrück.
All rights reserved.
About
The SDK is intended to enable other developers to use TAK's technology in their
own applications. It consists of a Dynamic Link Library for Microsoft Windows
(DLL) as well as header files for Borland Delphi (Pascal) and C.
This version is limited to decoding functions. Once it has stood the test of
time in practical use, an extended version with encoding functions will follow.
The library is compatible to the TAK versions 1.0 to 2.3.3.
Files
- The "Doc" directory contains the documentation. The main file
is "Sdk.html".
- The "Header" directory contains the header files for the
decoder library "tak_deco_lib.dll".
- The "Source" directory contains parts of TAK's source code.
Links and contact information
My homepage provides up-to-date information
about TAK, sadly only in German
at present.
If you want to contact me via e-mail, please keep in mind that I won't always
have the time to answer.
I am regularly active in the "Lossless Audio Compression" forum at
Hydrogenaudio;
therefore it is a good place to get information about TAK or ask questions.
Thanks to...
Many thanks for the energetic collaboration go to
- Holger Stenger, who tested parts of the library, created a *.lib and gave
good advice for interface improvements, and to
- Thomas Weiler (alias Silversight at Hydrogenaudio.org), who fortunately
took pleasure in translating my often "longish" wording from German to
English, and to
- Wieslaw Soltes (alias wisodev at Hydrogenaudio.org), who very quickly
wrote the first file decoding application based upon the SDK to verify
it's function.
Terms of use
License
This software is provided as FREEWARE, but only for private, non-commercial use.
It's also free for educational and scientific use and for use in charity and
humanitarian organisations.
The use of this software in a commercial application is only allowed with prior
written approval by the author (Thomas Becker).
Disclaimer of warranty
The software is provided "as is" without warranty of any kind. To the maximum
extent permitted by applicable law, the author further disclaims all warranties,
including without limitation any implied warranties of merchantability, fitness
for a particular purpose, and non-infringement. The entire risk arising out of
the use or performance of the product and documentation remains with recipient.
To the maximum extent permitted by applicable law, in no event shall the author
be liable for any consequential, incidental, direct, indirect, special,
punitive, or other damages whatsoever (including, without limitation, damages
for loss of business profits, business interruption, loss of business
information, or other pecuniary loss) arising out of this agreement or the use
of or inability to use the product, even if the author has been advised of
the possibility of such damages.
Distribution
The software may be freely distributed provided that it is not modified and
the original archive remains intact with all accompanying files, and provided
that no fee is charged (except for any reasonable fees necessary to cover
costs of distribution media).
It is permitted to distribute the binary libraries (DLLs) separated from the
rest of the SDK along with a compiled, non-commercial application, provided
that the libraries used remain unmodified, discrete files with their original
file names.
For the end user, it is recommended to refer to the official download
locations for up-to-date library modules.
History
V2.3.3 / 22-06-30
Interface changes:
- The pascal declaration of the functions tak_SSD_Create_FromFile,
tak_SSD_Create_FromFileW and tak_SSD_Create_FromStream has
changed. The parameter AOptions is now var instead of
const. This is technically equivalent for the 32-bit version (in
both cases a pointer would be passed) and required for the 64-bit
version.
V2.3.2 / 22-05-06
Resources:
- Long overdue update of the documentation.
Interface changes:
- New function tak_SSD_Create_FromFileW with support for unicode
file pathes.
- New function tak_SSD_GetMD5 to retrieve the MD5 checksum of the
audio data from the meta data.
- New function tak_SSD_GetStreamInfo_V22 to retrieve extended
information about the stream.
- New types TtakAnsiChar and TtakWideChar for 8 respectively
16 bit wide characters, among others used for ANSI (Windows codepage)
respectively unicode file pathes.
- Several new types, constants and a function to provide extended information
about multi channel audio formats.
- New cpu flags: tak_Cpu_SSE2 to tak_Cpu_AVX2.
Important: "tak_deco_lib.lib" has not yet been updated and therefore does
not contain definitions for the new functions. Sorry, i currently don't have the
right tools at hand (e.g. Visual Studio).
V1.1.1 / 9-03-11
Resources:
- German documentation removed.
- Source for TAK's container added.
Interface changes:
- New flag tak_ssd_opt_CheckMd5 in the structure TtakSSDOptions
to enable the MD5 check of the decoded audio data.
V1.1.0 / 8-12-21
Interface changes (Adaptions for TAK 1.1.0):
- Two constants for frame sizes (Ttak_str_FrameSizeTypes) removed:
tak_FrameSizeType_6144 and tak_FrameSizeType_12288.
V1.0.6 / 8-03-11
The library "tak_deco_lib.dll" is no longer part of the SDK.
V1.0.5 / 7-12-05
Internal modifications of the bundled "tak_deco_lib.dll"
(now V1.0.6):
New features to support TAK 1.0.3:
- The decoder had to be modified to guarantee error robustness (decoding
through errors) for files created by pipe encoding with the -ihs
(ignore header size) switch applied.
Interface changes (Adaptions for TAK 1.0.3):
- The tak_Preset_xxx-constants have been removed from the include
files. TAK's presets are now named purely numerical
(no more Turbo, Fast...).
V1.0.4 / 7-11-05
Internal modifications and fixes of the bundled "tak_deco_lib.dll"
(now V1.0.5):
New features to support TAK 1.0.2:
- Support for frame sizes of 512, 1024 and 2048 samples.
- Support for the additional preset INSANE.
Bug fixes:
- The decoder is expected to process any (damaged) data without any
problems. But i have found and corrected two cases, where the decoder
could crash. The chance for this was less than 1 : 1000 (for damaged
files only!).
- In one place i used an invalid flag combination in a call of Windows'
VirtualFree().
Interface changes (Adaptions for TAK 1.0.2):
- Added constants for the new frame sizes (Ttak_str_FrameSizeTypes):
tak_FrameSizeType_512 to tak_FrameSizeType_12288.
- Added constant for the new preset INSANE (TtakPresets):
tak_Preset_Insane.
Interface Compatibility:
- The decoder functions tak_SSD_GetStreamInfo and
tak_SSD_GetEncoderInfo may now return the new values for
the frame size (Ttak_str_FrameSizeTypes) and the encoder
preset/profile (TtakPresets) which have been introduced
with TAK 1.0.2 (see "Interface changes").
V1.0.3 / 7-04-28
Internal modifications and fixes of the bundled "tak_deco_lib.dll"
(now V1.0.4):
- The memory manager was not thread safe. Multithreaded applications using
more than one decoder instance simultaneously could crash. This was most
likely to happen with multi-core systems.
- Fix of a minor multithreading issue, which could cause suboptimal
performance and possibly crashes (in very rare cases). The fix itself
is not optimal performancewise; i will improve it when i have more time.
V1.0.2 / 7-04-14
Internal modifications and fixes of the "tak_deco_lib.dll"
(V1.0.2):
- The APEv2 tag reading functions are a bit more tolerant when reading
invalid tag headers not following the official APEv2 specification.
- tak_SSD_GetCurFrameBitRate() reported wrong values when decoding high
resolution audio.
V1.0.1 / 7-04-10
First stable release.