1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wksuper-lark-release

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
MANUAL.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 00:34 3a2100d

Руководство пользователя

1 класс Lark

  • Заголовочный файл: <lark/lark.h>
  • Библиотека: liblark.so, liblark.dylib или liblark.dll
  • Публичные API

1.1 static Lark &Instance()

Возвращает уникальный экземпляр lark.

1.2 virtual Route *NewRoute(const char *name, Route::Callbacks *cbs = nullptr) = 0;

Создаёт маршрут с именем name, который может быть одним из 26 маршрутов «RouteA», «RouteB», ..., «RouteZ». cbs — необязательный аргумент. Используется, когда что-то нужно сделать при запуске маршрута, остановке маршрута или выходе из маршрута. Примечание: не вызывайте API маршрута (например, route->SetParameter() и т. д.) в этих обратных вызовах, иначе возникнет тупик.

1.3 virtual void DeleteRoute(Route *route) = 0;

Удаляет маршрут вручную. Это не обязательное действие, если маршрут не используется, поскольку все ресурсы маршрутов управляются экземпляром lark, и все они будут автоматически удалены при уничтожении экземпляра lark.

1.4 virtual FIFO *NewFIFO(unsigned int rate, size_t sampleSizeInBytes, samples_t bufSizeInSamples, samples_t delayInSamples = 0) = 0;

Создает FIFO, который можно использовать двум потокам: один для записи данных, другой для чтения данных. В качестве примера см. larkexample3.cpp.

1.5 virtual void DeleteFIFO(FIFO *fifo) = 0;

Удаляет FIFO вручную. Это не обязательное действие, если FIFO не используется, так как все ресурсы FIFO управляются экземпляром lark, и все они будут удалены автоматически при уничтожении экземпляра lark.

2 класс Route

  • Заголовочный файл: <lark/Route.h>
  • Библиотека: liblark.so, liblark.dylib или liblark.dll
  • Публичные API [TODO]

3 Готовые блоки

3.1 BlkGain

Блок BlkGain может добавлять усиление к данным входных конечных точек, и усиление вступает в силу немедленно. Внутренне данные из входной конечной точки с индексом N переходят к выходной конечной точке с тем же индексом N. То есть I00 переходит к O00, I01 переходит к O01 и так далее.

  • SO Name — «libblkgain.so»
  • Аргументы создания — Нет
  • Аргументы SetParameter — PARAMID 1: установить усиление — PARAMS: INEPIDX1 FLOATGAIN1 [INEPIDX2 FLOATGAIN2 ...] Пример: чтобы установить 0,707 для входной конечной точки 3 и 0,5 для входной конечной точки 8

C++:

lark::Parameters args{ "3", "0.707", "8", "0.5" };
route->SetParameter(blk, 1, args);

Shell:

$ lkdb setparam RouteA blkgain_0 1 3 0.707 8 0.5

Аргументы SetParameter — PARAMID 2: [TODO]

  • Аргументы GetParameter — Нет
  • Ожидание без ввода? — Да

3.2 BlkMixer

Блок BlkMixer может смешивать несколько входных конечных точек (моно на конечную точку) в одну моно выходную конечную точку. У блока также есть функция дублирования вывода. Когда подключена первая выходная конечная точка, смешанный поток будет поступать в эту выходную конечную точку. Когда подключается вторая выходная конечная точка, смешанный поток дублируется и также поступает во вторую выходную конечную точку. То же самое происходит с третьей, четвёртой и т.д. выходной конечной точкой.

  • SO Name — «libblkmixer.so»
  • Аргументы создания — PARAMID 1: коэффициент смешивания — PARAMS: [INEPIDX1 COEF1] [INEPIDX2 COEF2] ...
  • Аргументы SetParameter — Нет
  • Аргументы GetParameter — Нет
  • Ожидание без ввода? — Да

3.3 BlkInterleave

Блок BlkInterleave может объединять несколько входных конечных точек (моно на конечную точку) в один чередующийся выходной сигнал.

  • SO Name — «libblkinterleave.so»
  • Аргументы создания — Нет
  • Аргументы SetParameter — Нет
  • Аргументы GetParameter — Нет
  • Ожидание без ввода? — Да

3.4 BlkDeinterleave

Блок BlkDeinterleave может разделять один чередующийся входной сигнал на несколько моно выходных сигналов.

  • SO Name — «libblkdeinterleave.so»
  • Аргументы создания — Нет
  • Аргументы SetParameter — Нет
  • Аргументы GetParameter — Нет
  • Ожидание без ввода? — Да

3.5 BlkDelay

Блок BlkDelay может добавить задержку между входными конечными точками и выходными конечными точками.

  • SO Name — «libblkdelay.so»
  • Аргументы создания — DELAYTIME (в микросекундах, необязательно, по умолчанию 0us) SetParameter Arguments
    — PARAMID 1: set delay.
    — PARAMS: DELAYTIME (in micro-second).

GetParameter Arguments
— Нет.

Pending by No Input?
— Да.

BlkBuffer

The BlkBuffer блок способен буферизировать объём данных, поступающих из уникальной конечной точки ввода. Когда буфер заполнен, самый старый сэмпл будет перезаписан. Чтобы прочитать буферизованные данные, используйте API ioctl с id_t id, равным 0, и void *data, являющимся указателем на:

struct BlkBufferPullData {  
    // [out] *buf — выходные данные  
    void *buf;  
  
    // [in] размер buf в байтах  
    size_t size;  
  
    // [out] метка времени выходных данных  
    int64_t timestamp;  
};  

SO Name
— «libblkbuffer.so».

Creation Arguments
— RATE FORMAT CHNUM BUFFERTIME.

SetParameter Arguments
— Нет.

GetParameter Arguments
— Нет.

Pending by No Input?
— Да.

BlkStreamIn

Блок BlkStreamIn способен извлекать данные из внешнего источника через DataProducer, переданный ему при создании. Он должен быть «первым» блоком в маршруте.

SO Name
— «libblkstreamin.so».

Creation Arguments
— DATAPRODUCER.

SetParameter Arguments
— Нет.

GetParameter Arguments
— Нет.

Pending by No Input?
— Нет.

BlkStreamOut

Блок BlkStreamOut способен отправлять данные во внешний источник через DataConsumer, переданный ему при создании. Он должен быть «последним» блоком в маршруте.

SO Name
— «libblkstreamout.so».

Creation Arguments
— DATACONSUMER.

SetParameter Arguments
— Нет.

GetParameter Arguments
— Нет.

Pending by No Input?
— Да.

BlkAlsaPlayback

Блок BlkAlsaPlayback способен записывать чередующиеся данные из конечной точки ввода в библиотеку ALSA. RATE, FORMAT и CHNUM определяются конечной точкой ввода, когда она связана. BlkAlsaPlayback может принимать конечные точки вывода для дублирования данных (с отметкой времени), которые он уже записал в библиотеку ALSA.

SO Name
— «libblkalsaplayback.so».

Creation Arguments
— PCMNAME (например, «default», «hw:0,0» и т. д.). Отсутствие аргумента означает, что имя pcm — «default».

SetParameter Arguments
— Нет.

GetParameter Arguments
— Нет.

Pending by No Input?
— Да.

BlkAlsaCapture

Блок BlkAlsaCapture способен считывать чередующиеся данные из библиотеки ALSA в свою конечную точку вывода. Он должен быть «первым» блоком в маршруте. RATE, FORMAT и CHNUM определяются выходной конечной точкой, когда она связана. Этот блок зависит от libasound.so.

SO Name
— «libblkalsacapture.so».

Creation Arguments
— PCMNAME (например, «default», «hw:0,0» и т. д.). Отсутствие аргумента означает, что имя pcm — «default».

SetParameter Arguments
— Нет.

GetParameter Arguments
— Нет.

Pending by No Input?
— N/A.

BlkFileReader

Блок BlkFileReader способен считывать данные из аудиофайла PCM и выводить их в уникальную конечную точку вывода (моно или многоканальные чередующиеся каналы). Он должен быть «первым» блоком в маршруте.

SO Name
— «libblkfilereader.so».

Creation Arguments
— FILEPATH. В частности, если FILEPATH="--", filereader будет считывать данные со стандартного ввода.

SetParameter Arguments
— Нет.

GetParameter Arguments
— Нет.

Pending by No Input?
— N/A.

BlkFileWriter

Блок BlkFileWriter способен записывать монофонические или многоканальные чередующиеся данные из своей уникальной входной конечной точки в аудиофайл PCM или WAV. Он должен быть «последним» блоком в маршруте.

SO Name
— «libblkfilewriter.so».

Creation Arguments
— FILENAME. Если FILENAME="--", filewriter будет записывать аудиоданные в стандартный вывод. Если в имени файла есть суффикс ".wav", при остановке маршрута будет добавлен заголовок wav.

SetParameter Arguments
— Нет.

GetParameter Arguments
— Нет.

Pending by No Input?
— Да.

BlkPassthrough

Блок BlkPassthrough пропускает свои конечные точки ввода к своим конечным точкам вывода без каких-либо изменений. Данные из конечной точки ввода с индексом N будут поступать в конечную точку вывода с тем же индексом N. То есть I00 переходит в O00, I01 переходит в O01 и так далее.

SO Name
— «libblkpassthrough.so».

Creation Arguments
— Нет.

SetParameter Arguments
— Нет.

GetParameter Arguments
— Нет.

Pending by No Input?
— Да.

BlkSpeexResampler

... BlkSpeexResampler

Блок BlkSpeexResampler изменяет частоту дискретизации входных конечных точек на частоту дискретизации выходных конечных точек.

Все входные конечные точки должны иметь одинаковую частоту дискретизации. Частота дискретизации определяется связанной ссылкой.

Все выходные конечные точки должны иметь одинаковую частоту дискретизации. Частота дискретизации определяется связанной ссылкой.

Этот блок зависит от libspeexdsp.so.

  • SO Name: «libblkspeexresampler.so».

  • Creation Arguments:

    • MODE — «interleave» или «non-interleave». В режиме interleave принимается только одна входная конечная точка и одна выходная конечная точка. В режиме non-interleave принимаются несколько входных конечных точек (по одному каналу каждая) и несколько выходных конечных точек (по одному каналу каждая).
    • QUALITY — [0,1,...,10], где 0 — плохое качество, а 10 — очень высокое качество.
  • SetParameter Arguments: PARAMID 1: set rate; PARAMS: INRATE OUTRATE.

  • GetParameter Arguments: нет.

  • Pending by No Input?: да.

BlkSpeexPreprocessor

Блок BlkSpeexPreprocessor выполняет подавление эха и шумоподавление для своих микрофонных входных конечных точек. Индекс входных конечных точек от 0 до 15 представляет каналы микрофона (один канал на конечную точку). Индекс входных конечных точек от 16 до 31 представляет эхо-эталонные каналы (один канал на конечную точку). Чистые сигналы микрофона выводятся в конечные точки вывода (один канал на конечную точку). Этот блок зависит от libspeexdsp.so.

  • SO Name: «libblkspeexpreprocessor.so».

  • Creation Arguments: нет.

  • SetParameter Arguments: нет.

  • GetParameter Arguments: нет.

  • Pending by No Input?: да.

BlkAlign

Блок BlkAlign может выравнивать входную конечную точку микрофона (моно или чередующийся многоканальный сигнал) с входной конечной точкой эхо-ссылки (моно или чередующийся многоканальный сигнал) по их временным меткам. Входная конечная точка микрофона должна быть зафиксирована под индексом 0. Входная конечная точка эхо-ссылки должна быть зафиксирована под индексом 1. Выходная конечная точка микрофона должна быть зафиксирована под индексом 0. Выходная конечная точка эхо-ссылки должна быть зафиксирована под индексом 1. Большинство алгоритмов AEC требуют, чтобы эхо-сигналы поступали раньше сигналов микрофона с постоянной задержкой. Этот блок может достичь этого, установив параметр постоянной задержки при создании.

  • SO Name: «libblkalign.so».

  • Creation Arguments: CONSTANTDELAY (в микросекундах).

  • SetParameter Arguments: нет.

  • GetParameter Arguments: нет.

  • Pending by No Input?: да.

BlkFormatAdapter

Блок BlkFormatAdapter может преобразовывать данные из одной конечной точки ввода в другую конечную точку вывода. Внутренне данные из конечной точки ввода с индексом N будут отправляться в конечную точку вывода с тем же индексом N. То есть I00 переходит в O00, I01 переходит в O01 и так далее.

  • SO Name: «libblkformatadapter.so».

  • Creation Arguments: нет.

  • SetParameter Arguments: нет.

  • GetParameter Arguments: нет.

  • Pending by No Input?: да.

BlkSoundTouch

Блок BlkSoundTouch может увеличивать/уменьшать высоту звука, ускорять/замедлять темп звука и ускорять/замедлят скорость звука. Он принимает только одну входную конечную точку с монофоническим или чередующимся плавающим каналом и одну выходную конечную точку с монофоническим или чередующимся плавающим каналом. Этот блок зависит от libSoundTouch.so.

  • SO Name: «libblksoundtouch.so».

  • Creation Arguments: нет.

  • SetParameter Arguments:

    • PARAMID 1: set pitch;
    • PARAMS: PITCH. Исходный PITCH = 1,0, меньшие значения представляют более низкие высоты тона, большие значения — более высокие высоты тона.
    • PARAMID 2: set tempo;
    • PARAMS: TEMPO. Нормальный TEMPO = 1,0, меньшие значения представляют более медленный темп, большие — более быстрый темп.
    • PARAMID 3: set rate;
    • PARAMS: RATE. Нормальный RATE = 1,0, меньшие значения представляют более низкую скорость, большие — более высокую скорость.
  • GetParameter Arguments: нет.

  • Pending by No Input?: да.

BlkSoxEffect

В блоке BlkSoxEffect интегрировано большинство известных эффектов SoX, таких как vol, flanger, tremolo, echos, chorus, oops, equalizer, highpass, lowpass и т. д. Один экземпляр BlkSoxEffect применяет один эффект, который определяется строкой параметров, указанной при создании экземпляра. Внутренне данные из входной конечной точки с индексом N перейдут в выходную конечную точку с тем же индексом N. то есть I00 перейдёт в O00, I01 перейдёт в O01 и т.д. Измените только уровень логирования и путь дампа в реальном времени, эта конфигурация файла не изменится.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wksuper-lark-release.git
git@api.gitlife.ru:oschina-mirror/wksuper-lark-release.git
oschina-mirror
wksuper-lark-release
wksuper-lark-release
master