Apple Lossless Audio Codec ためしに FreeBSD でビルドしてみたら makefile を少し修正するだけでビルドできてしまってつまらなかった。 http://alac.macosforge.org/
SVNリポジトリからチェックアウト
/Users/mtakagi/Desktop% svn co http://svn.macosforge.org/repository/alac/trunk alac
試しに FreeBSD で make
[mtakagi@freebsd-5850 ~]# ls -a /home/mtakagi/
. .cshrc .lesshst .login_conf .mailrc .rhosts alac
.. .history .login .mail_aliases .profile .shrc
[mtakagi@freebsd-5850 ~]# ls -a /home/mtakagi/alac/
. .svn ReadMe.txt
.. ALACMagicCookieDescription.txt codec
.DS_Store LICENSE convert-utility
[mtakagi@freebsd-5850 ~]# cd /home/mtakagi/alac/
[mtakagi@freebsd-5850 alac]# cd convert-utility/
[mtakagi@freebsd-5850 convert-utility]# make
g++ -I ../codec -g -O3 -c main.cpp
In file included from ../codec/ALACEncoder.h:29,
from main.cpp:26:
../codec/ALACAudioTypes.h:64:32: warning: multi-character character constant
../codec/ALACAudioTypes.h:65:28: warning: multi-character character constant
../codec/ALACAudioTypes.h:154:22: warning: multi-character character constant
../codec/ALACAudioTypes.h:182:26: warning: multi-character character constant
In file included from main.cpp:31:
CAFFileALAC.h:69:33: warning: multi-character character constant
CAFFileALAC.h:75:40: warning: multi-character character constant
CAFFileALAC.h:76:34: warning: multi-character character constant
CAFFileALAC.h:77:37: warning: multi-character character constant
CAFFileALAC.h:78:31: warning: multi-character character constant
CAFFileALAC.h:79:35: warning: multi-character character constant
CAFFileALAC.h:80:34: warning: multi-character character constant
main.cpp:134:30: warning: multi-character character constant
main.cpp:134:57: warning: multi-character character constant
main.cpp:167:35: warning: multi-character character constant
main.cpp:206:24: warning: multi-character character constant
main.cpp:216:28: warning: multi-character character constant
main.cpp:225:26: warning: multi-character character constant
main.cpp:349:14: warning: multi-character character constant
main.cpp:360:26: warning: multi-character character constant
main.cpp:373:14: warning: multi-character character constant
main.cpp:618:27: warning: multi-character character constant
main.cpp:684:27: warning: multi-character character constant
main.cpp:716:23: warning: multi-character character constant
main.cpp:724:35: warning: multi-character character constant
g++ -I ../codec -g -O3 -c CAFFileALAC.cpp
In file included from CAFFileALAC.h:30,
from CAFFileALAC.cpp:20:
../codec/ALACAudioTypes.h:64:32: warning: multi-character character constant
../codec/ALACAudioTypes.h:65:28: warning: multi-character character constant
../codec/ALACAudioTypes.h:154:22: warning: multi-character character constant
../codec/ALACAudioTypes.h:182:26: warning: multi-character character constant
In file included from CAFFileALAC.cpp:20:
CAFFileALAC.h:69:33: warning: multi-character character constant
CAFFileALAC.h:75:40: warning: multi-character character constant
CAFFileALAC.h:76:34: warning: multi-character character constant
CAFFileALAC.h:77:37: warning: multi-character character constant
CAFFileALAC.h:78:31: warning: multi-character character constant
CAFFileALAC.h:79:35: warning: multi-character character constant
CAFFileALAC.h:80:34: warning: multi-character character constant
CAFFileALAC.cpp:41:18: warning: multi-character character constant
CAFFileALAC.cpp:305:18: warning: multi-character character constant
CAFFileALAC.cpp:343:18: warning: multi-character character constant
CAFFileALAC.cpp:387:18: warning: multi-character character constant
CAFFileALAC.cpp:417:18: warning: multi-character character constant
(cd ../codec; make)
g++ -I . -g -O3 -c EndianPortable.c
g++ -I . -g -O3 -c ALACBitUtilities.c
g++ -I . -g -O3 -c ALACDecoder.cpp
In file included from ALACDecoder.h:34,
from ALACDecoder.cpp:28:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c ALACEncoder.cpp
In file included from ALACEncoder.h:29,
from ALACEncoder.cpp:33:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
ALACEncoder.cpp:48:36: warning: multi-character character constant
g++ -I . -g -O3 -c ag_dec.c
In file included from ag_dec.c:31:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c ag_enc.c
In file included from ag_enc.c:32:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c dp_dec.c
g++ -I . -g -O3 -c dp_enc.c
g++ -I . -g -O3 -c matrix_dec.c
In file included from matrix_dec.c:30:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c matrix_enc.c
In file included from matrix_enc.c:30:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
ar rcs libalac.a EndianPortable.o ALACBitUtilities.o ALACDecoder.o ALACEncoder.o ag_dec.o ag_enc.o dp_dec.o dp_enc.o matrix_dec.o matrix_enc.o
g++ -Wall -L../codec -lalac main.o CAFFileALAC.o -o alacconvert
main.o(.text+0x452): In function `EncodeALAC(__sFILE*, __sFILE*, AudioFormatDescription, AudioFormatDescription, int)':
/home/mtakagi/alac/convert-utility/main.cpp:400: undefined reference to `ALACEncoder::ALACEncoder()'
main.o(.text+0x51a):/home/mtakagi/alac/convert-utility/main.cpp:413: undefined reference to `ALACEncoder::GetMagicCookieSize(unsigned int)'
main.o(.text+0x545):/home/mtakagi/alac/convert-utility/main.cpp:415: undefined reference to `ALACEncoder::GetMagicCookie(void*, unsigned int*)'
main.o(.text+0x6e4):/home/mtakagi/alac/convert-utility/main.cpp:487: undefined reference to `Swap24'
main.o(.text+0x8ec):/home/mtakagi/alac/convert-utility/main.cpp:472: undefined reference to `Swap16'
main.o(.text+0x91a):/home/mtakagi/alac/convert-utility/main.cpp:480: undefined reference to `Swap32'
main.o(.text+0xa08):/home/mtakagi/alac/convert-utility/main.cpp:540: undefined reference to `Swap24'
main.o(.text+0xba0):/home/mtakagi/alac/convert-utility/main.cpp:525: undefined reference to `Swap16'
main.o(.text+0xbcc):/home/mtakagi/alac/convert-utility/main.cpp:533: undefined reference to `Swap32'
main.o(.text+0x10c8): In function `DecodeALAC(__sFILE*, __sFILE*, AudioFormatDescription, AudioFormatDescription, int, unsigned int)':
/home/mtakagi/alac/convert-utility/main.cpp:603: undefined reference to `ALACDecoder::ALACDecoder()'
main.o(.text+0x1117):/home/mtakagi/alac/convert-utility/main.cpp:612: undefined reference to `ALACDecoder::Init(void*, unsigned int)'
main.o(.text+0x1132):/home/mtakagi/alac/convert-utility/main.cpp:615: undefined reference to `BitBufferInit'
main.o(.text+0x131e):/home/mtakagi/alac/convert-utility/main.cpp:665: undefined reference to `ALACDecoder::Decode(BitBuffer*, unsigned char*, unsigned int, unsigned int, unsigned int*)'
main.o(.text+0x13d5):/home/mtakagi/alac/convert-utility/main.cpp:682: undefined reference to `BitBufferReset'
main.o(.text+0x146d):/home/mtakagi/alac/convert-utility/main.cpp:704: undefined reference to `ALACDecoder::~ALACDecoder()'
CAFFileALAC.o(.text+0x372): In function `GetCAFFdescFormat(__sFILE*, AudioFormatDescription*)':
/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:420: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x380):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:421: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x38e):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:422: undefined reference to `SwapFloat64BtoN'
CAFFileALAC.o(.text+0x39b):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:423: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x3a9):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:424: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x3b7):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:425: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x3de):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:443: undefined reference to `Swap32BtoN'
CAFFileALAC.o(.text+0x87f): In function `WriteCAFFpaktChunkHeader(__sFILE*, port_CAFPacketTableHeader*, unsigned int)':
/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:167: undefined reference to `Swap64NtoB'
CAFFileALAC.o(.text+0x896):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:168: undefined reference to `Swap64NtoB'
CAFFileALAC.o(.text+0x8a7):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:169: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0x8b5):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:170: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xcea): In function `WriteCAFFdescChunk(__sFILE*, AudioFormatDescription)':
/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:85: undefined reference to `SwapFloat64NtoB'
CAFFileALAC.o(.text+0xcf5):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:86: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd03):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:87: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd0e):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:88: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd19):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:89: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd27):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:90: undefined reference to `Swap32NtoB'
CAFFileALAC.o(.text+0xd35):/home/mtakagi/alac/convert-utility/CAFFileALAC.cpp:91: more undefined references to `Swap32NtoB' follow
*** Error code 1
Stop in /usr/home/mtakagi/alac/convert-utility.
undefined references で make がエラーmake clean で一旦生成物を削除
[mtakagi@freebsd-5850 convert-utility]# make clean
rm main.o CAFFileALAC.o alacconvert
[mtakagi@freebsd-5850 convert-utility]# cd ../codec/
[mtakagi@freebsd-5850 codec]# ls
.DS_Store ALACDecoder.h EndianPortable.h dp_dec.c matrix_dec.c
.svn ALACDecoder.o EndianPortable.o dp_dec.o matrix_dec.o
ALACAudioTypes.h ALACEncoder.cpp ag_dec.c dp_enc.c matrix_enc.c
ALACBitUtilities.c ALACEncoder.h ag_dec.o dp_enc.o matrix_enc.o
ALACBitUtilities.h ALACEncoder.o ag_enc.c dplib.h matrixlib.h
ALACBitUtilities.o APPLE_LICENSE.txt ag_enc.o libalac.a
ALACDecoder.cpp EndianPortable.c aglib.h makefile
[mtakagi@freebsd-5850 codec]# make clean
rm EndianPortable.o ALACBitUtilities.o ALACDecoder.o ALACEncoder.o ag_dec.o ag_enc.o dp_dec.o dp_enc.o matrix_dec.o matrix_enc.o libalac.a
makefile を修正。$(LFLAGS) の位置を変えるだけ。
/Users/mtakagi/Desktop/alac/convert-utility% diff makefile.org makefile [~/Desktop/alac/convert-utility]
33c33
< $(CC) $(LFLAGS) $(OBJS) -o alacconvert
---
> $(CC) $(OBJS) -o alacconvert $(LFLAGS)
makefile を修正したらmake を実行。
[mtakagi@freebsd-5850 codec]# cd ../convert-utility/
[mtakagi@freebsd-5850 convert-utility]# make
g++ -I ../codec -g -O3 -c main.cpp
In file included from ../codec/ALACEncoder.h:29,
from main.cpp:26:
../codec/ALACAudioTypes.h:64:32: warning: multi-character character constant
../codec/ALACAudioTypes.h:65:28: warning: multi-character character constant
../codec/ALACAudioTypes.h:154:22: warning: multi-character character constant
../codec/ALACAudioTypes.h:182:26: warning: multi-character character constant
In file included from main.cpp:31:
CAFFileALAC.h:69:33: warning: multi-character character constant
CAFFileALAC.h:75:40: warning: multi-character character constant
CAFFileALAC.h:76:34: warning: multi-character character constant
CAFFileALAC.h:77:37: warning: multi-character character constant
CAFFileALAC.h:78:31: warning: multi-character character constant
CAFFileALAC.h:79:35: warning: multi-character character constant
CAFFileALAC.h:80:34: warning: multi-character character constant
main.cpp:134:30: warning: multi-character character constant
main.cpp:134:57: warning: multi-character character constant
main.cpp:167:35: warning: multi-character character constant
main.cpp:206:24: warning: multi-character character constant
main.cpp:216:28: warning: multi-character character constant
main.cpp:225:26: warning: multi-character character constant
main.cpp:349:14: warning: multi-character character constant
main.cpp:360:26: warning: multi-character character constant
main.cpp:373:14: warning: multi-character character constant
main.cpp:618:27: warning: multi-character character constant
main.cpp:684:27: warning: multi-character character constant
main.cpp:716:23: warning: multi-character character constant
main.cpp:724:35: warning: multi-character character constant
g++ -I ../codec -g -O3 -c CAFFileALAC.cpp
In file included from CAFFileALAC.h:30,
from CAFFileALAC.cpp:20:
../codec/ALACAudioTypes.h:64:32: warning: multi-character character constant
../codec/ALACAudioTypes.h:65:28: warning: multi-character character constant
../codec/ALACAudioTypes.h:154:22: warning: multi-character character constant
../codec/ALACAudioTypes.h:182:26: warning: multi-character character constant
In file included from CAFFileALAC.cpp:20:
CAFFileALAC.h:69:33: warning: multi-character character constant
CAFFileALAC.h:75:40: warning: multi-character character constant
CAFFileALAC.h:76:34: warning: multi-character character constant
CAFFileALAC.h:77:37: warning: multi-character character constant
CAFFileALAC.h:78:31: warning: multi-character character constant
CAFFileALAC.h:79:35: warning: multi-character character constant
CAFFileALAC.h:80:34: warning: multi-character character constant
CAFFileALAC.cpp:41:18: warning: multi-character character constant
CAFFileALAC.cpp:305:18: warning: multi-character character constant
CAFFileALAC.cpp:343:18: warning: multi-character character constant
CAFFileALAC.cpp:387:18: warning: multi-character character constant
CAFFileALAC.cpp:417:18: warning: multi-character character constant
(cd ../codec; make)
g++ -I . -g -O3 -c EndianPortable.c
g++ -I . -g -O3 -c ALACBitUtilities.c
g++ -I . -g -O3 -c ALACDecoder.cpp
In file included from ALACDecoder.h:34,
from ALACDecoder.cpp:28:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c ALACEncoder.cpp
In file included from ALACEncoder.h:29,
from ALACEncoder.cpp:33:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
ALACEncoder.cpp:48:36: warning: multi-character character constant
g++ -I . -g -O3 -c ag_dec.c
In file included from ag_dec.c:31:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c ag_enc.c
In file included from ag_enc.c:32:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c dp_dec.c
g++ -I . -g -O3 -c dp_enc.c
g++ -I . -g -O3 -c matrix_dec.c
In file included from matrix_dec.c:30:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
g++ -I . -g -O3 -c matrix_enc.c
In file included from matrix_enc.c:30:
ALACAudioTypes.h:64:32: warning: multi-character character constant
ALACAudioTypes.h:65:28: warning: multi-character character constant
ALACAudioTypes.h:154:22: warning: multi-character character constant
ALACAudioTypes.h:182:26: warning: multi-character character constant
ar rcs libalac.a EndianPortable.o ALACBitUtilities.o ALACDecoder.o ALACEncoder.o ag_dec.o ag_enc.o dp_dec.o dp_enc.o matrix_dec.o matrix_enc.o
g++ main.o CAFFileALAC.o -o alacconvert -Wall -L../codec -lalac
今度はmake 成功。alacconvert を実行してみる。
[mtakagi@freebsd-5850 convert-utility]# ./alacconvert
Usage:
Encode:
alacconvert <input wav or caf file> <output caf file>
Decode:
alacconvert <input caf file> <output wav or caf file>
[mtakagi@freebsd-5850 convert-utility]# ls -l /home/mtakagi/STR0119.wav
-rwxr-xr-x 1 mtakagi mtakagi 7644716 Oct 28 08:40 /home/mtakagi/STR0119.wav
[mtakagi@freebsd-5850 convert-utility]# ./alacconvert /home/mtakagi/STR0119.wav /home/mtakagi/STR0119.caf
Input file: /home/mtakagi/STR0119.wav
Output file: /home/mtakagi/STR0119.caf
[mtakagi@freebsd-5850 convert-utility]# ls -l /home/mtakagi/STR0119.caf
-rw-r--r-- 1 root mtakagi 4416342 Oct 28 08:41 /home/mtakagi/STR0119.caf
[mtakagi@freebsd-5850 convert-utility]#
WAVファイルをApple Lossless Audio Codec にエンコードできた。
-
mtakagi posted this