Как можно получить только устройство для захвата или воспроизведения с помощью pjsua2 - PullRequest
0 голосов
/ 02 сентября 2018

Я пытался получить устройства от pjsua2, я получил все устройства, но не разделен на устройства захвата и воспроизведения.

void AudioController::load(){
    Endpoint ep;
    ep.libCreate();
    // Initialize endpoint
    EpConfig ep_cfg;
    ep.libInit( ep_cfg );
    AudDevManager &manager  =  ep.audDevManager();
    manager.refreshDevs();
    this->input.clear();
    const AudioDevInfoVector &list = manager.enumDev();
    for(unsigned int i = 0;list.size() != i;i++){
        AudioDevInfo * info = list[i];
        GtAudioDevice * a = new GtAudioDevice();
        a->name = info->name.c_str();
        a->deviceId = i;
        qDebug() << info->name.c_str();
        qDebug() << info->driver.c_str();
         qDebug() << info->caps;
        this->input.append(a);
    }
    ep.libDestroy();
}

Это мой вывод:

Wave mapper
WMME
23
Microfone (Dispositivo de High 
WMME
3
Alto-falantes (Dispositivo de H
WMME
21

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете проверить поля inputCount и outputCount внутри AudioDevInfo.

Согласно документации:

без знака inputCount

Максимальное количество входных каналов, поддерживаемых этим устройством. Если значение равно нулю, устройство не поддерживает операцию ввода (т. е. это устройство только для воспроизведения ).

И

без знака outputCount

Максимальное количество выходных каналов, поддерживаемых этим устройством. Если значение равно нулю, устройство не поддерживает операцию вывода (т. е. это устройство только для ввода ).

Так что вы можете сделать что-то вроде этого:

for(unsigned int i = 0;list.size() != i;i++){
    AudioDevInfo * info = list[i];
    GtAudioDevice * a = new GtAudioDevice();
    a->name = info->name.c_str();
    a->deviceId = i;
    if (info->inputCount > 0) {
        a->captureDevice = true;
    }
    if (info->outputCount > 0) {
        a->playbackDevice = true;
    }
    this->input.append(a);
}

Ссылка: http://www.pjsip.org/pjsip/docs/html/structpj_1_1AudioDevInfo.htm

...