Coder Social home page Coder Social logo

dsf2flac's Introduction

dsf2flac - http://code.google.com/p/dsf2flac/

Introduction

A file conversion tool for translating dsf or dff dsd audio files into flac pcm audio files. I originally wrote this because I could not quite find any tool which did exactly what I wanted. I program quite a lot in java and I'm pretty good at matlab. Although I've very occasionally written things in C and CPP, this is really my first attempt at a full CPP program. I'm sure there are errors, hopefully none to horrible. I've tried to write things in a pretty versatile/clear way. It should be possible to expand the functionality to add other file types quite easily. If you want to try different convesion filters then it should be dead simple: just look in filters.cpp.

Compiling

I developed and tested this program on Linux x86_64 with GCC. It probably compile and works on x86 GCC too. Windows might be a bit more work. If you are building statically you'll need to link against these libs:

FLAC++
FLAC
boost_system
boost_timer
boost_filesystem
boost_chrono
id3
z
rt
ogg

However, only the following are required to build a dynamically linked library (which is probably the use case for most people):

FLAC++
boost_system
boost_timer
boost_filesystem
id3

Simply run ./autogen.sh if you have GNU autoconf and automake installed. If all goes well, it will generate and run configure which will execute successfully. If there are any errors such as missing development libraries, please fix them and re-run ./autogen.sh.

If everything went smoothly, you can now run make and src/dsf2flac should be generated. By default, the installation prefix is set to /usr/local, so sudo make install would install it in /usr/local/bin. However, the prefix can be overriden using the configure script after running autogen.sh. Simply run ./configure --prefix=/your/prefix/path. For more information, please see ./configure --help

Running

If you run dsf2flac -h you'll get a list of the options.

At the very simplest level you just need to run

dsf2flac -i some_audio_file.dsf

Or you may play file directly via DSD capable sound card

dsf2flac -d -i "some_audio_file.dsf" -o - 2>/dev/null | ffmpeg -i - -c pcm_s32le  -f alsa hw:1

Benchmark

I was quite pleased with the performance. For example, with the default filters (which are quite long) the program will convert and encode from DSD64 to 24bit 88200Hz flac at around 14x realtime on my ageing laptop (Intel Core2Duo P8600 @2.4GHz)

License

Copyright (c) 2013 by respective authors.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Acknowledgements

Many thanks to the following authors and projects whose work has greatly helped the development of this tool.

