HRv1 error flags » History » Version 1
falconia, 07/22/2024 07:22 PM
1 | 1 | falconia | h1. HRv1 error flags |
---|---|---|---|
2 | |||
3 | On TCH/F channels for FR and EFR, the channel decoder produces only one Boolean error flag: BFI, Bad Frame Indicator. It indicates whether the decoded frame should be regarded as good or bad - see [[BFI criteria]] page. For TCH/HS there are two officially defined error flags per frame: BFI and UFI, the latter being Unreliable Frame Indicator. The TRAU-UL frame format of GSM 08.61 carries both BFI and UFI. However, a more thorough review of the available evidence from ETSI and from one concrete vendor implementation (TI Calypso DSP) indicates that the original design for TCH/HS channel decoding exhibits a total of *three* error flags: BFI, UFI and BCI. The meaning of the latter acronym is unknown; one possible meaning might be Bad Channel Indicator. |
||
4 | |||
5 | h2. Evidence for BCI in ETSI reference code |
||
6 | |||
7 | The venerable GSM 06.06 code drop includes a utility named REID, which stands for Residual Error Insertion Device. This program is not a part of the speech codec proper (neither encoder nor decoder), hence the functions implemented therein will not be found in a [[TRAU]], for example. Instead this program simulates the radio leg from the output of the speech encoder on the Tx end to Rx DTX handler input on the receiving end; in the context of codec testing, the input to REID is the output of the encoder process and the output from REID serves as decoder input test sequences. The published version simulates only error-free transmission, but the code is structured to facilitate true simulation of channel errors. (This situation makes one wonder if perhaps the original developers of GSM-HR codec started out with a REID program that included error simulation, but then it was sanitized for publication.) |
||
8 | |||
9 | This "REID source":https://www.freecalypso.org/hg/gsmhr-codec-ref/file/tip/reid.c includes a function (@swSidDetection@) that implements ternary SID classification of GSM 06.41 section 6.1.1 - the latter spec also refers to this C code, but declares it to be an example, rather than normative. However, if we look at the "body of this function":https://www.freecalypso.org/hg/gsmhr-codec-ref/file/tip/reid.c#l826, we see an "interesting oddity":https://www.freecalypso.org/hg/gsmhr-codec-ref/file/tip/reid.c#l969: one of the bit-counting thresholds for SID classification depends on a mystery error flag from the channel decoder. As we take a closer look at the interface to this function and the code comments in two different places (see lines "154-156":https://www.freecalypso.org/hg/gsmhr-codec-ref/file/tip/reid.c#l154 and "808-809":https://www.freecalypso.org/hg/gsmhr-codec-ref/file/tip/reid.c#l808), we see that the channel decoder puts out 3 error flags: BFI, UFI and BCI. We know BFI and UFI - they are defined in GSM 06.41 spec and included in the TRAU-UL interface of GSM 08.61 - but what is BCI? |
||
10 | |||
11 | It appears that BCI flag was omitted from the interoperable interface of GSM 08.61 (and from chapter 6 of GSM 06.41, which defines an equivalent interface in more abstract terms, also applicable to MS implementations) because it has no effect on the Rx DTX handler: its only effect is on the @swSidDetection@ function or its equivalent in hardware/DSP implementations. |