FreeCalypso > hg > gsm-codec-lib
annotate doc/AMR-EFR-hybrid-emu @ 585:3c6bf0d26ee7 default tip
TW-TS-005 reader: fix maximum line length bug
TW-TS-005 section 4.1 states:
The maximum allowed length of each line is 80 characters, not
including the OS-specific newline encoding.
The implementation of this line length limit in the TW-TS-005 hex file
reader function in the present suite was wrong, such that lines of
the full maximum length could not be read. Fix it.
Note that this bug affects comment lines too, not just actual RTP
payloads. Neither Annex A nor Annex B features an RTP payload format
that goes to the maximum of 40 bytes, but if a comment line goes to
the maximum allowed length of 80 characters not including the
terminating newline, the bug will be triggered, necessitating
the present fix.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 25 Feb 2025 07:49:28 +0000 |
parents | ad032051166a |
children |
rev | line source |
---|---|
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
1 Emulation of other people's AMR-EFR hybrid implementations |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
2 ========================================================== |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
3 |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
4 [Please see AMR-EFR-philosophy article for background information on the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
5 differences between classic GSM-EFR and the 12k2 mode of AMR, and how ETSI/3GPP |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
6 loosened their regulation on bit-exactness of EFR, then continue here.] |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
7 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
8 Experiments reveal that the extant commercial GSM networks of T-Mobile USA and |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
9 Telcel Mexico (and likely other countries' GSM networks too) use a GSM speech |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
10 transcoder implementation that performs EFR encoding and decoding (for times |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
11 when the MS declares no support for AMR and the network falls back to EFR) per |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
12 the alternative which we call AMR-EFR hybrid. The needed experiments are done |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
13 by using a FreeCalypso phone or devboard as the MS (declaring yourself to the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
14 network as non-AMR-capable via AT%SPVER), capturing TCH DL and feeding TCH UL |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
15 with FreeCalypso tools, and using a SIP-to-PSTN connectivity provider (BulkVS |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
16 or Anveo) on the other end of the test call that allows the experimenter to |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
17 receive the PCMU or PCMA sample stream coming out of the GSM network's speech |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
18 transcoder and feed a crafted PCMU/PCMA sample stream in the other direction. |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
19 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
20 In this experimental setup, bit-exact details of how the GSM network under study |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
21 implements EFR decoding can be tested by feeding a controlled sequence of EFR |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
22 codec frames (beginning with at least two DHFs) to GSM Um uplink and observing |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
23 the PCMU or PCMA sample stream received on the IP-PSTN end of the call. |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
24 Similarly, bit-exact details of how the NUS implements EFR encoding can be |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
25 tested by feeding controlled PCMU/PCMA sample streams into the call from IP-PSTN |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
26 and observing what the network emits on GSM Um downlink. In the latter case, |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
27 frame synchronization finding tricks described in ETSI/3GPP test sequence specs |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
28 need to included as part of the experiment. |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
29 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
30 When these experiments were performed on the GSM networks of T-Mobile USA and |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
31 Telcel Mexico, it was immediately apparent that they do not implement EFR |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
32 following the original bit-exact code of GSM 06.53: feeding any of the original |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
33 EFR test sequences from GSM 06.54 to the NUS does not produce matching results. |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
34 However, when I tried feeding EFR codec frame sequences from amr122_efr.zip |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
35 (the late addendum to GSM 06.54 for the AMR-EFR hybrid option) to GSM UL, the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
36 PCMU (T-Mobile USA) or PCMA (Telcel Mexico) output from the GSM network's EFR |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
37 decoder matched _those_ test sequences, indicating that these networks use the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
38 AMR-EFR alternative implementation. |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
39 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
40 Creating tinkerer-oriented FOSS tools that can emulate or replicate the poorly |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
41 defined "EFR alternative 2" implemented by these extant commercial networks has |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
42 been a sportive challenge ever since. The present development in Themyscira |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
43 GSM codec libraries and utilities suite is a step toward conquering that |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
44 challenge: we are now able to replicate the mystery commercial transcoder in |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
45 non-DTX operation, specifically: |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
46 |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
47 a) We can feed a SID-free stream of EFR codec frames to GSM UL, beginning with |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
48 DHF, and get the expected result on PCMU or PCMA; |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
49 |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
50 b) In the encoder direction, for the first 7 frames after EHF, before DTX is |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
51 allowed to kick in, we can get GSM DL output from the network that matches |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
52 our expectations. |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
53 |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
54 Encoder 5 ms delay and DHF transformation |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
55 ========================================= |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
56 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
57 One of the diffs between classic EFR and MR122 in the encoder direction is the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
58 artificial delay of 5 ms introduced in the AMR version. In true multirate |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
59 operation this delay is needed to support seamless switching between codec |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
60 modes, but when the only allowed codec rate is 12k2 (which is the case with EFR |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
61 by definition), this delay is pure waste. (Needless to say, an extra delay of |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
62 5 ms is nothing compared to the egregious latencies introduced by today's ugly |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
63 and horrible world of IP-based transport everywhere, but still...) This |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
64 artificial 5 ms delay in the encoder is the reason for the DHF difference |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
65 between EFR and MR122 - but here is the wild part: instead of recognizing this |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
66 artificial delay as unnecessary and wasteful for 12k2-only EFR and removing it |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
67 from the AMR-EFR hybrid contraption, those commercial transcoder vendors and |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
68 the people who prepared amr122_efr.zip for ETSI/3GPP (were they the same |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
69 people?) kept this 5 ms encoder delay, keeping the whole encoder unchanged AMR |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
70 except for whatever insane trickery they did to fit EFR DTX logic and EFR SID |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
71 generation into it, but added special DHF transformation logic on the output of |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
72 this AMR encoder to produce compliant EFR DHF when the input is EHF. |
136
8eb0e7a39409
doc: document command line utilities
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
74 Exactly how this DHF transformation is done in those actually-deployed AMR-EFR |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
75 hybrid encoders is a bit of a mystery. My first thought was to compare the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
76 speech parameters emitted by the AMR encoder against MR122 DHF, and if the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
77 result is a match, replace that MR122-DHF parameter set with EFR DHF. This |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
78 approach is implemented in the simple amr_dhf_subst_efr() function in libtwamr. |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
79 One distinctive signature of this approach is that the output of a hybrid |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
80 encoder following this method can never equal MR122 DHF: this one particular |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
81 bit pattern is precluded from the set of possible outputs under all conditions. |
457
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
82 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
83 However, subsequent experiments quickly revealed that the logic implemented by |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
84 the transcoder in the network of T-Mobile USA must be different. One of the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
85 counter-intuitive effects of the 5 ms artificial delay in the MR122 encoder is |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
86 what happens when the encoder is in its homed state and you feed it an input |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
87 frame whose first 120 samples are all 0x0008, but some (as few as one or as many |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
88 as all) of the last 40 samples are different. This frame does not meet the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
89 definition of EHF and won't be recognized as such - the encoder won't get |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
90 rehomed once again after processing this frame - yet the output will be |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
91 bit-exact MR122 DHF. How do those AMR-EFR hybrid encoders handle *this* case? |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
92 |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
93 Experiments on T-Mobile reveal that in the case in question, the encoded frame |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
94 is emitted with the bit pattern of MR122 DHF, *not* transformed into EFR DHF. |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
95 Because MR122-DHF output is impossible with an encoder that implements logic |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
96 like our amr_dhf_subst_efr() first cut, we know (by modus tollens) that |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
97 T-Mobile's implementation uses some different logic. |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
98 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
99 Our new (current) working model is implemented in amr_dhf_subst_efr2(): we |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
100 replace the output of the AMR encoder with EFR DHF if the raw encoder output |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
101 was MR122 DHF *and* the input frame was EHF. This version appears to match |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
102 the observed behavior of T-Mobile USA so far. |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
103 |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
104 EFR DHF in the decoder direction |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
105 ================================ |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
106 |
467
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
107 The way decoder homing works in all ETSI/3GPP-defined speech codecs, there is |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
108 an explicit check against known DHF bit pattern (up to first subframe only) at |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
109 the beginning of the decoder (if the decoder is homed and the input is DHF per |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
110 this reduced check, artificially emit EHF, stay homed and do nothing more), and |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
111 a second similar check against the known DHF bit pattern (full frame comparison |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
112 this time) at the end of the decoder, triggering the state reset function on |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
113 match. These checks are (and can only be) implemented by explicit comparison |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
114 against a known hard-coded DHF pattern - hence it doesn't matter in the decoder |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
115 case whether the DHF is natural (as in all properly ETSI-defined codecs) or |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
116 artificial as in AMR-EFR hybrid. Thus the "correct" handling of DHF in the |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
117 AMR-EFR hybrid decoder is a matter of replacing the check against MR122 DHF bit |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
118 pattern with a check against the different bit pattern of EFR DHF. |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
119 |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
120 The decoder engine in libtwamr supports this different-DHF option for MR122 |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
121 decoding by way of a bit set in the mode field in struct amr_param_frame - see |
ad032051166a
doc: AMR-EFR-hybrid-emu new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
457
diff
changeset
|
122 the detailed description in AMR-library-API article. |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
123 |
457
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
124 Command line utilities for AMR-EFR hybrid |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
125 ========================================= |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
126 |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
127 The present package includes a small set of command line utilities that work |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
128 with the AMR-EFR hybrid described above: |
311
83408f67a96c
doc/AMR-EFR-philosophy: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
129 |
457
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
130 amrefr-encode-r |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
131 amrefr-decode-r |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
132 |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
133 These two utilities function just like gsmefr-encode-r and |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
134 gsmefr-decode-r described in Codec-utils article, but implement the |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
135 AMR-EFR hybrid version of the codec instead of original EFR. The |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
136 no-DTX limitation applies: amrefr-encode-r lacks -d option, and the |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
137 input to amrefr-decode-r must not contain any SID frames. |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
138 |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
139 amrefr-tseq-enc |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
140 amrefr-tseq-dec |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
141 |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
142 These two utilities are AMR-EFR counterparts to gsmefr-etsi-enc and |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
143 gsmefr-etsi-dec test programs described in EFR-testing article. They |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
144 pass all tests on the non-DTX t??_efr.* sequences in ETSI's |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
145 amr122_efr.zip, but not on any of the DTX sequences included in the |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
146 same ZIP. Just like amrefr-encode-r, amrefr-tseq-enc lacks -d option, |
9bcf65088006
doc/AMR-EFR-philosophy: document implemented solution
Mychaela Falconia <falcon@freecalypso.org>
parents:
311
diff
changeset
|
147 and amrefr-tseq-dec rejects input containing SID frames. |