There are several updates to the case materials that the Boomer project 
team would like to announce.  I'll be modifying the actual documents 
soon, but a quick summary here may be easier to read.

1) The audiosup (and related shim logic) has been removed.  The project 
team found it easy enough to just convert the native Solaris drivers to 
first class Boomer native drivers that this work has been completed.  
This eliminates extra processing and latency from the path for those 
drivers that were still using the shim.  (It also allowed some of those 
drivers to more accurately express their hardware capabilities than was 
previously possible.)

2) As a consequence of item #1, the SADA driver layer is completely 
gone.  Only boomer native drivers will be supported after Boomer integrates.

3) Exception to #2 above is Sun Ray audio, which doesn't use SADA.  Sun 
Ray audio will ultimately need to be converted as part of a follow on 
project, but in the meantime, it can still be used with the legacy Sun 
audio(7i) API.  As Sun Ray is not supported on OpenSolaris (officially) 
yet, the project team doesn't feel this is a big problem.   The next 
phase (which we will be working on soon) will add Sun Ray support, which 
will be detailed in a separate PSARC case of its own.

4) Access to hardware controls is restricted to the OSS v4.x mixer API.  
This means that only applications which understand the new style OSS 
v4.x mixer API will be able to manage master hardware volumes, etc.  A 
Gstreamer plugin will be supplied for gnome applications such as 
gnome-volume-control and mixer_applet2.   Legacy Sun applications will 
lose this ability.  This is necessary because with some hardware the Sun 
APIs were inadequate to support the full expression of device features.  
(For example, many devices can have multiple monitors active, with 
different gains, at the same time.  A single monitor gain control can't 
properly express this.)

5) For now, sdtaudiocontrol can be used to adjust per-application 
volumes, and master record and playback volume, but not balance nor 
monitor gain nor input or output port selection.  The project team is 
undertaking a separate LSARC case to EOF sdtaudiocontrol altogether.  
gnome-volume-control is the replacement.

6) gnome-volume-control cannot display per-application volume settings 
like sdtaudiocontrol's -ac option.  Architecturally, nothing prevents us 
from supporting this in gnome-volume-control, but it isn't clear that we 
will have code to do this ready in time for integration of Phase I.   If 
anyone believes this feature regression is unacceptable for Phase I 
delivery, then the project team would like to hear about it as soon as 
possible.

7) The ability to use the command line options in audioplay and 
audiorecord to adjust hardware settings (including record port, monitor 
gain, and master hardware levels) is removed as part of #4 above.  These 
applications can still manage their own local playback and record gains, 
but those settings affect only the particular instance of the 
application that is using them.  The switches which would attempt to 
change master settings will be modified to issue a warning about their 
use, but will otherwise be ignored.

8) mixerctl has grown the ability to access and manage all hardware 
settings for these audio devices from the command line.  An updated man 
page will be posted in the commitment materials directory soon.

9) Per application volume controls, as well as "master PCM volume" are 
implemented as monophonic values.  Attempts to change balance will be 
ignored.  Balance of output levels of the master settings can be used by 
adjusting individual speaker volumes using the OSS 4.x API.  This change 
is required to support multichannel audio.  (Stereo levels don't make 
sense with 5.1 audio, for example.)  We believe that users need to 
adjust the levels of different channels as a result of different speaker 
positioning and volumes.  We don't believe that a need to adjust balance 
in one application independently from another application exists.  
(However, the need to adjust the overall output volume in different 
applications independently does exist.)

10) The monophonic master output volume control expressed in Boomer is 
implemented as an attenuation of PCM data.  It does not affect the 
levels associated with any monitors.  It will affect the volume of any 
PCM data generated by the system regardless of whether it is played back 
over analog or digital interfaces.  (Legacy Sun drivers were not 
consistent in how this was implemented.  We believe Boomer's 
implementation offers the least surprise to users.)

11) While the framework fully supports 192kHz (and possibly beyond) and 
24-bit audio, the project team has not updated any of the drivers to 
support this yet.  It is unclear whether this work will be complete 
before integration.  (In many drivers, selection of higher frequencies 
or bit resolutions must be made at the sacrifice of other features, such 
as number of channels.)  Architecturally this doesn't represent a change 
-- its just a change in what we actually deliver at first integration.  
(This could easily change if there is a key RFE to support high 
definition audio.)

12) Many, many more devices now support multichannel audio in Boomer.  
Some audioens hardware can support 4.0, and 5.1 is supported in capable 
audio810, audiovia823x, and audioixp systems.  7.1 is supported on audiohd.

13) For now, the project team would like to limit the exposure of the 
OSS API somewhat.  Specifically, the project team would like to:

    * restrict the new style 4.x mixer API to Consolidation/Contract 
Private.  We will work with the GStreamer team to get a contract in 
place.  We have some "constraints" on the names and values expressed in 
this API, which will allow Gnome to provide better support for 
localization and a11y than would otherwise be possible.   (This will 
require the Gnome team to #include an additional header file to import 
the macros with the names.)

    * restrict the old style 3.x mixer API to Obsolete Uncommited.  
(Actually, we'd go further than that, and say that we're implementing it 
only for compatibility, and only then a subset of functionality and 
semantics, just enough to make existing legacy apps happy.  We would 
prefer developers not use this API in any new code.  Our preference 
would be not to document these APIs at all, or document them only with a 
statement "for legacy compatibility only" and say nothing else about them.)

    * mark much of the dsp API Obsolete Uncommitted.  There are many, 
many ioctls in the API.  Many of which we don't think developers should 
use (many of which are redundant or otherwise Obsolete.)  Again, these 
would preferably either be undocumented, or documented only in a form of 
"don't use this in new code".

    * the remaining OSS API, which should be sufficient to access all 
the needs of any reasonable audio application, we would mark Uncommitted.

The full set of which portions of the API we believe should fall into 
which classification will be posted later.

14) mmap(2) support is not being delivered in Phase I.  This was already 
detailed in the inception review materials.

Please let us know if there are any concerns about any of the above.

    -- Garrett

Reply via email to