FreeCalypso > hg > gsm-codec-lib
comparison miscutil/gsmrec-dump.c @ 46:edd2e20e7090
gsmrec-dump: decode EFR frames
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 25 Nov 2022 03:06:03 +0000 |
parents | baadb1cb744d |
children | a5ffec18e4cd |
comparison
equal
deleted
inserted
replaced
45:4ae1dd43e332 | 46:edd2e20e7090 |
---|---|
5 | 5 |
6 #include <stdio.h> | 6 #include <stdio.h> |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <stdlib.h> | 8 #include <stdlib.h> |
9 #include <gsm.h> | 9 #include <gsm.h> |
10 #include "../libgsmefr/gsm_efr.h" | |
10 #include "../libtest/binreader.h" | 11 #include "../libtest/binreader.h" |
11 | 12 |
12 main(argc, argv) | 13 main(argc, argv) |
13 char **argv; | 14 char **argv; |
14 { | 15 { |
15 FILE *binf; | 16 FILE *binf; |
16 gsm dummy_state; | 17 gsm dummy_state; |
17 unsigned frame_index; | 18 unsigned frame_index; |
18 uint8_t frame[BINFILE_MAX_FRAME]; | 19 uint8_t frame[BINFILE_MAX_FRAME]; |
19 gsm_signal fr_params[76]; | 20 gsm_signal params[76]; |
20 int rc, i, j, n; | 21 int rc, i, j, n; |
21 | 22 |
22 if (argc != 2) { | 23 if (argc != 2) { |
23 fprintf(stderr, "usage: %s bin-stream-file\n", argv[0]); | 24 fprintf(stderr, "usage: %s bin-stream-file\n", argv[0]); |
24 exit(1); | 25 exit(1); |
45 switch (frame[0] & 0xF0) { | 46 switch (frame[0] & 0xF0) { |
46 case 0xB0: | 47 case 0xB0: |
47 printf("BFI TAF=%u\n", frame[1] & 1); | 48 printf("BFI TAF=%u\n", frame[1] & 1); |
48 break; | 49 break; |
49 case 0xC0: | 50 case 0xC0: |
50 puts("EFR (decoding not implemented)"); | 51 printf("EFR SID=%d LPC", EFR_sid_classify(frame)); |
52 EFR_frame2params(frame, params); | |
53 n = 0; | |
54 for (i = 0; i < 5; i++) | |
55 printf(" %u", params[n++]); | |
56 putchar('\n'); | |
57 for (i = 0; i < 4; i++) { | |
58 putchar(' '); | |
59 for (j = 0; j < 13; j++) | |
60 printf(" %u", params[n++]); | |
61 putchar('\n'); | |
62 } | |
51 break; | 63 break; |
52 case 0xD0: | 64 case 0xD0: |
53 fputs("FR", stdout); | 65 fputs("FR", stdout); |
54 gsm_explode(dummy_state, frame, fr_params); | 66 gsm_explode(dummy_state, frame, params); |
55 n = 0; | 67 n = 0; |
56 for (i = 0; i < 8; i++) | 68 for (i = 0; i < 8; i++) |
57 printf(" %u", fr_params[n++]); | 69 printf(" %u", params[n++]); |
58 putchar('\n'); | 70 putchar('\n'); |
59 for (i = 0; i < 4; i++) { | 71 for (i = 0; i < 4; i++) { |
60 putchar(' '); | 72 putchar(' '); |
61 for (j = 0; j < 17; j++) | 73 for (j = 0; j < 17; j++) |
62 printf(" %u", fr_params[n++]); | 74 printf(" %u", params[n++]); |
63 putchar('\n'); | 75 putchar('\n'); |
64 } | 76 } |
65 break; | 77 break; |
66 } | 78 } |
67 } | 79 } |