annotate miscutil/pcm8-to-pcm16.c @ 242:f081a6850fb5

libgsmfrp: new refined implementation The previous implementation exhibited the following defects, which are now fixed: 1) The last received valid SID was cached forever for the purpose of handling future invalid SIDs - we could have received some valid SID ages ago, then lots of speech or NO_DATA, and if we then get an invalid SID, we would resurrect the last valid SID from ancient history - a bad design. In our new design, we handle invalid SID based on the current state, much like BFI. 2) GSM 06.11 spec says clearly that after the second lost SID (received BFI=1 && TAF=1 in CN state) we need to gradually decrease the output level, rather than jump directly to emitting silence frames - we previously failed to implement such logic. 3) Per GSM 06.12 section 5.2, Xmaxc should be the same in all 4 subframes in a SID frame. What should we do if we receive an otherwise valid SID frame with different Xmaxc? Our previous approach would replicate this Xmaxc oddity in every subsequent generated CN frame, which is rather bad. In our new design, the very first CN frame (which can be seen as a transformation of the SID frame itself) retains the original 4 distinct Xmaxc, but all subsequent CN frames are based on the Xmaxc from the last subframe of the most recent SID.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 09 May 2023 05:16:31 +0000
parents 8710c94df334
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
232
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This program reads an 8-bit PCM recording in either A-law or mu-law
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * encoding (needs to be specified on the command line) and converts it
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * to 16-bit linear PCM. Both input and output file formats are raw binary;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * the output format is robe by default or can be changed to LE via
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 * an additional command line argument.
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 *
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 * The expansion tables for A-law and mu-law have been generated by
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 * developer aid programs in the ../dev directory.
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 */
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include <stdio.h>
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include <stdint.h>
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include <stdlib.h>
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include <string.h>
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #include <strings.h>
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 uint16_t pcma_decode_table[256] = {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 60032, 60288, 59520, 59776, 61056, 61312, 60544, 60800,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 57984, 58240, 57472, 57728, 59008, 59264, 58496, 58752,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 62784, 62912, 62528, 62656, 63296, 63424, 63040, 63168,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 61760, 61888, 61504, 61632, 62272, 62400, 62016, 62144,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 43520, 44544, 41472, 42496, 47616, 48640, 45568, 46592,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 35328, 36352, 33280, 34304, 39424, 40448, 37376, 38400,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 54528, 55040, 53504, 54016, 56576, 57088, 55552, 56064,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 50432, 50944, 49408, 49920, 52480, 52992, 51456, 51968,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 65192, 65208, 65160, 65176, 65256, 65272, 65224, 65240,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 65064, 65080, 65032, 65048, 65128, 65144, 65096, 65112,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 65448, 65464, 65416, 65432, 65512, 65528, 65480, 65496,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 65320, 65336, 65288, 65304, 65384, 65400, 65352, 65368,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 64160, 64224, 64032, 64096, 64416, 64480, 64288, 64352,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 63648, 63712, 63520, 63584, 63904, 63968, 63776, 63840,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 64848, 64880, 64784, 64816, 64976, 65008, 64912, 64944,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 64592, 64624, 64528, 64560, 64720, 64752, 64656, 64688,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 344, 328, 376, 360, 280, 264, 312, 296,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 472, 456, 504, 488, 408, 392, 440, 424,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 88, 72, 120, 104, 24, 8, 56, 40,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 216, 200, 248, 232, 152, 136, 184, 168,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 688, 656, 752, 720, 560, 528, 624, 592,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 944, 912, 1008, 976, 816, 784, 880, 848,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 };
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 uint16_t pcmu_decode_table[256] = {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 33412, 34436, 35460, 36484, 37508, 38532, 39556, 40580,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 41604, 42628, 43652, 44676, 45700, 46724, 47748, 48772,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 49540, 50052, 50564, 51076, 51588, 52100, 52612, 53124,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 53636, 54148, 54660, 55172, 55684, 56196, 56708, 57220,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 57604, 57860, 58116, 58372, 58628, 58884, 59140, 59396,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 59652, 59908, 60164, 60420, 60676, 60932, 61188, 61444,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 61636, 61764, 61892, 62020, 62148, 62276, 62404, 62532,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 62660, 62788, 62916, 63044, 63172, 63300, 63428, 63556,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 63652, 63716, 63780, 63844, 63908, 63972, 64036, 64100,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 64164, 64228, 64292, 64356, 64420, 64484, 64548, 64612,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 64660, 64692, 64724, 64756, 64788, 64820, 64852, 64884,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 64916, 64948, 64980, 65012, 65044, 65076, 65108, 65140,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 65164, 65180, 65196, 65212, 65228, 65244, 65260, 65276,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 65292, 65308, 65324, 65340, 65356, 65372, 65388, 65404,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 65416, 65424, 65432, 65440, 65448, 65456, 65464, 65472,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 65480, 65488, 65496, 65504, 65512, 65520, 65528, 0,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 1372, 1308, 1244, 1180, 1116, 1052, 988, 924,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 876, 844, 812, 780, 748, 716, 684, 652,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 620, 588, 556, 524, 492, 460, 428, 396,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 372, 356, 340, 324, 308, 292, 276, 260,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 244, 228, 212, 196, 180, 164, 148, 132,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 120, 112, 104, 96, 88, 80, 72, 64,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 56, 48, 40, 32, 24, 16, 8, 0,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 };
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 main(argc, argv)
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 char **argv;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 uint16_t *exp_table;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 int little_endian;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 FILE *inf, *outf;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 int inp;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 unsigned out;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 if (argc < 4 || argc > 5) {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 usage: fprintf(stderr,
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 "usage: %s alaw|ulaw input.pcm8 output.pcm16 [le]\n",
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 argv[0]);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 exit(1);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 }
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 if (!strcmp(argv[1], "alaw"))
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 exp_table = pcma_decode_table;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 else if (!strcmp(argv[1], "ulaw"))
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 exp_table = pcmu_decode_table;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 else
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 goto usage;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 if (argc == 4)
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 little_endian = 0;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 else {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 if (strcmp(argv[4], "le"))
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 goto usage;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 little_endian = 1;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 }
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 inf = fopen(argv[2], "r");
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 if (!inf) {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 perror(argv[2]);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 exit(1);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 }
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 outf = fopen(argv[3], "w");
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 if (!outf) {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 perror(argv[3]);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 exit(1);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 }
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 for (;;) {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 inp = getc(inf);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 if (inp == EOF)
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 break;
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 out = exp_table[inp];
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 if (little_endian) {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 putc(out & 0xFF, outf);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 putc((out >> 8) & 0xFF, outf);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 } else {
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 putc((out >> 8) & 0xFF, outf);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 putc(out & 0xFF, outf);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 }
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 }
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 fclose(outf);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 exit(0);
8710c94df334 miscutil: new program pcm8-to-pcm16
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 }