diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..cdf77af --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "test/samples"] + path = test/samples + url = https://github.com/foo86/dcadec-samples.git diff --git a/Makefile b/Makefile index 4fb214c..5cd1d78 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,10 @@ endif OUT_DEC ?= dcadec$(EXESUF) OUT_CUT ?= dcacut$(EXESUF) +OUT_DEV ?= test/stddev$(EXESUF) +SRC_DEV ?= test/stddev.c +CFLAGS_DEV ?= -O2 -Wall -Wextra + SRC_LIB = \ libdcadec/bitstream.c \ libdcadec/core_decoder.c \ @@ -135,11 +139,19 @@ $(OUT_CUT): $(OBJ_CUT) $(OUT_LIB) endif +$(OUT_DEV): $(SRC_DEV) + $(CC) $(LDFLAGS) -o $@ $(CFLAGS_DEV) $< $(LIBS) + +check: $(OUT_DEC) $(OUT_DEV) + cd test && ./test.sh + clean: $(RM) $(OUT_LIB) $(OBJ_LIB) $(DEP_LIB) $(EXTRA_LIB) $(RM) $(OUT_DEC) $(OBJ_DEC) $(DEP_DEC) $(RM) $(OUT_CUT) $(OBJ_CUT) $(DEP_CUT) $(RM) dcadec.pc + $(RM) $(OUT_DEV) + $(RM) -r test/decoded .PHONY: dcadec.pc dcadec.pc: dcadec.pc.in diff --git a/test/checksum.txt b/test/checksum.txt new file mode 100644 index 0000000..2eccc08 --- /dev/null +++ b/test/checksum.txt @@ -0,0 +1,109 @@ +9415e0d4c7cd58ee793d7b2bfae34e4de411181c *decoded/dmix_0/core_51_24_48_768_0.wav +de10f73b35c2db915f69c46ddc95468c25510bdf *decoded/dmix_0/core_51_24_48_768_1.wav +aa95c8fac1876cce0750261b26ad231a0249b7b0 *decoded/dmix_0/x96_51_24_96_1509.wav +684e654a5b3bb3be9e34bfc32af14bac756bb83e *decoded/dmix_0/x96_xch_61_24_96_3840.wav +fa27196ba43bd24efd319f96fd045f7e5ca0b324 *decoded/dmix_0/x96_xxch_71_24_96_3840.wav +b64efecbd7b2df7b5edb3dbda7f2b3f715c06eef *decoded/dmix_0/xbr_51_24_48_3840.wav +346e21a2f26f798808709e4153ea68b6207e377c *decoded/dmix_0/xbr_xch_61_24_48_3840.wav +eabf815257bba4388e46c3330ee8456d793bb44d *decoded/dmix_0/xbr_xxch_71_24_48_3840.wav +05529c0991df6e55811b582b263118a62f2ff1e7 *decoded/dmix_0/xch_61_24_48_768.wav +d7f7cf50d55ce32aea4121549973db16cd5d5bd0 *decoded/dmix_0/xll_51_16_192_768_0.wav +d7f7cf50d55ce32aea4121549973db16cd5d5bd0 *decoded/dmix_0/xll_51_16_192_768_1.wav +15be906b3c57c90304702eab2cc83650e553da1d *decoded/dmix_0/xll_51_24_48_768.wav +96d31af60dc3e8b5c568737ff697730b7c549ea0 *decoded/dmix_0/xll_51_24_48_none.wav +431446b087a74257d338c290bd31a40e6e54e060 *decoded/dmix_0/xll_71_24_48_768_0.wav +431446b087a74257d338c290bd31a40e6e54e060 *decoded/dmix_0/xll_71_24_48_768_1.wav +045f5972843c5e442678d742fe1e6d3af1d062f9 *decoded/dmix_0/xll_71_24_96_768.wav +e3cbf8670dd14208c34a66cae90c45c2eb20d6bb *decoded/dmix_0/xll_xch_61_24_48_768.wav +009524ee6202a4f8e8daa6a4033a8e1c4909508d *decoded/dmix_0/xxch_71_24_48_2046.wav +9415e0d4c7cd58ee793d7b2bfae34e4de411181c *decoded/dmix_2/core_51_24_48_768_0.wav +ecd0b8b3a6a79691be3ad3da904e7e9c3b1f313d *decoded/dmix_2/core_51_24_48_768_1.wav +aa95c8fac1876cce0750261b26ad231a0249b7b0 *decoded/dmix_2/x96_51_24_96_1509.wav +5cde940a0570fa7c4c941c83d64c7dad2d48161f *decoded/dmix_2/x96_xch_61_24_96_3840.wav +d8c6151be5818232376617e1c206429343cebdde *decoded/dmix_2/x96_xxch_71_24_96_3840.wav +b64efecbd7b2df7b5edb3dbda7f2b3f715c06eef *decoded/dmix_2/xbr_51_24_48_3840.wav +54fcc9441c3670b43d2df2e4018f5be4d481c9db *decoded/dmix_2/xbr_xch_61_24_48_3840.wav +6e2e95df72687c818164d84ddc20f41a90935cdc *decoded/dmix_2/xbr_xxch_71_24_48_3840.wav +55d2dd0ae8501134963655e149ee7420859d6996 *decoded/dmix_2/xch_61_24_48_768.wav +d7f7cf50d55ce32aea4121549973db16cd5d5bd0 *decoded/dmix_2/xll_51_16_192_768_0.wav +9b5e7b8109cadcccec7b98784856cdb87b787ca0 *decoded/dmix_2/xll_51_16_192_768_1.wav +47043676e438e3727f398ff6f0b2b46ec3ab02f6 *decoded/dmix_2/xll_51_24_48_768.wav +96d31af60dc3e8b5c568737ff697730b7c549ea0 *decoded/dmix_2/xll_51_24_48_none.wav +1c0c7ad09c2d335bd3dae9f8b5b6bb803f211abe *decoded/dmix_2/xll_71_24_48_768_0.wav +4b701b2b906a1af079774b23052e96fb8ee1a5fc *decoded/dmix_2/xll_71_24_48_768_1.wav +359ea5c7b8abcbde36c469afa9b364ba4dc59f9f *decoded/dmix_2/xll_71_24_96_768.wav +bf59eebc557f8240fe9545ecc8fddd4ff52c3fb6 *decoded/dmix_2/xll_xch_61_24_48_768.wav +fb4040a45e51de1bde777b1c5e1116462e9d9aba *decoded/dmix_2/xxch_71_24_48_2046.wav +9415e0d4c7cd58ee793d7b2bfae34e4de411181c *decoded/dmix_6/core_51_24_48_768_0.wav +de10f73b35c2db915f69c46ddc95468c25510bdf *decoded/dmix_6/core_51_24_48_768_1.wav +aa95c8fac1876cce0750261b26ad231a0249b7b0 *decoded/dmix_6/x96_51_24_96_1509.wav +5cde940a0570fa7c4c941c83d64c7dad2d48161f *decoded/dmix_6/x96_xch_61_24_96_3840.wav +d8c6151be5818232376617e1c206429343cebdde *decoded/dmix_6/x96_xxch_71_24_96_3840.wav +b64efecbd7b2df7b5edb3dbda7f2b3f715c06eef *decoded/dmix_6/xbr_51_24_48_3840.wav +54fcc9441c3670b43d2df2e4018f5be4d481c9db *decoded/dmix_6/xbr_xch_61_24_48_3840.wav +6e2e95df72687c818164d84ddc20f41a90935cdc *decoded/dmix_6/xbr_xxch_71_24_48_3840.wav +55d2dd0ae8501134963655e149ee7420859d6996 *decoded/dmix_6/xch_61_24_48_768.wav +d7f7cf50d55ce32aea4121549973db16cd5d5bd0 *decoded/dmix_6/xll_51_16_192_768_0.wav +d7f7cf50d55ce32aea4121549973db16cd5d5bd0 *decoded/dmix_6/xll_51_16_192_768_1.wav +15be906b3c57c90304702eab2cc83650e553da1d *decoded/dmix_6/xll_51_24_48_768.wav +96d31af60dc3e8b5c568737ff697730b7c549ea0 *decoded/dmix_6/xll_51_24_48_none.wav +1c0c7ad09c2d335bd3dae9f8b5b6bb803f211abe *decoded/dmix_6/xll_71_24_48_768_0.wav +179e28454bc831cbba30369357dfe6778b4cb1c5 *decoded/dmix_6/xll_71_24_48_768_1.wav +359ea5c7b8abcbde36c469afa9b364ba4dc59f9f *decoded/dmix_6/xll_71_24_96_768.wav +bf59eebc557f8240fe9545ecc8fddd4ff52c3fb6 *decoded/dmix_6/xll_xch_61_24_48_768.wav +fb4040a45e51de1bde777b1c5e1116462e9d9aba *decoded/dmix_6/xxch_71_24_48_2046.wav +f9567e7e8926a0d1247d551dfdee06922953fda2 *decoded/mono/xll_51_16_192_768_0_C.wav +b338184ad40c7bfab8811ca465ee333d5da818ff *decoded/mono/xll_51_16_192_768_0_L.wav +d5e0325811b8ca44093b33104fa390300068f1ec *decoded/mono/xll_51_16_192_768_0_LFE.wav +63f9cb37032d724d30bfa4224e6dcd5ce76ee926 *decoded/mono/xll_51_16_192_768_0_Ls.wav +b338184ad40c7bfab8811ca465ee333d5da818ff *decoded/mono/xll_51_16_192_768_0_R.wav +63f9cb37032d724d30bfa4224e6dcd5ce76ee926 *decoded/mono/xll_51_16_192_768_0_Rs.wav +f9567e7e8926a0d1247d551dfdee06922953fda2 *decoded/mono/xll_51_16_192_768_1_C.wav +b338184ad40c7bfab8811ca465ee333d5da818ff *decoded/mono/xll_51_16_192_768_1_L.wav +d5e0325811b8ca44093b33104fa390300068f1ec *decoded/mono/xll_51_16_192_768_1_LFE.wav +63f9cb37032d724d30bfa4224e6dcd5ce76ee926 *decoded/mono/xll_51_16_192_768_1_Ls.wav +b338184ad40c7bfab8811ca465ee333d5da818ff *decoded/mono/xll_51_16_192_768_1_R.wav +63f9cb37032d724d30bfa4224e6dcd5ce76ee926 *decoded/mono/xll_51_16_192_768_1_Rs.wav +bbbf7fd9a60805e384c6cc3c95bd48a2b74ed5e3 *decoded/mono/xll_51_24_48_768_C.wav +1dd4af9b5a3bb56267d73a05a6d6276b9096c672 *decoded/mono/xll_51_24_48_768_L.wav +d7fdbd9e826aa3de8aa4ee2156068369a3bbbf9a *decoded/mono/xll_51_24_48_768_LFE.wav +2555b7da3430f24bc28512596da48dc24be65f95 *decoded/mono/xll_51_24_48_768_Ls.wav +1dd4af9b5a3bb56267d73a05a6d6276b9096c672 *decoded/mono/xll_51_24_48_768_R.wav +2555b7da3430f24bc28512596da48dc24be65f95 *decoded/mono/xll_51_24_48_768_Rs.wav +241d6ed12c09bd02e89d9c2eddb8daac5e4688ba *decoded/mono/xll_51_24_48_none_C.wav +5eeff9f6c2993ed8bbea174659133e8b0fb2eb2d *decoded/mono/xll_51_24_48_none_L.wav +9bb05d6de708d22837128168ec951b8a91cedfa8 *decoded/mono/xll_51_24_48_none_LFE.wav +5a0cb7df9dee257d81d7c08729bc2c5830c7807d *decoded/mono/xll_51_24_48_none_Ls.wav +b54ee1a50ddfa843860e7c6e8a4643261e6babea *decoded/mono/xll_51_24_48_none_R.wav +5d89b3afc78c63ca3dec1ea77b2a06be0d8ce4fa *decoded/mono/xll_51_24_48_none_Rs.wav +bbbf7fd9a60805e384c6cc3c95bd48a2b74ed5e3 *decoded/mono/xll_71_24_48_768_0_C.wav +1dd4af9b5a3bb56267d73a05a6d6276b9096c672 *decoded/mono/xll_71_24_48_768_0_L.wav +d7fdbd9e826aa3de8aa4ee2156068369a3bbbf9a *decoded/mono/xll_71_24_48_768_0_LFE.wav +af2edeaf1bb4b7992d4161615e6bc30be8277407 *decoded/mono/xll_71_24_48_768_0_Lsr.wav +2555b7da3430f24bc28512596da48dc24be65f95 *decoded/mono/xll_71_24_48_768_0_Lss.wav +1dd4af9b5a3bb56267d73a05a6d6276b9096c672 *decoded/mono/xll_71_24_48_768_0_R.wav +af2edeaf1bb4b7992d4161615e6bc30be8277407 *decoded/mono/xll_71_24_48_768_0_Rsr.wav +2555b7da3430f24bc28512596da48dc24be65f95 *decoded/mono/xll_71_24_48_768_0_Rss.wav +bbbf7fd9a60805e384c6cc3c95bd48a2b74ed5e3 *decoded/mono/xll_71_24_48_768_1_C.wav +1dd4af9b5a3bb56267d73a05a6d6276b9096c672 *decoded/mono/xll_71_24_48_768_1_L.wav +d7fdbd9e826aa3de8aa4ee2156068369a3bbbf9a *decoded/mono/xll_71_24_48_768_1_LFE.wav +af2edeaf1bb4b7992d4161615e6bc30be8277407 *decoded/mono/xll_71_24_48_768_1_Lsr.wav +2555b7da3430f24bc28512596da48dc24be65f95 *decoded/mono/xll_71_24_48_768_1_Lss.wav +1dd4af9b5a3bb56267d73a05a6d6276b9096c672 *decoded/mono/xll_71_24_48_768_1_R.wav +af2edeaf1bb4b7992d4161615e6bc30be8277407 *decoded/mono/xll_71_24_48_768_1_Rsr.wav +2555b7da3430f24bc28512596da48dc24be65f95 *decoded/mono/xll_71_24_48_768_1_Rss.wav +5f6766f79859a43e86d5084fd141280a2da0e2b5 *decoded/mono/xll_71_24_96_768_C.wav +e619c5dbb080298e4ec338766fc9082a748ced9e *decoded/mono/xll_71_24_96_768_L.wav +62b25ecaafc86d4ff05cf7830e9ba4cca94c96e1 *decoded/mono/xll_71_24_96_768_LFE.wav +8d538275a2a8cc1d94dd28a13ffbe5ecab01e31d *decoded/mono/xll_71_24_96_768_Lsr.wav +e8c1bfdfa4917b45045b8a937e24d6c3851b4f3c *decoded/mono/xll_71_24_96_768_Lss.wav +e619c5dbb080298e4ec338766fc9082a748ced9e *decoded/mono/xll_71_24_96_768_R.wav +8d538275a2a8cc1d94dd28a13ffbe5ecab01e31d *decoded/mono/xll_71_24_96_768_Rsr.wav +e8c1bfdfa4917b45045b8a937e24d6c3851b4f3c *decoded/mono/xll_71_24_96_768_Rss.wav +bbbf7fd9a60805e384c6cc3c95bd48a2b74ed5e3 *decoded/mono/xll_xch_61_24_48_768_C.wav +af2edeaf1bb4b7992d4161615e6bc30be8277407 *decoded/mono/xll_xch_61_24_48_768_Cs.wav +1dd4af9b5a3bb56267d73a05a6d6276b9096c672 *decoded/mono/xll_xch_61_24_48_768_L.wav +d7fdbd9e826aa3de8aa4ee2156068369a3bbbf9a *decoded/mono/xll_xch_61_24_48_768_LFE.wav +2555b7da3430f24bc28512596da48dc24be65f95 *decoded/mono/xll_xch_61_24_48_768_Ls.wav +1dd4af9b5a3bb56267d73a05a6d6276b9096c672 *decoded/mono/xll_xch_61_24_48_768_R.wav +2555b7da3430f24bc28512596da48dc24be65f95 *decoded/mono/xll_xch_61_24_48_768_Rs.wav diff --git a/test/samples b/test/samples new file mode 160000 index 0000000..fa7dcf8 --- /dev/null +++ b/test/samples @@ -0,0 +1 @@ +Subproject commit fa7dcf8c98c6d3b06a7f62d6a2c41bfb0e249390 diff --git a/test/stddev.c b/test/stddev.c new file mode 100644 index 0000000..4768a31 --- /dev/null +++ b/test/stddev.c @@ -0,0 +1,111 @@ +/* + * This file is part of libdcadec. + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation; either version 2.1 of the License, or (at your + * option) any later version. + * + * This library 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 Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include +#include + +#define BUF 3000 +#define HDR 44 + +int main(int argc, char **argv) +{ + uint8_t buf1[BUF], buf2[BUF], *p1, *p2; + int64_t acc = 0, cnt = 0; + size_t r1, r2, i; + double ref = 0.0; + + if (argc != 4) + goto fail; + + if (strcmp(argv[3], "?")) { + char *p; + ref = strtod(argv[3], &p); + if (*p || p == argv[3]) + goto fail; + } + + FILE *fp1 = fopen(argv[1], "rb"); + FILE *fp2 = fopen(argv[2], "rb"); + if (!fp1 || !fp2) + goto fail; + + if (fread(buf1, HDR, 1, fp1) != 1 || fread(buf2, HDR, 1, fp2) != 1) + goto fail; + + if (memcmp(buf1, buf2, HDR) || memcmp(buf1, "RIFF", 4)) + goto fail; + + int bps; + switch (buf1[34] | (buf1[35] << 8)) { + case 16: + bps = 2; + break; + case 24: + bps = 3; + break; + default: + goto fail; + } + + do { + r1 = fread(buf1, 1, BUF, fp1); + r2 = fread(buf2, 1, BUF, fp2); + if (r1 != r2 || r1 % bps) + goto fail; + + for (i = 0, p1 = buf1, p2 = buf2; i < r1 / bps; i++, p1 += bps, p2 += bps) { + int64_t d; + + if (bps == 3) { + int32_t v1 = ((p1[0] << 8) | (p1[1] << 16) | (p1[2] << 24)) >> 8; + int32_t v2 = ((p2[0] << 8) | (p2[1] << 16) | (p2[2] << 24)) >> 8; + d = v1 - v2; + } else { + int16_t v1 = p1[0] | (p1[1] << 8); + int16_t v2 = p2[0] | (p2[1] << 8); + d = v1 - v2; + } + + acc += d * d; + } + + cnt += i; + } while (r1 == BUF); + + if (!cnt) + goto fail; + + double var = (double)acc / cnt; + double dev = sqrt(var); + if (strcmp(argv[3], "?")) { + if (fabs(dev - ref) > 0.1) + goto fail; + printf("%s: OK\n", argv[1]); + } else { + printf("%s: %f\n", argv[1], dev); + } + + return 0; + +fail: + printf("%s: FAILED\n", argc > 1 ? argv[1] : "???"); + return 1; +} diff --git a/test/stddev.txt b/test/stddev.txt new file mode 100644 index 0000000..f956e8f --- /dev/null +++ b/test/stddev.txt @@ -0,0 +1,69 @@ +decoded/mono/core_51_24_48_768_0_C.wav: 2.282641 +decoded/mono/core_51_24_48_768_0_L.wav: 1.783442 +decoded/mono/core_51_24_48_768_0_LFE.wav: 0.000000 +decoded/mono/core_51_24_48_768_0_Ls.wav: 1.780153 +decoded/mono/core_51_24_48_768_0_R.wav: 1.737961 +decoded/mono/core_51_24_48_768_0_Rs.wav: 1.761957 +decoded/mono/core_51_24_48_768_1_C.wav: 2.258123 +decoded/mono/core_51_24_48_768_1_L.wav: 1.828726 +decoded/mono/core_51_24_48_768_1_LFE.wav: 0.000000 +decoded/mono/core_51_24_48_768_1_Ls.wav: 1.727110 +decoded/mono/core_51_24_48_768_1_R.wav: 1.800879 +decoded/mono/core_51_24_48_768_1_Rs.wav: 1.710206 +decoded/mono/x96_51_24_96_1509_C.wav: 3.372648 +decoded/mono/x96_51_24_96_1509_L.wav: 2.959649 +decoded/mono/x96_51_24_96_1509_LFE.wav: 0.549103 +decoded/mono/x96_51_24_96_1509_Ls.wav: 3.121600 +decoded/mono/x96_51_24_96_1509_R.wav: 2.959649 +decoded/mono/x96_51_24_96_1509_Rs.wav: 3.053878 +decoded/mono/x96_xch_61_24_96_3840_C.wav: 3.550590 +decoded/mono/x96_xch_61_24_96_3840_Cs.wav: 2.152851 +decoded/mono/x96_xch_61_24_96_3840_L.wav: 3.175529 +decoded/mono/x96_xch_61_24_96_3840_LFE.wav: 0.549103 +decoded/mono/x96_xch_61_24_96_3840_Ls.wav: 3.565754 +decoded/mono/x96_xch_61_24_96_3840_R.wav: 3.175529 +decoded/mono/x96_xch_61_24_96_3840_Rs.wav: 3.546978 +decoded/mono/x96_xxch_71_24_96_3840_C.wav: 3.431600 +decoded/mono/x96_xxch_71_24_96_3840_L.wav: 3.354502 +decoded/mono/x96_xxch_71_24_96_3840_LFE.wav: 0.875697 +decoded/mono/x96_xxch_71_24_96_3840_Lsr.wav: 2.181241 +decoded/mono/x96_xxch_71_24_96_3840_Lss.wav: 4.218345 +decoded/mono/x96_xxch_71_24_96_3840_R.wav: 3.485461 +decoded/mono/x96_xxch_71_24_96_3840_Rsr.wav: 2.048544 +decoded/mono/x96_xxch_71_24_96_3840_Rss.wav: 3.940506 +decoded/mono/xbr_51_24_48_3840_C.wav: 2.499609 +decoded/mono/xbr_51_24_48_3840_L.wav: 1.944418 +decoded/mono/xbr_51_24_48_3840_LFE.wav: 0.000000 +decoded/mono/xbr_51_24_48_3840_Ls.wav: 2.080297 +decoded/mono/xbr_51_24_48_3840_R.wav: 1.950060 +decoded/mono/xbr_51_24_48_3840_Rs.wav: 2.005242 +decoded/mono/xbr_xch_61_24_48_3840_C.wav: 2.161339 +decoded/mono/xbr_xch_61_24_48_3840_Cs.wav: 1.422133 +decoded/mono/xbr_xch_61_24_48_3840_L.wav: 1.758212 +decoded/mono/xbr_xch_61_24_48_3840_LFE.wav: 0.000000 +decoded/mono/xbr_xch_61_24_48_3840_Ls.wav: 2.442103 +decoded/mono/xbr_xch_61_24_48_3840_R.wav: 1.807914 +decoded/mono/xbr_xch_61_24_48_3840_Rs.wav: 2.365627 +decoded/mono/xbr_xxch_71_24_48_3840_C.wav: 2.798402 +decoded/mono/xbr_xxch_71_24_48_3840_L.wav: 2.057641 +decoded/mono/xbr_xxch_71_24_48_3840_LFE.wav: 0.000000 +decoded/mono/xbr_xxch_71_24_48_3840_Lsr.wav: 1.502439 +decoded/mono/xbr_xxch_71_24_48_3840_Lss.wav: 2.729415 +decoded/mono/xbr_xxch_71_24_48_3840_R.wav: 2.024387 +decoded/mono/xbr_xxch_71_24_48_3840_Rsr.wav: 1.485444 +decoded/mono/xbr_xxch_71_24_48_3840_Rss.wav: 2.797617 +decoded/mono/xch_61_24_48_768_C.wav: 2.111284 +decoded/mono/xch_61_24_48_768_Cs.wav: 1.331705 +decoded/mono/xch_61_24_48_768_L.wav: 1.850623 +decoded/mono/xch_61_24_48_768_LFE.wav: 0.000000 +decoded/mono/xch_61_24_48_768_Ls.wav: 1.999267 +decoded/mono/xch_61_24_48_768_R.wav: 1.850623 +decoded/mono/xch_61_24_48_768_Rs.wav: 2.159644 +decoded/mono/xxch_71_24_48_2046_C.wav: 2.353314 +decoded/mono/xxch_71_24_48_2046_L.wav: 1.915577 +decoded/mono/xxch_71_24_48_2046_LFE.wav: 0.000000 +decoded/mono/xxch_71_24_48_2046_Lsr.wav: 1.260309 +decoded/mono/xxch_71_24_48_2046_Lss.wav: 2.389961 +decoded/mono/xxch_71_24_48_2046_R.wav: 1.915577 +decoded/mono/xxch_71_24_48_2046_Rsr.wav: 1.282964 +decoded/mono/xxch_71_24_48_2046_Rss.wav: 2.442203 diff --git a/test/test.sh b/test/test.sh new file mode 100755 index 0000000..b394c3c --- /dev/null +++ b/test/test.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +set -e + +if [ ! -f samples/README ] ; then + echo "ERROR: Run 'git submodule update --init test/samples' first." + exit 1 +fi + +rm -rf decoded +mkdir -p decoded/dmix_0 decoded/dmix_2 decoded/dmix_6 decoded/mono +for i in samples/*.dtshd ; do + ../dcadec -b -q $i decoded/dmix_0/$(basename $i .dtshd).wav + ../dcadec -b -q -2 $i decoded/dmix_2/$(basename $i .dtshd).wav + ../dcadec -b -q -6 $i decoded/dmix_6/$(basename $i .dtshd).wav + ../dcadec -m -q $i decoded/mono/$(basename $i .dtshd)_%s.wav +done + +if [ "$1" = "--update" ] ; then + sha1sum -b decoded/dmix_0/*.wav decoded/dmix_2/*.wav decoded/dmix_6/*.wav > checksum.txt + sha1sum -b samples/reference/xll_*.wav | sed 's|samples/reference|decoded/mono|' >> checksum.txt + for i in decoded/mono/core_*.wav decoded/mono/x96_*.wav decoded/mono/xbr_*.wav decoded/mono/xch_*.wav decoded/mono/xxch_*.wav ; do + ./stddev $i samples/reference/$(basename $i) ? + done > stddev.txt +else + sha1sum -c checksum.txt + for i in decoded/mono/core_*.wav decoded/mono/x96_*.wav decoded/mono/xbr_*.wav decoded/mono/xch_*.wav decoded/mono/xxch_*.wav ; do + ./stddev $i samples/reference/$(basename $i) $(grep -F $i stddev.txt | cut -d ' ' -f 2) + done +fi