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

Reply via email to