[Bug 246231] dev/sound: SNDCTL_AUDIOINFO is actually SNDCTL_ENGINEINFO

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue May 5 17:04:08 UTC 2020


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=246231

            Bug ID: 246231
           Summary: dev/sound: SNDCTL_AUDIOINFO is actually
                    SNDCTL_ENGINEINFO
           Product: Base System
           Version: 12.1-RELEASE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs at FreeBSD.org
          Reporter: kevinz5000 at gmail.com

The OSS v4 API reference has this to say about AUDIOINFO vs ENGINEINFO:

The higher level object is audio device file. Each audio device file has a
visible device node in the /dev directory (actually there are two of them).
Each audio device file has one or more audio engines. Audio device files that
have multiple engines can be shared by multiple applications because each
application (instance) will be directed to a different audio engine.

In other words, every entry from AUDIOINFO should represent a device that a
program can open and play. However, taking a look at my AUDIOINFO:

/dev/dsp0.p0
/dev/dsp0.vp0
/dev/dsp0.vp1
/dev/dsp0.r0
/dev/dsp0.vr0
/dev/dsp0.vr1
/dev/dsp1.p0
/dev/dsp1.vp0
/dev/dsp1.vp1
/dev/dsp1.r0
/dev/dsp1.vr0
/dev/dsp1.vr1
...

Audio programs are not actually supposed to open these device nodes, because
these are "engines" and not "devices". This is problematic, because many OSS
applications on FreeBSD use the v4 API to populate a drop-down list of
selectable audio devices, and none of them are actually playable.

(To be completely clear: if you get lucky and select and empty VCHAN, then it
is playable. But probably not after an application restart.)

Instead, what AUDIOINFO returns now should be moved to ENGINEINFO, with
AUDIOINFO returning something like:

/dev/dsp0
/dev/dsp1

These are devices that applications can actually open.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list