FreeCalypso > hg > gsm-codec-lib
comparison amrconv/cod-read.c @ 211:78d1a6513393
amrconv: new program amr-cod-parse
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 20 Apr 2023 01:30:46 +0000 |
parents | efrtest/etsi-bit-rd.c@8ed838709897 |
children | 0beafaa0623f |
comparison
equal
deleted
inserted
replaced
210:7e490a8efe8a | 211:78d1a6513393 |
---|---|
1 /* | |
2 * In this module we implement utility functions for reading ETSI/3GPP | |
3 * *.cod files (AMR version) in either LE or BE format. | |
4 */ | |
5 | |
6 #include <stdio.h> | |
7 #include <stdint.h> | |
8 #include <stdlib.h> | |
9 #include "amr_defs.h" | |
10 | |
11 read_cod_bits(inf, big_endian, bitvec, filename_for_errs) | |
12 FILE *inf; | |
13 uint8_t *bitvec; | |
14 char *filename_for_errs; | |
15 { | |
16 uint8_t file_bytes[COD_FORMAT_NWORDS * 2], *sp; | |
17 int cc; | |
18 unsigned n, upper; | |
19 | |
20 cc = fread(file_bytes, 2, COD_FORMAT_NWORDS, inf); | |
21 if (cc == 0) | |
22 return 0; | |
23 if (cc != COD_FORMAT_NWORDS) { | |
24 fprintf(stderr, "error: short read from %s\n", | |
25 filename_for_errs); | |
26 exit(1); | |
27 } | |
28 sp = file_bytes; | |
29 for (n = 0; n < COD_FORMAT_NWORDS; n++) { | |
30 if (big_endian) { | |
31 upper = sp[0]; | |
32 bitvec[n] = sp[1]; | |
33 } else { | |
34 bitvec[n] = sp[0]; | |
35 upper = sp[1]; | |
36 } | |
37 if (upper) { | |
38 fprintf(stderr, | |
39 "error in %s: non-zero in what should be %s upper byte\n", | |
40 filename_for_errs, big_endian ? "BE" : "LE"); | |
41 exit(1); | |
42 } | |
43 sp += 2; | |
44 } | |
45 return 1; | |
46 } | |
47 | |
48 void | |
49 preen_frame_bits(input_bits, nbits, filename_for_errs, frame_no) | |
50 uint8_t *input_bits; | |
51 char *filename_for_errs; | |
52 unsigned nbits, frame_no; | |
53 { | |
54 uint8_t *sp; | |
55 unsigned nb; | |
56 | |
57 sp = input_bits; | |
58 for (nb = 0; nb < nbits; nb++) { | |
59 if (*sp > 1) { | |
60 fprintf(stderr, "error in %s frame #%u: data bit > 1\n", | |
61 filename_for_errs, frame_no); | |
62 exit(1); | |
63 } | |
64 sp++; | |
65 } | |
66 } |