71
2. Модифицируйте структуру данных ThrAudioproc для включения
канала данных декодера и назовите его pipDecode.
3. Сохраните и закройте заголовочный файл thrAudioproc.h.
4. Откройте исходный файл thrAudioproc.с.
5. Включите thrDecode.h в начало этого файла.
Затем, Вам необходимо инициализировать структуру данных потока
обработки звука для подключения его к каналу данных декодера
.
6. Модифицируйте статическое объявление thrAudioproc для назначе-
ния &pipDecode дескриптору канала декодера.
Вы может обратиться к файлу thrAudioproc.h для определения распре-
деления положения внутри структуры данных.
Интегрирование тракта данных потоков кодера и декодера
в поток обработки звука
Прежде чем начать дальнейшую работу с воспроизведением/записью звука,
посмотрим на функцию thrAudioprocRun( ). Обратите внимание на реализацию
пути данных кодера. Аудио данные для обработки потоком кодера, располагаются
в pipEncode.
Следующие пункты показывают, что происходит в функции thrAudioproc( ):
1. Сначала следует проверить, что свободный от фреймов буфер дос-
тупен в
pipEncode для записи.
UTL_assert(PIP_getWriteNumFrames( thrAudioProc.pipEncode ) > 0 );
2. После этого, распределите этот буфер фреймов из PIP и получите
указатель на него.
PIP_alloc( thrAudproc.pipEncode );
dstEncode = PIP_getWriterAddr(thrAudioproc.pipEncode );
3. Затем Вам необходимо копировать звук с линейного входа,
микшированный с декодированным аудио, в выделенный буфер.
for ( i = 0; i < FRAMELEN; i++) {
dstEncode[i] = thrAudioProc.bufIntermediate[i];
}
4. После этого, Вам необходимо поместить буфер фреймов обратно в
pipEncode, таким
образом, делая его доступным для потока кодера.
PIP_put( thrAudioproc.pipEncode );
Итак, теперь Вам необходимо смешать тракт данных декодера (воспроизво-
димое аудио) со звуком на линейном входе. Выполните следующие пункты: