1. 1 The Motivation




Download 0,89 Mb.
bet25/32
Sana22.07.2021
Hajmi0,89 Mb.
#15652
1   ...   21   22   23   24   25   26   27   28   ...   32
6.2 Codec Subsystem
There were major problems with the Codec subsystem, a freely available implementation of neither GSM nor G.723.1 could be found for the Windows CE environment especially one which supported the multiple chipsets Windows CE spans. It was decided after a week of searching that the compression interface should still be implemented into the system, such that, if an implementation of any encoder was found other than 64kbps PCM then it could be installed at a latter date.
The Codec subsystem similarly to the audio subsystem has two circular queue structures for both incoming and out going audio blocks; the codec subsystem has the following functions;


  • codec_setup() setups up the internal queue structures for both the incoming and outgoing functions. The threads codec_process_in() and codec_prcess_out are also started.

  • codec_stop() stops the two threads from executing and tears down both the incoming and outgoing queues.

  • codec_audio_in () allows audio, to be passed into the subsystem from the pack subsystem where it is placed on to an internal circular queue. The codec_process_in thread is signalled, notifying it that their is a block awaiting processing.

  • codec_process_in() is a thread which once started waits for a signal from the codec_audio_in function, once the signal has been received the next block is taken from the incoming queue and passes first through the decrypt function and then through the decode function and then the block is passed to the audio subsystem to be played.

  • codec_decrypt(unsigned char *block) takes the passed block and simply decrypts it with a bespoke encryption cipher.

  • codec_decode(unsigned char *block) has no function at the moment until a implementation of a codec for Windows CE can be found.

  • codec_audio_out() allows audio blocks to be passed into the subsystem from the audio subsystem which needs processing to be sent to the other machine. The block is placed on the queue and the codec_process_out thread is signalled.

  • codec_process_out() similarly to codec_process_in this thread once started waits for a signal and then takes the next available block and first passes it though the codec_encode then through codec_encrypt and then pass it to the pack subsystem.

  • codec_encode(unsigned char *block) has no implementation as of yet.

  • codec_encrypt(unsigned char *block) takes the block and encrypts it to protect it using a bespoke cipher.

With the problems faced with the audio subsystem leading to a lengthy delay in the development of the VoIPv6 system, the codec subsystem was scheduled less time for implementation than originally planned this meant implementing the asymmetric/symmetric hybrid encryption was not possible at this stage so a simple symmetric system was used using a constant key. This encryption is not secure however with the system being programmed modularly then this subsystem can easily be replaced at a later date.



Download 0,89 Mb.
1   ...   21   22   23   24   25   26   27   28   ...   32




Download 0,89 Mb.