Skip to content

[BUG]: Default format changes are not synchronized across related audio endpoints #31

Description

Windows Version

Windows 11 Pro 25H2 26200.8973

PC Information

Intel NUC kit NUC8I7HNK

Processor Architecture

x64 (AMD / Intel etc.)

Audio Interface

Focusrite Scarlett 16i16

Audio Interface Connection

Directly to the USB port on a laptop or tablet

Sample Rate

192000Hz

Buffer Size

2048 Samples (19200Hz)

Application in use

Windows Settings (System -> Sound)

Audio Mode

Windows Audio (WASAPI etc.)

Type of bug

Expected sample rates or bit depths not available

Link to glitch trace

No response

Steps to reproduce

  1. Boot Windows.

  2. Install the USBAudio2-ACX driver for the Scarlett 16i16 using Device Manager.

  3. Restart Windows.

  4. Open Settings > System > Sound > Output 1/2.

  5. Change Format from:

    2 channels, 24 bit, 44100Hz
    

    to:

    2 channels, 24 bit, 192000Hz
    
  6. Close Settings.

  7. Reopen Settings.

  8. Verify the format shown for all audio endpoints.

    Settings > System > Sound > Output 1/2

    Format = 2 channels, 24 bit, 192000Hz
    

    Settings > System > Sound > Output 3/4 through Output 17/18

    Format = 2 channels, 24 bit, 44100Hz
    

    Settings > System > Sound > Input 1/2 through ADAT 7/8

    Format = 2 channels, 24 bit, 44100Hz
    

Expected behavior

After changing the format of Output 1/2 to:

2 channels, 24 bit, 192000Hz

all audio endpoints exposed by the device should be updated to the same format.

Settings > System > Sound > Output 1/2

Format = 2 channels, 24 bit, 192000Hz

Settings > System > Sound > Output 3/4 through Output 17/18

Format = 2 channels, 24 bit, 192000Hz

Settings > System > Sound > Input 1/2 through ADAT 7/8

Format = 2 channels, 24 bit, 192000Hz

Additional notes

The issue is more likely to occur immediately after driver installation and before the first few Windows restarts.

After several Windows restarts, the issue may no longer reproduce.

The device exposes multiple Windows Audio endpoints by splitting a multi-channel USB audio stream into separate endpoint pairs. The issue appears more likely to occur as the number of exposed endpoints increases.

The same behavior can also be reproduced when changing the sample rate using USBAsioControlPanel.exe.

The same behavior is also observed in the legacy Sound Control Panel (mmsys.cpl). The reported format values are consistent between Windows Settings and the Sound Control Panel.

Within the ACX driver, when a format change is requested, the driver updates the default format using AcxDataFormatListAssignDefaultDataFormat() and then notifies the framework using AcxPinNotifyDataFormatChange().

ACXDATAFORMATLIST dataFormatList = AcxPinGetRawDataFormatList(Pin);
status = AcxDataFormatListAssignDefaultDataFormat(dataFormatList, desiredDataFormat);
RETURN_NTSTATUS_IF_FAILED(status);

status = AcxPinNotifyDataFormatChange(Pin);

Implementing support for KSPROPERTY_PIN_PROPOSEDATAFORMAT2 did not affect the behavior.

The implementation was verified against the multi-streams-support changes in the following commit:

282cab3

The same behavior has also been observed on the following devices: RME Fireface UFX+ and PreSonus Quantum HD2.

The issue also reproduces on a Surface Laptop 7th Edition running Windows 11 Home Version 10.0.26200 (Build 26200).

The reproduction rate appears to be higher on Arm64 systems than on x64 systems.

Based on the observed behavior, the format change appears to be correctly reflected on the endpoint where the change was initiated, but not consistently reflected on the remaining related audio endpoints exposed by the same device.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions