ть байтів 0.
Розмір мовних даних відповідає інтервалу 10 мс. Байти мовних даних упорядковуються в мережевому порядку. p align="justify"> При отриманні пакетів з даними тональних сигналів модуль протоколу RTP записує їх у відповідну для КІ область пам'яті і встановлює ознака наявності даних тонального сигналу в службову інформацію. Тривалість тонального сигналу відповідає тривалості з прийнятого пакета. Якщо тривалість (в одиницях тимчасової мітки) перевищує 10 мс, то дані тонального сигналу будуть повторюватися в областях даних необхідну кількість інтервалів в 10мс. p align="center"> Завдання
Розробити окремі функції для класу інтерфейсу між модулем кодування/декодування мовних даних (УШ) і модулем протоколу RTP. Зокрема:
основну потокову функцію;
функцію зчитування закодованих модулем УШ даних, і приміщення їх в циклічний буфер накопичення;
функцію надання даних з циклічного буфера накопичення за запитом іншого потоку;
функцію приміщення іншим потоком даних у циклічний буфер відтворення для подальшого запису їх для декодування в модуль УШ;
функцію запису в модуль УШ даних з циклічного буфера відтворення.
В
Рис.1. Схема взаємодії між модулем УШ і модулем протоколу RTP
Модуль УШ і модуль протоколу RTP входять до складу комплексу програм шлюзу доступу IP.
В
Рис.2. Схема шлюзу доступу IP
Модуль УШ і модуль протоколу RTP - програми, що працюють у різних процесорах Модуль УШ - в DSP процесорі. Модуль протоколу RTP - в процесорі ARM або промисловому комп'ютері. Взаємодія між модулями здійснюється через пам'ять, яка знаходиться в DSP модулів УШ, за допомогою інтерфейсу HPI (паралельний інтерфейс). Операції читання/запису виконуються за допомогою розроблених функцій драйвера. p align="justify"> Основне призначення модуля УШ - кодування/декодування мовних даних. Модуль УШ обробляє мовні дані одного ІКМ (32 канальних інтервалу). Кожні 10 мс він кодує вхідний мовний потік тих каналів, які йому задає модуль протоколу RTP, і декодує у зворотному напрямку. Використовувані кодеки - G711, G726-16, G729. p align="justify"> Основне призначення модуля протоколу RTP - упаковка закодованих мовних даних прийнятих з модуля УШ в пакети RTP і відправлення їх в мережу IP, і, у зворотному напрямку - розпакування пакетів RTP, прийнятих з мережі IP і надання даних для декодуванні модулю УШ. Прийом та запис мовних даних виконується кожні 10 мс. br/>
Реалізація головного потоку
# ifdef HAVE_CONFIG_H
# include
# endif
# include
# include
# include
# include
# include "UH_interface.h"
# include "servis.h"
# include "thread.h" namespace std;
t_UHInterface * pUHInterface [2];
// основна функція потоку інтерфейсу УШ
void * main_UHInterface (void * arg)
{
unsigned char n = * (unsigned char *) arg;
pUHInterface [n] -> run ();
return NULL;
} main (int argc, char * argv [])
{
int ierr, i, n;
// t_UHInterface * pUHInterface [2];
t_thread * pUHInterfaceThread [2];
timespec sleeptimer;
// ========= параметри виводу ============
// біти 7 6 5 4 3 2 1 0
// -----------------------
// | di | do | | | | | | |
// -----------------------
// di - дані, прийняті з DSP2 модуля УШ
// do - дані, передані в DSP2 модуля УШ
// параметри виводу на консоль за замовчуванням = 0xc0;
// додаткові параметри виводу
// для модуля УШ 0 [DI] = 0x00000001;// номером біта встановленому в 1 відповідає номер каналу для виведення
ParamRtpPrint [DO] = 0x00000001;
// для модуля УШ 1 [DI +1] = 0x00000001;// номером біта встановленому в 1 відповідає номер каналу для виведення [DO +1] = 0x00000001;
// це рекомендується при використанні потоків реального часу
// locks all pages mapped into the address space of the calling
// process. This inc...