Разработка функций для класса интерфейса между модулем УШ и модулем протокола 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;