You downloaded the source code for "dsd2pcm" which is a simple little
"filter" program, that takes a DSD data stream on stdin and converts
it to a PCM stream (352.8 kHz, either 16 or 24 bits) and writes it to
stdout. The code is split into three modules:

  (1) dsd2pcm

      This is where the 8:1 decimation magic happens. It's an
      implementation of a symmetric 96-taps FIR lowpass filter
      optimized for DSD inputs. If you feed this converter with
      DSD64 you get a PCM stream at 352.8 kHz and floating point
      samples. This module is independent and can be reused. 

  (2) noiseshape

      A module for applying generic noise shaping filters. It's
      used for the 16-bit output mode in "main" to preserve the
      dynamic range. This module is independent and can be reused.

  (3) main.cpp (file contains the main function and handles I/O)

The first two modules are pure C for maximum portability. In addition,
there are C++ wrapper headers for convenient use of these modules in
C++. The main application is a C++ application and makes use of the
C++ headers to access the functionality of the first two modules.


The code is released unter the simplified BSD license.
See LICENSE.txt for details.


Under Linux this program is easily compiled by typing

  g++ *.c *.cpp -O3 -o dsd2pcm

provided you have GCC installed. That's why I didn't bother writing
any makefiles. :-p


Known issues:
The current way of stdin/out handling is known to cause troubles on
Windows platforms because std::cin, std::cout are opened by default
in text mode.


Cheers!
Sebastian Gesemann
