pjproject icon indicating copy to clipboard operation
pjproject copied to clipboard

AudioDevInfos returned by enumDev2() / portaudio all have a zero id

Open cajus opened this issue 9 months ago • 0 comments

Describe the bug

As the title says: I'd like to list the devices in an application, so that the user can configure the desired audio devices. pjsip wants to be fed with the Device ID in certain places, but the id member of AudioDevInfo is always zero here.

I'm working that around by using the list index, currently.

Steps to reproduce

Make sure pjsip is using portaudio. Create a mini C++ program that does something like this:

#include <pjsua2.hpp>
#include <iostream>
#include <utility>

using namespace pj;

int main()
{
    Endpoint ep;

    ep.libCreate();

    EpConfig ep_cfg;
    ep.libInit( ep_cfg );
    ep.libStart();

    auto devices = ep.audDevManager().enumDev2();
    for (auto& info : std::as_const(devices)) {
        std::cout << info.id << " - " << info.name << std::endl;
    }

    ep.libDestroy();

    return 0;
}

Output is

0 - Default Sink
0 - Default Source
0 - Family 17h/19h HD Audio Controller Speaker + Headphones
0 - Yealink WH62 Digital Stereo (IEC958)
0 - Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 4 Output
0 - Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 3 Output
0 - Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 2 Output
0 - Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 1 Output
0 - Monitor of Family 17h/19h HD Audio Controller Speaker + Headphones
0 - Family 17h/19h HD Audio Controller Headphones Stereo Microphone
0 - Family 17h/19h HD Audio Controller Digital Microphone
0 - Monitor of Yealink WH62 Digital Stereo (IEC958)
0 - Yealink WH62 Digital Stereo (IEC958)
0 - Monitor of Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 4 Output
0 - Monitor of Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 3 Output
0 - Monitor of Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 2 Output
0 - Monitor of Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 1 Output

where id is 0 for each device.

PJSIP version

master

Context

Fedora 40, Linux, portaudio (master) configured for pulse. Thinkpad T14.

Log, call stack, etc

12:10:55.031         os_core_unix.c !pjlib 2.14-dev for POSIX initialized
12:10:55.032         sip_endpoint.c  .Creating endpoint instance...
12:10:55.032                  pjlib  .select() I/O Queue created (0x270d6b8)
12:10:55.032         sip_endpoint.c  .Module "mod-msg-print" registered
12:10:55.032        sip_transport.c  .Transport manager created.
12:10:55.032           pjsua_core.c  .PJSUA state changed: NULL --> CREATED
12:10:55.032         sip_endpoint.c  .Module "mod-pjsua-log" registered
12:10:55.032         sip_endpoint.c  .Module "mod-tsx-layer" registered
12:10:55.032         sip_endpoint.c  .Module "mod-stateful-util" registered
12:10:55.032         sip_endpoint.c  .Module "mod-ua" registered
12:10:55.032         sip_endpoint.c  .Module "mod-100rel" registered
12:10:55.032         sip_endpoint.c  .Module "mod-pjsua" registered
12:10:55.032         sip_endpoint.c  .Module "mod-invite" registered
12:10:55.036               pa_dev.c  ..PortAudio sound library initialized, status=0
12:10:55.036               pa_dev.c  ..PortAudio host api count=1
12:10:55.036               pa_dev.c  ..Sound device count=17
12:10:55.036                  pjlib  ..select() I/O Queue created (0x2735cf8)
12:10:55.040         sip_endpoint.c  .Module "mod-evsub" registered
12:10:55.040         sip_endpoint.c  .Module "mod-presence" registered
12:10:55.040         sip_endpoint.c  .Module "mod-dlg_even" registered
12:10:55.040         sip_endpoint.c  .Module "mod-mwi" registered
12:10:55.040         sip_endpoint.c  .Module "mod-refer" registered
12:10:55.040         sip_endpoint.c  .Module "mod-pjsua-pres" registered
12:10:55.040         sip_endpoint.c  .Module "mod-pjsua-im" registered
12:10:55.040         sip_endpoint.c  .Module "mod-pjsua-options" registered
12:10:55.040           pjsua_core.c  .1 SIP worker threads created
12:10:55.040           pjsua_core.c  .pjsua version 2.14-dev for Linux-6.8.9.44/x86_64/glibc-2.39 initialized
12:10:55.040           pjsua_core.c  .PJSUA state changed: CREATED --> INIT
12:10:55.040           pjsua_core.c  PJSUA state changed: INIT --> STARTING
12:10:55.040         sip_endpoint.c  .Module "mod-unsolicited-mwi" registered
12:10:55.040           pjsua_core.c  .PJSUA state changed: STARTING --> RUNNING
0 - Default Sink
0 - Default Source
0 - Family 17h/19h HD Audio Controller Speaker + Headphones
0 - Yealink WH62 Digital Stereo (IEC958)
0 - Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 4 Output
0 - Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 3 Output
0 - Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 2 Output
0 - Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 1 Output
0 - Monitor of Family 17h/19h HD Audio Controller Speaker + Headphones
0 - Family 17h/19h HD Audio Controller Headphones Stereo Microphone
0 - Family 17h/19h HD Audio Controller Digital Microphone
0 - Monitor of Yealink WH62 Digital Stereo (IEC958)
0 - Yealink WH62 Digital Stereo (IEC958)
0 - Monitor of Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 4 Output
0 - Monitor of Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 3 Output
0 - Monitor of Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 2 Output
0 - Monitor of Renoir Radeon High Definition Audio Controller HDMI / DisplayPort 1 Output
12:10:55.040           pjsua_core.c  Shutting down, flags=0...
12:10:55.040           pjsua_core.c  PJSUA state changed: RUNNING --> CLOSING
12:10:55.050           pjsua_call.c  .Hangup all calls..
12:10:55.050           pjsua_pres.c  .Shutting down presence..
12:10:56.051           pjsua_core.c  .Destroying...
12:10:56.051          pjsua_media.c  .Shutting down media..
12:10:56.055               pa_dev.c  ..PortAudio sound library shutting down..
12:10:56.055      sip_transaction.c  .Stopping transaction layer module
12:10:56.055      sip_transaction.c  .Stopped transaction layer module
12:10:56.055         sip_endpoint.c  .Module "mod-unsolicited-mwi" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-pjsua-options" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-pjsua-im" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-pjsua-pres" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-pjsua" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-stateful-util" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-refer" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-mwi" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-dlg_even" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-presence" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-evsub" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-invite" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-100rel" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-ua" unregistered
12:10:56.055      sip_transaction.c  .Transaction layer module destroyed
12:10:56.055         sip_endpoint.c  .Module "mod-tsx-layer" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-msg-print" unregistered
12:10:56.055         sip_endpoint.c  .Module "mod-pjsua-log" unregistered
12:10:56.055                timer.c  .Dumping timer heap:
12:10:56.055                timer.c  .  Cur size: 0 entries, max: 3070
12:10:56.055         sip_endpoint.c  .Endpoint 0x2703738 destroyed
12:10:56.055           pjsua_core.c  .PJSUA state changed: CLOSING --> NULL
12:10:56.055           pjsua_core.c  .PJSUA destroyed...

cajus avatar May 14 '24 10:05 cajus