Sorry. I mean that VQ is probably sensitive. Will hack on interleave code. Bruce Perens <[email protected]> wrote:
>Remember VQ at 1200. > >Kristoff Bonne <[email protected]> wrote: > >>Hi all, >> >> >>For the development of the 2400 bps modem, we also need a FEC system >>that goes with it. >> >> >> >>Please find below a proposal for this. >>If somebody has any ideas or remarks about this, feel free to reply. >> >> >> >>Concidering, >> >>* the "production" codec2 gmsk modem specification is based on a number >>of different "profiles". These are "typical usage" senarios which match >>a certain choice of features provided by them mode. The goal is to >>reduce the complexity of the modem as it only needs to implement the >>features specified for this particular profile. >>Current profiles are "local communication" and "DX". >> >>* The "local communication" profile is designed for -as its name >>implies- local communication and has the least complexity. One of the >>elements of this profile is that everything related for FEC (forward >>error correction) and interleaving (changing the order of the bits to >>make it less vulnerable to burst errors) is only applied INSIDE the 40 >>ms timeslot. >> >>* For reasons of syncronisation, a 24 bits "sync/type-of-frame" pattern >>has to be inserted into the stream and be repeated. This is send at >>least once per eight 40ms timeslots. If no sync/type-of-frame is send, >>the space can be used for voice (in this case, voice FEC). >>Future options of the specification will provide the possibility to >>encapsulate data into that place of the stream. However, the current >>version of the specification does not offer this possibility. >> >> >>* A 40 ms timeslot for a 2400 bps modem is equivalent to 96 bits. The 96 >>bit structure depends on two factors: >>-> Is there a sync/type-of-frame pattern present in that timeslot >>-> Is the 1200 or 1400 bps voice codec used? >> >>The structure can be found further down this document. >> >> >> >>* A codec2 frame is based on a 40 ms timeslot, containing information >>about four 10 ms frames. It has the following structure: >> >>1/ For the 1400 bps voice codec >>- 1 "voiced" bit for frame 0 >>- 1 "voiced" bit for frame 1 >>- 8 "energy or WoE" bits for frames 0 and 1 >>- 1 "voiced" bit for frame 2 >>- 1 "voiced" bit for frame 3 >>- 8 "energy or WoE" bits for frames 2 and 3 >>- 36 "LSP" bits for frames 0 up to 3 >>Total: 56 bits >> >>The 36 LSP bits represent 10 values, using between 2 and 4 bits for >>every values. >> >> >>2/ For the 1200 bps voice codec >>- 1 "voiced" bit for frame 0 >>- 1 "voiced" bit for frame 1 >>- 8 "energy+wo" bits for frames 0 and 1 >>- 1 "voiced" bit for frame 2 >>- 1 "voiced" bit for frame 3 >>- 8 "energy+wo" bits for frames 2 and 3 >>- 27 "LSP" bits for frames 0 up to 3 >>- 1 "spare" bit >>Total: 48 bits >> >>The 27 bits "LSP" bits can be broken down into 3 x 9-bit VQ indexes. >> >> >> >> >>* Not all information in the codec2 voice frame is equaly important. >>Corrupting certain bits produces more audiable error then other bits. >>The importance of the different groups of bits is as follows (in >>descending order): >>- voicing bits >>- energy+Wo bits >>- MSB part of the LSPs >>- remaining part of the LSPs >>- spare bit >> >> >>* The current FEC systems can be applied: >>- golay(24,12,8): this uses 12 FEC bits to protect 12 data bits; with >>the ability to correct up to 3 bits and detect up to 7 bit errors >>(see http://en.wikipedia.org/wiki/Binary_Golay_code) >> >>- hamming(8,4,4): this uses 4 FEC bits to protect 4 data bits; with the >>ability to correct up to 1 bit and detect up to 2 bit errors >>(see >>http://en.wikipedia.org/wiki/Hamming_code#Hamming.287.2C4.29_code_with_an_additional_parity_bit) >> >> >>These FEC systems are chosen because they operate a relative small block >>of bits (as all FEC is done inside a 40 ms timeframe), free of patents >>and opensource source code for it is available. >> >> >> >>As a result, the following 96 bit frame-structures are defined: >> >>1/ for the 1200 bps voice codec: >>1a/ for a timeslot WITHOUT sync/type-of-frame pattern: >>- 48 bits codec2 voice >>- 48 bits FEC >> >>In this senario, four times golay(24,12,8) is applied on the complete >>codec2 frame. >> >> >>1b/ for a timeslot WITH sync/type-of-frame pattern: >>- 24 bits sync/type-of-frame >>- 48 bits codec2 voice >>- 24 bits FEC >> >>In this senario, two times golay(24,12,8) is applied, with the ability >>to protect 24 bits. The following bits are be protected: >>- all 4 voiced bits >>- all 16 energy+wo bits >>- 4 MSB bits of LSPs (Which ones? Is there a preference for certain LSPs). >> >> >>2/ for the 1400 bps voice codec: >>2a/ for a timeslot WITHOUT sync/type-of-frame pattern: >>- 56 bits codec2 voice >>- 40 bits FEC, >> >>In this senario, >>. three times golay(24,12,8) is applied, with the ability to protect 36 >>bits. >>. in addition, once hamming(8,4,4) is applied, with the ability to >>protect 4 bits >> >>The following bits are be protected >>- all 4 voiced bits >>- all 16 energy+wo bits >>- 20 MSB bits of LSPs (2 bits for every of the 10 values?) >> >> >>2b/ For a timeslot WITH sync/type-of-frame pattern: >>- 24 bits sync/type-of-frame >>- 56 bits codec2 voice >>- 16 bits FEC >> >>In this senario, >>- once golay(24,12,8) is applied, with the ability to protect 12 bits >>- in addition, one hamming(8,4,4) is applied, with the ability to >>protect 4 bits. >> >>Firstly, the golay(24,12,8) is applied to the following bits: >>- all 4 voiced bits >>- the 8 energy/wo bits that apply to the first two codec2 frames of the >>(4 frame) codec2 timeslot >> >>For the 4 remaing FEC bits (the hamming(8,4,4) block), I would like to >>propose this: >>The hamming(8,4,4) is applied NOT 4 of the other eight energy+wo bits >>(for the 3th and 4th frame), but 4 of the MSBs of the LSPs. >> >>The reason for this is as follows: >>- the golay FEC decoding not only provides the ability to correct >>errors; but also check on the amount of errors found. >> >>- This means that the decoding process has knowledge of the quality of >>the link >> >>- If the decoding noticed that the quality is bad (high BER); the FEC >>decoder can decide that -as the 3th and 4th frame (where the enery+wo >>bits are not well protected) are going to be corrupted anyway- it will >>ignore these last frames frames and put a copy of first two frames >>(which do have FEC applied) in these frames. >> >>Based on that, it makes more sence to use the 4 FEC bits of the >>additional hamming(8,4) block to protect a part of the LSP-information >>as this applies for all 4 frames of the 40 ms timeslot. >> >> >> >> >>Please let me know if you have any remarks or questions. >> >>73 - Kristoff - ON1ARF >> >> >>------------------------------------------------------------------------------ >>Everyone hates slow websites. So do we. >>Make your web apps faster with AppDynamics >>Download AppDynamics Lite for free today: >>http://p.sf.net/sfu/appdyn_sfd2d_oct >>_______________________________________________ >>Freetel-codec2 mailing list >>[email protected] >>https://lists.sourceforge.net/lists/listinfo/freetel-codec2 >------------------------------------------------------------------------------ >Everyone hates slow websites. So do we. >Make your web apps faster with AppDynamics >Download AppDynamics Lite for free today: >http://p.sf.net/sfu/appdyn_sfd2d_oct >_______________________________________________ >Freetel-codec2 mailing list >[email protected] >https://lists.sourceforge.net/lists/listinfo/freetel-codec2 ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Freetel-codec2 mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freetel-codec2
