Declared capability

Declared audio formats

Every audio format the aiosendspin client advertised in a client/hello captured by a server in this report, and whether any case negotiated exactly that codec, sample rate, bit depth and channel count. Not verified means no case ever carried the format, so the claim is untested — neither a pass nor a failure. This table compares a claim against the wire only; it does not say whether a scenario got the format it set out to test.

3 exercised4 not verified

Test

Client initiates connection and client wants PCM

Start the server first, then the client. The client discovers or looks up the server, initiates the WebSocket connection, advertises PCM as its only supported audio format, streams audio derived from almost_silent.flac, and compares canonical PCM hashes.

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedPassedFailedFailedFailedFailedFailedFailed

Matrix

aiosendspin acting as the client.

Axis

Server \ Client

Client

aiosendspin

Server

sendspin-go

Failed

Test

Server initiates connection and client wants PCM

Start the server first, then the client. The client advertises a listener and PCM as its only supported audio format, the server connects in, streams audio derived from almost_silent.flac, disconnects, and the matrix compares canonical PCM hashes.

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedPassedFailedFailedFailedFailedFailedFailed

Matrix

aiosendspin acting as the client.

Axis

Server \ Client

Client

aiosendspin

Server

sendspin-go

Failed

Test

Server initiates a protocol baseline session

Start the server first, then the client. The client advertises a listener and a PCM player capability, the server connects in, and both adapters record spec-revision-pinned evidence for the handshake, role activation, initial state, stream negotiation, and timestamped player chunks. Media decoding and rendered audio are explicitly outside this test.

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedPassedFailedFailedFailedFailedFailedFailed

Matrix

aiosendspin acting as the client.

Axis

Server \ Client

Client

aiosendspin

Server

sendspin-go

Failed

Test

Server initiates connection and client wants Metadata

Start the server first, then the client. The client advertises a listener, the server connects in, sends a metadata state update, disconnects, and the matrix compares a normalized metadata snapshot.

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedPassedFailedFailedFailedFailedFailedFailed

Matrix

aiosendspin acting as the client.

Axis

Server \ Client

Client

aiosendspin

Server

sendspin-go

Failed

Test

Server initiates connection and client wants Artwork

Start the server first, then the client. The client advertises a listener, the server connects in, streams album artwork, disconnects, and the matrix compares the received bytes against the server's encoded artwork.

1 passed1 unsupported7 failedView test sourceScenario page

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedPassedFailedFailedFailedUnsupportedFailedFailed

Matrix

aiosendspin acting as the client.

Axis

Server \ Client

Client

aiosendspin

Server

sendspin-go

Failed

Test

Server initiates connection and client wants Controller

Start the server first, then the client. The client advertises a listener, the server connects in, observes controller state, receives a control command, disconnects, and the matrix verifies the recorded command.

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedPassedFailedFailedFailedFailedFailedFailed

Matrix

aiosendspin acting as the client.

Axis

Server \ Client

Client

aiosendspin

Server

sendspin-go

Failed

Test

Server initiates connection and client wants FLAC

Start the server first, then the client. The server loads the PCM audio derived from almost_silent.flac, the client advertises a listener and FLAC as its only supported audio format, the server connects in, uses the SDK to encode the PCM into FLAC, streams it to the client, and the matrix compares the transported FLAC header and chunk bytes as received by the client.

1 passed1 unsupported7 failedView test sourceScenario page

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedPassedFailedFailedFailedUnsupportedFailedFailed

Matrix

aiosendspin acting as the client.

Axis

Server \ Client

Client

aiosendspin

Server

sendspin-go

Failed

Test

Server initiates connection and client wants OPUS

Start the server first, then the client. The server loads the PCM audio derived from almost_silent.flac, the client advertises a listener and OPUS as its only supported audio format, the server connects in, uses the SDK to encode the PCM into OPUS, streams it to the client, and the matrix compares the transported OPUS header and chunk bytes as received by the client.

0 passed6 unsupported2 failedView test sourceScenario page

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedUnsupportedFailedUnsupportedUnsupportedUnsupportedUnsupportedUnsupported

Test

Server initiates connection and client wants 24-bit PCM

Start the server first, then the client. The server emits PCM in the 24-bit packed wire format (3-byte packed, little-endian, two's complement). The client advertises a listener and 24-bit PCM as its only supported audio format. The matrix compares canonical PCM hashes after the client unpacks the 24-bit stream. A client SDK with no 24-bit decode path misreads the bytes and produces a hash mismatch.

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedPassedFailedFailedFailedFailedFailedFailed

Matrix

aiosendspin acting as the client.

Axis

Server \ Client

Client

aiosendspin

Server

sendspin-go

Failed

Test

Client renegotiates PCM bit depth via stream/request-format

Start the server first, then the client. The client connects, advertises two PCM formats (24-bit then 16-bit), and the server starts streaming the preferred 24-bit format. The client then emits stream/request-format asking for the 16-bit format, the server re-emits stream/start with the new format, and the matrix verifies the client observed the renegotiated 16-bit stream.

0 passed6 unsupported2 failedView test sourceScenario page

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

UnsupportedUnsupportedUnsupportedUnsupportedUnsupportedUnsupportedFailedFailed

Test

Client renegotiates PCM to FLAC via stream/request-format

Start the server first, then the client. The client connects, advertises PCM then FLAC, and the server starts streaming the preferred PCM format. The client then emits stream/request-format asking for FLAC, the server re-emits stream/start with the FLAC format, and the matrix verifies the client observed the renegotiated FLAC stream.

0 passed6 unsupported2 failedView test sourceScenario page

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

UnsupportedUnsupportedUnsupportedUnsupportedUnsupportedUnsupportedFailedFailed

Test

Server initiates connection over the legacy unencrypted transition mode

Start the server first, then the client. The server opts into aiosendspin's non-spec unencrypted transition mode (allow_unencrypted) rather than the real encrypted Noise handshake, to keep tracking the plaintext legacy path used by implementations that have not yet adopted the spec's mandatory encryption. This scenario is expected to be dropped once every tracked implementation supports the real handshake.

2 passed1 unsupported5 failedView test sourceScenario page

Matrix

aiosendspin acting as the server.

Axis

Server \ Client

Client

SendspinKit

Client

aiosendspin

Client

sendspin-cpp

Client

sendspin-dotnet

Client

sendspin-go

Client

sendspin-js

Client

sendspin-jvm

Client

sendspin-rs

Server

aiosendspin

FailedUnsupportedPassedFailedPassedFailedFailedFailed