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

Reply via email to