Разработка функций для класса интерфейса между модулем УШ и модулем протокола RTP

Отчет по практике - Компьютеры, программирование

Другие отчеты по практике по предмету Компьютеры, программирование

едаваемых из/в КИ модулями УШ.

Управляющая информация, формируемая модулем УШ

 

Модуль УШ формирует для модуля протокола RTP информацию, управляющую номером области памяти при работе методом пинг-понг. Номер области памяти может принимать два значения - 1 и 2, и определяет область памяти, в которую модуль протокола RTP должен записывать информацию (управляющая информация кодированием/декодированием, данные, извлеченные из пакетов RTP) или, из которой он должен считывать информацию (речевые данные, формируемые модулем УШ).

 

Данные, формируемые модулями УШ

 

Модуль УШ извлекает из всех КИ, участвующих в приеме и/или передаче речевого трафика, данные длительностью по 10 мс (определяется из информации управления кодированием/декодированием). Если в управляющей информации кодирования/декодирования для КИ установлен бит необходимости распознавания DTMF и акустических сигналов, модуль УШ выполняет распознавание этих сигналов (цифра DTMF, сигнал ЗАНЯТО и т.д.).

При наличии в канальном интервале тонального сигнала, речевые данные игнорируются до тех пор, пока не будет обнаружен конец передачи тонального сигнала.

Модули УШ преобразовывают речевые данные в формат в соответствии с управляющей информацией кодирования и помещают результат в соответствующую область данных. Байты речевых данных упорядочиваются в сетевом порядке.

Информация о распознанных тональных сигналах также записывается в соответствующую область памяти КИ для данных. При распознании сигнала (например, цифра DTMF, сигнал ЗАНЯТО), модуль УШ записывает данные распознанного сигнала в предназначенную для этого область памяти и устанавливает признак данных тонального сигнала в служебной информации. Так как поле длительности сигнала имеет размер в 2 байта, то максимальное значение длительности сигнала в единицах временной метки будет равно 64K, что соответствует 8,192 секундам. Поэтому, в случае, если сигнал длится более 8 секунд, модуль УШ устанавливает в служебной информации признак нового сигнала и продолжает отсчет длительности сначала.

 

Данные, формируемые модулем протокола RTP

 

Области памяти заполняются модулем протокола RTP данными, извлеченными из пакетов, поочередно, каждые 10мс, для всех КИ, участвующих в приеме и/или передаче речевого трафика.

Если пакет был потерян, то в бит признака данных, в количество байтов данных и в признак наличия данных тонального сигнала записывается 0;

Если был принят пакет с полезной нагрузкой CN, то в признак данных записывается 1, а количество байтов данных будет соответствовать размеру полезной нагрузки CN;

В случае отсутствия пакетов (тишина), в признак данных записывается 1, а в количество байтов 0.

Размер речевых данных соответствует интервалу 10 мс. Байты речевых данных упорядочиваются в сетевом порядке.

При получении пакетов с данными тональных сигналов модуль протокола RTP записывает их в соответствующую для КИ область памяти и устанавливает признак наличия данных тонального сигнала в служебную информацию. Длительность тонального сигнала соответствует длительности из принятого пакета. Если длительность (в единицах временной метки) превышает 10 мс, то данные тонального сигнала будут повторяться в областях данных необходимое количество интервалов в 10мс.

Задание

 

Разработать отдельные функции для класса интерфейса между модулем кодирования/декодирования речевых данных (УШ) и модулем протокола RTP. В частности:

основную потоковую функцию;

функцию считывания закодированных модулем УШ данных, и помещения их в циклический буфер накопления;

функцию предоставления данных из циклического буфера накопления по запросу другого потока;

функцию помещения другим потоком данных в циклический буфер воспроизведения для последующей записи их для декодирования в модуль УШ;

функцию записи в модуль УШ данных из циклического буфера воспроизведения.

 

Рис.1. Схема взаимодействия между модулем УШ и модулем протокола RTP

 

Модуль УШ и модуль протокола RTP входят в состав комплекса программ шлюза доступа IP.

 

Рис.2. Схема шлюза доступа IP

 

Модуль УШ и модуль протокола RTP - программы, работающие в разных процессорах Модуль УШ - в DSP процессоре. Модуль протокола RTP - в процессоре ARM или промышленном компьютере. Взаимодействие между модулями осуществляется через память, которая находится в DSP модулей УШ, при помощи интерфейса HPI (параллельный интерфейс). Операции чтения/записи выполняются посредством разработанных функций драйвера.

Основное назначение модуля УШ - кодирование/декодирование речевых данных. Модуль УШ обрабатывает речевые данные одного ИКМ (32 канальных интервала). Каждые 10 мс он кодирует входящий речевой поток тех каналов, которые ему задает модуль протокола RTP, и декодирует в обратном направлении. Используемые кодеки - G711, G726-16, G729.

Основное назначение модуля протокола RTP - упаковка закодированных речевых данных принятых из модуля УШ в пакеты RTP и отправка их в сеть IP, и, в обратном направлении - распаковка пакетов RTP, принятых из сети IP и предоставление данных для декодировании модулю УШ. Прием и запись речевых данных выполняется каждые 10 мс.

 

Реализация главного потока

 

#ifdef HAVE_CONFIG_H

#include

#endif

#include

#include

#include

#include

#include "UH_interface.h"

#include "servis.h"

#include "thread.h"namespace std;