Sebastian Gesemann - dsd2pcm (http://code.google.com/p/dsd2pcm/)
SACD Ripper (http://code.google.com/p/sacd-ripper/)
Maxim V.Anisiutkin - foo_input_sacd (http://sourceforge.net/projects/sacddecoder/files/)
Vladislav Goncharov - foo_input_sacd_hq (http://vladgsound.wordpress.com)
Jesus R - www.sonore.us
Erik Gregg - slight mods and github posting
Misha Nasledov - autotools-based build mess to make it easier to build for the masses (http://github.com/mishan/)
Michaela Merz - piped output (http://blog.michaelamerz.com/wordpress/playing-dsd-files-without-mpd/)

dsf2flac's People

Contributors

azeria07 avatar denius avatar doctorjames avatar eduardosm avatar fabiololix avatar hank avatar markshep avatar mishan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dsf2flac's Issues

Problem with autogen.sh

Unfortunately the latest changes I made to the autogen.sh script broke the script for some systems. On affected systems, the configure command that is issued at the end of the script will not be called. I've already made a pull request to fix this blunder.

Building for ARM

I wanted to build this for ARM (Raspberry PI). The fist issue I ran into whas that I had to run ./autogen.sh with ./autogen.sh --with-boost-libdir=/usr/lib/arm-linux-gnueabihf so that the boost filesystem version could be found. I'm not sure if the script could determine the architecture automatically and add this option but would be nice.

Second issue is that there are calls to _mm_malloc method in the dst_init.c source file (I think this is an intel specific method). I commented out the if statement in the MemoryAllocate function and changed the MemoryFree function to use the arm friendly way to free(Array). The compiled file works fine, but I don't know what I may have broken.

Here's a snippet of the dst_init.c code and what I did to get this to make on ARM:

------------------------------------------------------------------

/* General function for allocating memory for array of any type */
static void *MemoryAllocate(int NrOfElements, int SizeOfElement) 
{
  void *Array;

/*  if ((Array = _mm_malloc(NrOfElements * SizeOfElement, 16)) == NULL) 
*  {
*    fprintf(stderr,"ERROR: not enough memory available!\n\n");
*  }
*/
  return Array;
}

static void MemoryFree(void *Array) 
{
/*  _mm_free(Array); */
  free(Array);
}
-------------------------------------------------------------------

[Question] Sample rate

Hi, this is a really great tool and a time saver, thanks!

I was going through the source code and the docs but I couldn't find anything about getting the output FLAC with a 96kHz (96000Hz) sample rate, just the ones mentioned here .

Is it possible?

Thanks

ubuntu 18.04.1 server make fails

Sorry didn't have libboost-timer-dev installed and it didn't give me a warning. All good now,

Making install in src
make[1]: Entering directory '/home/xxxxx/dsf2flac/src'
Making install in libdstdec
make[2]: Entering directory '/home/xxxxx/dsf2flac/src/libdstdec'
make[3]: Entering directory '/home/xxxxx/dsf2flac/src/libdstdec'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/xxxxxl/dsf2flac/src/libdstdec'
make[2]: Leaving directory '/home/xxxxx/dsf2flac/src/libdstdec'
make[2]: Entering directory '/home/xxxxx/dsf2flac/src'
/bin/bash ../libtool --tag=CXX --mode=link g++ -g -O2 -L/usr/lib -L/usr/lib/x86_64-linux-gnu -lboost_filesystem -lboost_system -o dsf2flac cmdline.o dsd_decimator.o dsdiff_file_reader.o dsd_sample_reader.o dsf_file_reader.o filters.o fstream_plus.o main.o tagConversion.o dop_packer.o -lid3 libdstdec/libdstdec.a -ltag -lFLAC -lFLAC++ -lFLAC
libtool: link: g++ -g -O2 -o dsf2flac cmdline.o dsd_decimator.o dsdiff_file_reader.o dsd_sample_reader.o dsf_file_reader.o filters.o fstream_plus.o main.o tagConversion.o dop_packer.o -L/usr/lib -L/usr/lib/x86_64-linux-gnu -lboost_filesystem -lboost_system /usr/lib/x86_64-linux-gnu/libid3.so libdstdec/libdstdec.a -ltag -lFLAC++ -lFLAC
main.o: In function setupTimer(double)': /usr/include/boost/timer/timer.hpp:62: undefined reference to boost::timer::cpu_timer::start()'
main.o: In function checkTimer(double, double)': /home/xxxxx/dsf2flac/src/main.cpp:79: undefined reference to boost::timer::cpu_timer::elapsed() const'
main.o: In function checkTimer(double, double)': /usr/include/boost/timer/timer.hpp:62: undefined reference to boost::timer::cpu_timer::start()'
main.o: In function do_pcm_conversion(DsdSampleReader*, int, int, bool, double, boost::filesystem::path, boost::filesystem::path, bool)': /usr/include/boost/timer/timer.hpp:62: undefined reference to boost::timer::cpu_timer::start()'
main.o: In function do_dop_conversion(DsdSampleReader*, boost::filesystem::path, boost::filesystem::path)': /usr/include/boost/timer/timer.hpp:62: undefined reference to boost::timer::cpu_timer::start()'
main.o: In function _GLOBAL__sub_I__Z10setupTimerd': /usr/include/boost/timer/timer.hpp:62: undefined reference to boost::timer::cpu_timer::start()'
collect2: error: ld returned 1 exit status
Makefile:448: recipe for target 'dsf2flac' failed
make[2]: *** [dsf2flac] Error 1
make[2]: Leaving directory '/home/xxxxx/dsf2flac/src'
Makefile:502: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/xxxxx/dsf2flac/src'
Makefile:414: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

help with "incompatible sample rate combination"

My first time compiling and running dsf2flac (and, thank you for your effort in writing it!)

I am getting

$ dsf2flac -i 04.Pierrot.dsf 
dsf2flac 0.1Rev54

Input file
	04.Pierrot.dsf
Output format
	SampleRate: 88200Hz
	Depth: 24bit
	Dither: true
	Scale: 4.0dB
Sorry, incompatible sample rate combination

I do not know (virtually) anything about DSD, and would appreciate your help. Thank you!

Can't completely do make on Ubuntu 20.04

vic@HP:~/dsf2flac$ master sudo ./autogen.sh 
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
Generating configuration files for dsf2flac, please wait ...
Ignore all non-fatal warnings ...

configure.ac:10: installing './ar-lib'
configure.ac:10: installing './compile'
configure.ac:11: installing './config.guess'
configure.ac:11: installing './config.sub'
configure.ac:8: installing './install-sh'
configure.ac:8: installing './missing'
src/Makefile.am: installing './depcomp'
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:10: installing './compile'
configure.ac:8: installing './missing'
src/Makefile.am: installing './depcomp'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking dependency style of g++... (cached) gcc3
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking whether make sets $(MAKE)... (cached) yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for ANSI C header files... (cached) yes
checking id3.h usability... yes
checking id3.h presence... yes
checking for id3.h... yes
checking for ID3Tag_New in -lid3... yes
checking whether pkg-config knows about taglib >= 1.6... ok
checking whether pkg-config knows about flac >= 1.3... ok
checking whether pkg-config knows about flac++ >= 1.3... ok
checking for boostlib >= 1.48... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... yes
checking whether the Boost::System library is available... yes
checking for exit in -lboost_system... yes
checking whether the Boost::Timer library is available... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking for memory.h... (cached) yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for stdbool.h that conforms to C99... no
checking for _Bool... no
checking for int16_t... yes
checking for int32_t... yes
checking for size_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint8_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for working strtod... yes
checking for memset... yes
checking for pow... yes
checking for strtol... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/libdstdec/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
sucesses
vic@HP:~/dsf2flac$ master sudo make
make  all-recursive
make[1]: вход в каталог «/home/vic/dsf2flac»
Making all in src
make[2]: вход в каталог «/home/vic/dsf2flac/src»
Making all in libdstdec
make[3]: вход в каталог «/home/vic/dsf2flac/src/libdstdec»
gcc -DHAVE_CONFIG_H -I. -I../..   -I/usr/include/taglib   -fpermissive -g -O2 -I/usr/include/taglib   -MT libdstdec_a-ccp_calc.o -MD -MP -MF .deps/libdstdec_a-ccp_calc.Tpo -c -o libdstdec_a-ccp_calc.o `test -f 'ccp_calc.c' || echo './'`ccp_calc.c
cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C
mv -f .deps/libdstdec_a-ccp_calc.Tpo .deps/libdstdec_a-ccp_calc.Po
gcc -DHAVE_CONFIG_H -I. -I../..   -I/usr/include/taglib   -fpermissive -g -O2 -I/usr/include/taglib   -MT libdstdec_a-dst_ac.o -MD -MP -MF .deps/libdstdec_a-dst_ac.Tpo -c -o libdstdec_a-dst_ac.o `test -f 'dst_ac.c' || echo './'`dst_ac.c
cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C
mv -f .deps/libdstdec_a-dst_ac.Tpo .deps/libdstdec_a-dst_ac.Po
gcc -DHAVE_CONFIG_H -I. -I../..   -I/usr/include/taglib   -fpermissive -g -O2 -I/usr/include/taglib   -MT libdstdec_a-dst_data.o -MD -MP -MF .deps/libdstdec_a-dst_data.Tpo -c -o libdstdec_a-dst_data.o `test -f 'dst_data.c' || echo './'`dst_data.c
cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C
mv -f .deps/libdstdec_a-dst_data.Tpo .deps/libdstdec_a-dst_data.Po
gcc -DHAVE_CONFIG_H -I. -I../..   -I/usr/include/taglib   -fpermissive -g -O2 -I/usr/include/taglib   -MT libdstdec_a-dst_fram.o -MD -MP -MF .deps/libdstdec_a-dst_fram.Tpo -c -o libdstdec_a-dst_fram.o `test -f 'dst_fram.c' || echo './'`dst_fram.c
cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C
mv -f .deps/libdstdec_a-dst_fram.Tpo .deps/libdstdec_a-dst_fram.Po
gcc -DHAVE_CONFIG_H -I. -I../..   -I/usr/include/taglib   -fpermissive -g -O2 -I/usr/include/taglib   -MT libdstdec_a-dst_init.o -MD -MP -MF .deps/libdstdec_a-dst_init.Tpo -c -o libdstdec_a-dst_init.o `test -f 'dst_init.c' || echo './'`dst_init.c
cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C
mv -f .deps/libdstdec_a-dst_init.Tpo .deps/libdstdec_a-dst_init.Po
gcc -DHAVE_CONFIG_H -I. -I../..   -I/usr/include/taglib   -fpermissive -g -O2 -I/usr/include/taglib   -MT libdstdec_a-unpack_dst.o -MD -MP -MF .deps/libdstdec_a-unpack_dst.Tpo -c -o libdstdec_a-unpack_dst.o `test -f 'unpack_dst.c' || echo './'`unpack_dst.c
cc1: warning: command line option ‘-fpermissive’ is valid for C++/ObjC++ but not for C
mv -f .deps/libdstdec_a-unpack_dst.Tpo .deps/libdstdec_a-unpack_dst.Po
rm -f libdstdec.a
ar cru libdstdec.a libdstdec_a-ccp_calc.o libdstdec_a-dst_ac.o libdstdec_a-dst_data.o libdstdec_a-dst_fram.o libdstdec_a-dst_init.o libdstdec_a-unpack_dst.o 
ar: модификатор «u» игнорируется, так как по умолчанию используется «D» (смотрите «U»)
ranlib libdstdec.a
make[3]: выход из каталога «/home/vic/dsf2flac/src/libdstdec»
make[3]: вход в каталог «/home/vic/dsf2flac/src»
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT cmdline.o -MD -MP -MF .deps/cmdline.Tpo -c -o cmdline.o cmdline.cpp
mv -f .deps/cmdline.Tpo .deps/cmdline.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT dsd_decimator.o -MD -MP -MF .deps/dsd_decimator.Tpo -c -o dsd_decimator.o dsd_decimator.cpp
mv -f .deps/dsd_decimator.Tpo .deps/dsd_decimator.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT dsdiff_file_reader.o -MD -MP -MF .deps/dsdiff_file_reader.Tpo -c -o dsdiff_file_reader.o dsdiff_file_reader.cpp
mv -f .deps/dsdiff_file_reader.Tpo .deps/dsdiff_file_reader.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT dsd_sample_reader.o -MD -MP -MF .deps/dsd_sample_reader.Tpo -c -o dsd_sample_reader.o dsd_sample_reader.cpp
mv -f .deps/dsd_sample_reader.Tpo .deps/dsd_sample_reader.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT dsf_file_reader.o -MD -MP -MF .deps/dsf_file_reader.Tpo -c -o dsf_file_reader.o dsf_file_reader.cpp
mv -f .deps/dsf_file_reader.Tpo .deps/dsf_file_reader.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT filters.o -MD -MP -MF .deps/filters.Tpo -c -o filters.o filters.cpp
mv -f .deps/filters.Tpo .deps/filters.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT fstream_plus.o -MD -MP -MF .deps/fstream_plus.Tpo -c -o fstream_plus.o fstream_plus.cpp
mv -f .deps/fstream_plus.Tpo .deps/fstream_plus.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp
mv -f .deps/main.Tpo .deps/main.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT tagConversion.o -MD -MP -MF .deps/tagConversion.Tpo -c -o tagConversion.o tagConversion.cpp
mv -f .deps/tagConversion.Tpo .deps/tagConversion.Po
g++ -DHAVE_CONFIG_H -I. -I..   -I/usr/include -I/usr/include -O3 -Wall -I/usr/include/taglib    -g -O2 -MT dop_packer.o -MD -MP -MF .deps/dop_packer.Tpo -c -o dop_packer.o dop_packer.cpp
mv -f .deps/dop_packer.Tpo .deps/dop_packer.Po
/bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 -L/usr/lib -L/usr/lib/x86_64-linux-gnu  -lboost_filesystem -lboost_system   -o dsf2flac cmdline.o dsd_decimator.o dsdiff_file_reader.o dsd_sample_reader.o dsf_file_reader.o filters.o fstream_plus.o main.o tagConversion.o dop_packer.o   -lid3 libdstdec/libdstdec.a -ltag -lFLAC -lFLAC++ -lFLAC
libtool: link: g++ -g -O2 -o dsf2flac cmdline.o dsd_decimator.o dsdiff_file_reader.o dsd_sample_reader.o dsf_file_reader.o filters.o fstream_plus.o main.o tagConversion.o dop_packer.o  -L/usr/lib -L/usr/lib/x86_64-linux-gnu -lboost_filesystem -lboost_system /usr/lib/x86_64-linux-gnu/libid3.so libdstdec/libdstdec.a -ltag -lFLAC++ -lFLAC
/usr/bin/ld: main.o: in function `boost::timer::cpu_timer::cpu_timer()':
/usr/include/boost/timer/timer.hpp:61: undefined reference to `boost::timer::cpu_timer::start()'
/usr/bin/ld: main.o: in function `checkTimer(double, double)':
/home/vic/dsf2flac/src/main.cpp:79: undefined reference to `boost::timer::cpu_timer::elapsed() const'
/usr/bin/ld: main.o: in function `boost::timer::cpu_timer::cpu_timer()':
/usr/include/boost/timer/timer.hpp:61: undefined reference to `boost::timer::cpu_timer::start()'
/usr/bin/ld: /usr/include/boost/timer/timer.hpp:61: undefined reference to `boost::timer::cpu_timer::start()'
/usr/bin/ld: /usr/include/boost/timer/timer.hpp:61: undefined reference to `boost::timer::cpu_timer::start()'
/usr/bin/ld: /usr/include/boost/timer/timer.hpp:61: undefined reference to `boost::timer::cpu_timer::start()'
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:455: dsf2flac] Ошибка 1
make[3]: выход из каталога «/home/vic/dsf2flac/src»
make[2]: *** [Makefile:514: all-recursive] Ошибка 1
make[2]: выход из каталога «/home/vic/dsf2flac/src»
make[1]: *** [Makefile:414: all-recursive] Ошибка 1
make[1]: выход из каталога «/home/vic/dsf2flac»
make: *** [Makefile:346: all] Ошибка 2
vic@HP:~/dsf2flac$ master 

Not working with boost-libs 1.79

Getting the following error...
dsf2flac: error while loading shared libraries: libboost_filesystem.so.1.78.0: cannot open shared object file: No such file or directory

Temporary workaround is to downgrade the library, but would like to see this properly resolved!

Incompatible sample rate combination

I just installed on Ubuntu 19.10. First, thanks for the autogen.sh! There were a ton of dependencies I had to pull with apt-get install; but ultimately autogen + make + sudo make install worked a treat. Brilliant.

So I try to convert a file, and I get this error:

$ dsf2flac -i 01_Smoke-Mirrors_Yarlung-Records_YAR87598DSD_2ch256.dsf
dsf2flac 0.1Rev54

Input file
01_Smoke-Mirrors_Yarlung-Records_YAR87598DSD_2ch256.dsf
Output format
SampleRate: 88200Hz
Depth: 24bit
Dither: true
Scale: 4.0dB
Sorry, incompatible sample rate combination

What's it mean? How do I fix?

Linux build fail

With GCC 6.1

dsd_decimator.cpp:273:42: error : call of overloaded ‘div(dsf2flac_uint32&, dsf2flac_uint32)’ is ambiguous
  div_t d = div(bufferLen,getNumChannels());
                                          ^
In file included from /usr/include/c++/6.1.1/cstdlib:75:0,
                 from /usr/include/c++/6.1.1/stdlib.h:36,
                 from /usr/include/id3/globals.h:37,
                 from /usr/include/id3/id3lib_frame.h:31,
                 from /usr/include/id3/tag.h:32,
                 from dsd_sample_reader.h:54,
                 from dsd_decimator.h:55,
                 from dsd_decimator.cpp:50:
/usr/include/stdlib.h:788:14: note : candidate: div_t div(int, int)
 extern div_t div (int __numer, int __denom)
              ^~~
In file included from /usr/include/c++/6.1.1/stdlib.h:36:0,
                 from /usr/include/id3/globals.h:37,
                 from /usr/include/id3/id3lib_frame.h:31,
                 from /usr/include/id3/tag.h:32,
                 from dsd_sample_reader.h:54,
                 from dsd_decimator.h:55,
                 from dsd_decimator.cpp:50:
/usr/include/c++/6.1.1/cstdlib:233:3: note : candidate: lldiv_t __gnu_cxx::div(long long int, long long int)
   div(long long __n, long long __d)
   ^~~
/usr/include/c++/6.1.1/cstdlib:175:3: note : candidate: ldiv_t std::div(long int, long int)
   div(long __i, long __j) { return ldiv(__i, __j); }
   ^~~

I cannot get this to work in Linux Mint???

Hi Hank,

Although it seems rare to need a program for this nowadays. I had a request from a Linux Mint member for a program or app to do this. So, I researched a lot and found your application.

I found archive files in the link below which I tried all of them, and none of them would work "dsf2flac: command not found".

So I went through the effort of compiling this in my Linux Mint 18.2 KDE system based on Ubuntu 16.04, and after successfully compiling, it still would not work and I got the same message?

Also I cannot find any of these type of files to test, do you know where I can download some?

Can you help with this?

Regards,
Phil
phd21

Sorry, only one bit data is supported

I have recently re-built this application and I am getting this error:
dsf2flac 0.1Rev54

Error opening DSDFF file!
Sorry, only one bit data is supported

I'm at a loss to understand where this is coming from since I am converting a file that I have previously converted with this application that was built on the same hardware, but I have since rebuilt my system including this application and now I can't get it to work. I'm guessing there is some issue with a dependency. Maybe an update in a dependency broke something, but the build seems to go fine. I am getting this error on all the files I've tried so far.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.