Case
sendspin-server-cpp -> sendspin-dotnet
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. Where the client reports the audio it decoded and the stream kept the source's sample rate and channel count, the matrix also compares its canonical PCM hash against the source clip, so a stream that arrived intact but incomplete fails.
Server
sendspin-server-cpp
Client
sendspin-dotnet
Status
Passed
FLAC header and chunk bytes match exactly and the decoded audio matches the source clip
Server activation
Initial server/activate
What the sendspin-server-cpp server's own adapter recorded for its first server/activate on this connection, reported as sent. The case fails when none was sent, when its activities are not unique values from playback and pairing, or when it omits active_roles. Nothing else in it is checked against the specification: which activities and roles the matched PSK allows is not judged. A recording that cannot be read as that message is shown whole and not judged either.
Server group state
Every group/update after activation
What the sendspin-server-cpp server's own adapter recorded for each group/update it sent after its first server/activate on this connection, in order and reported as sent. The case fails when none followed, or when in any of them playback_state is not playing or stopped, or group_id or group_name is missing or not a string. How soon the first followed is not judged, because the specification says promptly and gives no bound, so one sent at any point in the case counts. Whether a change to a field produced a further message is not judged either. A recording of anything other than that message is shown whole and fails the case as a harness gap.
1 of 3
2 of 3
3 of 3
Inspection
Summaries, logs, and builds
Matrix result
RAW{
"case_dir": "artifacts/results/data/macos__server-initiated-flac__sendspin-server-cpp__to__sendspin-dotnet",
"client_exit_code": 0,
"client_impl": "sendspin-dotnet",
"reason": "FLAC header and chunk bytes match exactly and the decoded audio matches the source clip",
"scenario_id": "server-initiated-flac",
"scenario_revision": 6,
"server_exit_code": 0,
"server_impl": "sendspin-server-cpp",
"status": "passed",
"unsupported": false
}Server summary (JSON)
RAW{
"activation": {
"payload": {
"active_roles": [
"player@v1"
],
"activities": [
"playback"
]
},
"type": "server/activate"
},
"audio": {
"bit_depth": 16,
"channels": 1,
"clip_seconds": 5,
"duration_seconds": 5,
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"frame_count": 40000,
"sample_rate": 8000,
"sent_audio_chunk_count": 51,
"sent_encoded_byte_count": 4982,
"sent_encoded_sha256": "487d14e26e3a0f34482a6c2e8a5c5570ff8435a6b465b450a4691c478b95d52b",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e"
},
"availability_trace": [
{
"available": true,
"type": "client/state"
},
{
"phase": "sending",
"roles": [
"player"
],
"type": "stream/start"
},
{
"phase": "sent",
"roles": [
"player"
],
"type": "stream/start"
}
],
"client": {
"active_roles": [
"player@v1"
],
"client_id": "oRlgP2iN3_rUPC4v8ReVkcI8xe-gkalmzXEORqhYCns",
"name": "sendspin-dotnet-client",
"supported_roles": [
"player@v1"
]
},
"discovery_method": "registry",
"group_updates": [
{
"payload": {
"group_id": "1",
"group_name": "sendspin-server-cpp server",
"playback_state": "stopped"
},
"type": "group/update"
},
{
"payload": {
"group_id": "1",
"group_name": "sendspin-server-cpp server",
"playback_state": "playing"
},
"type": "group/update"
},
{
"payload": {
"group_id": "1",
"group_name": "sendspin-server-cpp server",
"playback_state": "stopped"
},
"type": "group/update"
}
],
"implementation": "sendspin-server-cpp",
"initiator_role": "server",
"peer_hello": {
"payload": {
"device_info": {
"manufacturer": "Sendspin Conformance",
"product_name": "Conformance Dotnet Client",
"software_version": "0.1.0"
},
"name": "sendspin-dotnet-client",
"player@v1_support": {
"buffer_capacity": 2000000,
"supported_formats": [
{
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 1,
"codec": "pcm",
"sample_rate": 8000
},
{
"bit_depth": 16,
"channels": 2,
"codec": "flac",
"sample_rate": 44100
},
{
"bit_depth": 16,
"channels": 2,
"codec": "pcm",
"sample_rate": 44100
}
]
},
"supported_pair_methods": {
"pairing_psk": {}
},
"supported_roles": [
"player@v1"
],
"unpaired_access": {
"enabled": true
}
},
"type": "client/hello"
},
"preferred_codec": "flac",
"role": "server",
"scenario_id": "server-initiated-flac",
"server_id": "e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg",
"server_name": "sendspin-server-cpp server",
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACIAoACgAAAAAAAAAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"sample_rate": 8000
},
"time_exchange": [
{
"payload": {
"client_transmitted": 1792567461288537
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461288537,
"server_received": 944450425,
"server_transmitted": 944450545
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461306625
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461306625,
"server_received": 944466400,
"server_transmitted": 944466498
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461307323
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461307323,
"server_received": 944467005,
"server_transmitted": 944467050
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461307521
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461307521,
"server_received": 944467212,
"server_transmitted": 944467252
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461307710
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461307710,
"server_received": 944467369,
"server_transmitted": 944467406
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461307848
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461307848,
"server_received": 944467500,
"server_transmitted": 944467537
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461308004
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461308004,
"server_received": 944467669,
"server_transmitted": 944467704
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461308142
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461308142,
"server_received": 944467798,
"server_transmitted": 944467832
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461934465
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461934465,
"server_received": 945094392,
"server_transmitted": 945094528
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461935140
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461935140,
"server_received": 945094845,
"server_transmitted": 945094897
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461935440
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461935440,
"server_received": 945095158,
"server_transmitted": 945095257
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461935880
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461935880,
"server_received": 945095599,
"server_transmitted": 945095694
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461936312
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461936312,
"server_received": 945096069,
"server_transmitted": 945096111
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461936783
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461936783,
"server_received": 945096493,
"server_transmitted": 945096566
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461937062
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461937062,
"server_received": 945096847,
"server_transmitted": 945096890
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567461937418
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567461937418,
"server_received": 945097096,
"server_transmitted": 945097164
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567462458323
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567462458323,
"server_received": 945618229,
"server_transmitted": 945618371
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567462459127
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567462459127,
"server_received": 945618829,
"server_transmitted": 945618885
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567462459397
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567462459397,
"server_received": 945619094,
"server_transmitted": 945619146
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567462459668
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567462459668,
"server_received": 945619351,
"server_transmitted": 945619403
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567462459898
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567462459898,
"server_received": 945619564,
"server_transmitted": 945619609
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567462460083
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567462460083,
"server_received": 945619758,
"server_transmitted": 945619790
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567462460291
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567462460291,
"server_received": 945620025,
"server_transmitted": 945620074
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567462460589
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567462460589,
"server_received": 945620270,
"server_transmitted": 945620303
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463110344
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463110344,
"server_received": 946270301,
"server_transmitted": 946270437
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463111192
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463111192,
"server_received": 946270950,
"server_transmitted": 946271025
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463111574
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463111574,
"server_received": 946271275,
"server_transmitted": 946271335
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463111838
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463111838,
"server_received": 946271540,
"server_transmitted": 946271606
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463112106
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463112106,
"server_received": 946271879,
"server_transmitted": 946271938
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463112458
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463112458,
"server_received": 946272168,
"server_transmitted": 946272233
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463112747
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463112747,
"server_received": 946272437,
"server_transmitted": 946272498
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463112999
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463112999,
"server_received": 946272696,
"server_transmitted": 946272773
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463728355
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463728355,
"server_received": 946888350,
"server_transmitted": 946888553
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463729293
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463729293,
"server_received": 946889032,
"server_transmitted": 946889095
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463729646
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463729646,
"server_received": 946889372,
"server_transmitted": 946889445
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463729969
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463729969,
"server_received": 946889665,
"server_transmitted": 946889744
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463730238
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463730238,
"server_received": 946889957,
"server_transmitted": 946890027
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463730580
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463730580,
"server_received": 946890356,
"server_transmitted": 946890416
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463731075
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463731075,
"server_received": 946890788,
"server_transmitted": 946890857
},
"type": "server/time"
},
{
"payload": {
"client_transmitted": 1792567463731441
},
"type": "client/time"
},
{
"payload": {
"client_transmitted": 1792567463731441,
"server_received": 946891159,
"server_transmitted": 946891235
},
"type": "server/time"
},
{
"type": "other-sent"
}
]
}Server log
RAWsendspin-server-cpp: dialing ws://127.0.0.1:20007/sendspin for playback
sendspin-server-cpp: "sendspin-dotnet-client" at 127.0.0.1:20007 connected
listener: client sendspin-dotnet-client disconnected: server stopped
{
"status": "ok",
"implementation": "sendspin-server-cpp",
"role": "server",
"server_name": "sendspin-server-cpp server",
"scenario_id": "server-initiated-flac",
"initiator_role": "server",
"preferred_codec": "flac",
"server_id": "e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg",
"discovery_method": "registry",
"peer_hello": {
"type": "client/hello",
"payload": {
"name": "sendspin-dotnet-client",
"supported_pair_methods": {
"pairing_psk": {}
},
"unpaired_access": {
"enabled": true
},
"supported_roles": [
"player@v1"
],
"player@v1_support": {
"supported_formats": [
{
"codec": "flac",
"channels": 1,
"sample_rate": 8000,
"bit_depth": 16
},
{
"codec": "pcm",
"channels": 1,
"sample_rate": 8000,
"bit_depth": 16
},
{
"codec": "flac",
"channels": 2,
"sample_rate": 44100,
"bit_depth": 16
},
{
"codec": "pcm",
"channels": 2,
"sample_rate": 44100,
"bit_depth": 16
}
],
"buffer_capacity": 2000000
},
"device_info": {
"product_name": "Conformance Dotnet Client",
"manufacturer": "Sendspin Conformance",
"software_version": "0.1.0"
}
}
},
"activation": {
"type": "server/activate",
"payload": {
"activities": [
"playback"
],
"active_roles": [
"player@v1"
]
}
},
"group_updates": [
{
"type": "group/update",
"payload": {
"playback_state": "stopped",
"group_id": "1",
"group_name": "sendspin-server-cpp server"
}
},
{
"type": "group/update",
"payload": {
"playback_state": "playing",
"group_id": "1",
"group_name": "sendspin-server-cpp server"
}
},
{
"type": "group/update",
"payload": {
"playback_state": "stopped",
"group_id": "1",
"group_name": "sendspin-server-cpp server"
}
}
],
"availability_trace": [
{
"type": "client/state",
"available": true
},
{
"type": "stream/start",
"phase": "sending",
"roles": [
"player"
]
},
{
"type": "stream/start",
"phase": "sent",
"roles": [
"player"
]
}
],
"time_exchange": [
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461288537
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461288537,
"server_received": 944450425,
"server_transmitted": 944450545
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461306625
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461306625,
"server_received": 944466400,
"server_transmitted": 944466498
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461307323
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461307323,
"server_received": 944467005,
"server_transmitted": 944467050
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461307521
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461307521,
"server_received": 944467212,
"server_transmitted": 944467252
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461307710
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461307710,
"server_received": 944467369,
"server_transmitted": 944467406
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461307848
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461307848,
"server_received": 944467500,
"server_transmitted": 944467537
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461308004
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461308004,
"server_received": 944467669,
"server_transmitted": 944467704
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461308142
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461308142,
"server_received": 944467798,
"server_transmitted": 944467832
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461934465
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461934465,
"server_received": 945094392,
"server_transmitted": 945094528
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461935140
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461935140,
"server_received": 945094845,
"server_transmitted": 945094897
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461935440
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461935440,
"server_received": 945095158,
"server_transmitted": 945095257
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461935880
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461935880,
"server_received": 945095599,
"server_transmitted": 945095694
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461936312
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461936312,
"server_received": 945096069,
"server_transmitted": 945096111
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461936783
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461936783,
"server_received": 945096493,
"server_transmitted": 945096566
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461937062
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461937062,
"server_received": 945096847,
"server_transmitted": 945096890
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567461937418
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567461937418,
"server_received": 945097096,
"server_transmitted": 945097164
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567462458323
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567462458323,
"server_received": 945618229,
"server_transmitted": 945618371
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567462459127
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567462459127,
"server_received": 945618829,
"server_transmitted": 945618885
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567462459397
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567462459397,
"server_received": 945619094,
"server_transmitted": 945619146
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567462459668
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567462459668,
"server_received": 945619351,
"server_transmitted": 945619403
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567462459898
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567462459898,
"server_received": 945619564,
"server_transmitted": 945619609
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567462460083
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567462460083,
"server_received": 945619758,
"server_transmitted": 945619790
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567462460291
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567462460291,
"server_received": 945620025,
"server_transmitted": 945620074
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567462460589
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567462460589,
"server_received": 945620270,
"server_transmitted": 945620303
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463110344
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463110344,
"server_received": 946270301,
"server_transmitted": 946270437
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463111192
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463111192,
"server_received": 946270950,
"server_transmitted": 946271025
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463111574
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463111574,
"server_received": 946271275,
"server_transmitted": 946271335
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463111838
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463111838,
"server_received": 946271540,
"server_transmitted": 946271606
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463112106
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463112106,
"server_received": 946271879,
"server_transmitted": 946271938
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463112458
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463112458,
"server_received": 946272168,
"server_transmitted": 946272233
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463112747
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463112747,
"server_received": 946272437,
"server_transmitted": 946272498
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463112999
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463112999,
"server_received": 946272696,
"server_transmitted": 946272773
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463728355
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463728355,
"server_received": 946888350,
"server_transmitted": 946888553
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463729293
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463729293,
"server_received": 946889032,
"server_transmitted": 946889095
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463729646
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463729646,
"server_received": 946889372,
"server_transmitted": 946889445
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463729969
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463729969,
"server_received": 946889665,
"server_transmitted": 946889744
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463730238
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463730238,
"server_received": 946889957,
"server_transmitted": 946890027
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463730580
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463730580,
"server_received": 946890356,
"server_transmitted": 946890416
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463731075
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463731075,
"server_received": 946890788,
"server_transmitted": 946890857
}
},
{
"type": "client/time",
"payload": {
"client_transmitted": 1792567463731441
}
},
{
"type": "server/time",
"payload": {
"client_transmitted": 1792567463731441,
"server_received": 946891159,
"server_transmitted": 946891235
}
},
{
"type": "other-sent"
}
],
"client": {
"client_id": "oRlgP2iN3_rUPC4v8ReVkcI8xe-gkalmzXEORqhYCns",
"name": "sendspin-dotnet-client",
"supported_roles": [
"player@v1"
],
"active_roles": [
"player@v1"
]
},
"stream": {
"codec": "flac",
"sample_rate": 8000,
"channels": 1,
"bit_depth": 16,
"codec_header": "ZkxhQ4AAACIAoACgAAAAAAAAAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA"
},
"audio": {
"fixture": "/Users/runner/work/conformance/conformance/repos/sendspin-cli/tests/fixtures/almost_silent.flac",
"source_flac_sha256": "8fdda8244e318c63cd8b699fe461cd7cdddbb729327a0ba00d1bfdbe2192fe17",
"source_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"clip_seconds": 5,
"sample_rate": 8000,
"channels": 1,
"bit_depth": 16,
"frame_count": 40000,
"duration_seconds": 5,
"sent_audio_chunk_count": 51,
"sent_encoded_byte_count": 4982,
"sent_encoded_sha256": "487d14e26e3a0f34482a6c2e8a5c5570ff8435a6b465b450a4691c478b95d52b"
}
}
Client summary (JSON)
RAW{
"audio": {
"audio_chunk_count": 51,
"received_encoded_sha256": "487d14e26e3a0f34482a6c2e8a5c5570ff8435a6b465b450a4691c478b95d52b",
"received_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_sample_count": 40000
},
"client_id": "oRlgP2iN3_rUPC4v8ReVkcI8xe-gkalmzXEORqhYCns",
"client_name": "sendspin-dotnet-client",
"implementation": "sendspin-dotnet",
"initiator_role": "server",
"peer_hello": null,
"preferred_codec": "flac",
"reason": null,
"role": "client",
"scenario_id": "server-initiated-flac",
"server": {
"connection_reason": "playback",
"server_id": "e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg",
"server_name": "sendspin-server-cpp server"
},
"status": "ok",
"stream": {
"bit_depth": 16,
"channels": 1,
"codec": "flac",
"codec_header": "ZkxhQ4AAACIAoACgAAAAAAAAAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"sample_rate": 8000
}
}Client log
RAW07:24:21 info: Sendspin.SDK.Client.SendspinHostService[0] Starting Sendspin host service
07:24:21 info: Sendspin.SDK.Connection.SendspinListener[0] WebSocket server listening on port 20007
07:24:21 info: Sendspin.SDK.Connection.SendspinListener[0] Sendspin listener started on ws://0.0.0.0:20007 (path: /sendspin)
07:24:21 info: Sendspin.SDK.Client.SendspinHostService[0] mDNS advertising disabled by options
07:24:21 info: Sendspin.SDK.Client.SendspinHostService[0] Sendspin host service started - waiting for server connections
07:24:21 info: Sendspin.SDK.Connection.SendspinListener[0] WebSocket connection opened from 127.0.0.1
07:24:21 info: Sendspin.SDK.Client.SendspinHostService[0] New server connection: d2f7fe35
07:24:21 info: Sendspin.SDK.Client.SendspinClientService[0] Server hello received (encrypted): e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg (sendspin-server-cpp server)
07:24:21 info: Sendspin.SDK.Client.SendspinClientService[0] Sending client/hello (encrypted): {"type":"client/hello","payload":{"name":"sendspin-dotnet-client","supported_pair_methods":{"pairing_psk":{}},"unpaired_access":{"enabled":true},"supported_roles":["player@v1"],"player@v1_support":{"supported_formats":[{"codec":"flac","channels":1,"sample_rate":8000,"bit_depth":16},{"codec":"pcm","channels":1,"sample_rate":8000,"bit_depth":16},{"codec":"flac","channels":2,"sample_rate":44100,"bit_depth":16},{"codec":"pcm","channels":2,"sample_rate":44100,"bit_depth":16}],"buffer_capacity":2000000},"device_info":{"product_name":"Conformance Dotnet Client","manufacturer":"Sendspin Conformance","software_version":"0.1.0"}}}
07:24:21 info: Sendspin.SDK.Client.SendspinClientService[0] Server activate: activities [playback], roles [player@v1]
07:24:21 info: Sendspin.SDK.Client.SendspinHostService[0] Arbitration: no existing connection. New=e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg, Existing=(none)
07:24:21 info: Sendspin.SDK.Client.SendspinHostService[0] Last played server updated: e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg
07:24:21 info: Sendspin.SDK.Client.SendspinHostService[0] Server connected: e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg (sendspin-server-cpp server)
07:24:21 info: Sendspin.SDK.Client.SendspinClientService[0] Deferring initial client/state until clock sync converges
07:24:21 info: Sendspin.SDK.Client.SendspinClientService[0] group/update [sendspin-dotnet-client]: Group name changed '(none)' -> 'sendspin-server-cpp server'
07:24:23 info: Sendspin.SDK.Client.SendspinClientService[0] [ClockSync] Converged after 5 measurements
07:24:23 info: Sendspin.SDK.Client.SendspinClientService[0] Sending initial client/state: {"type":"client/state","payload":{"available":true,"player":{"volume":100,"muted":false,"output_delay_ms":0,"required_lead_time_ms":200,"min_buffer_ms":150,"supported_commands":["volume","mute","set_output_delay"]}}}
07:24:23 info: Sendspin.SDK.Client.SendspinClientService[0] Stream starting: FLAC 8000Hz 1ch 16bit
07:24:28 info: Sendspin.SDK.Client.SendspinClientService[0] Stream ended for roles: player
07:24:28 info: Sendspin.SDK.Connection.IncomingConnection[0] Server closed connection (no close status)
07:24:28 info: Sendspin.SDK.Client.SendspinHostService[0] Server disconnected: e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg
07:24:28 info: Sendspin.SDK.Client.SendspinHostService[0] Stopping Sendspin host service
07:24:28 info: Sendspin.SDK.Connection.SendspinListener[0] Stopping Sendspin listener
07:24:28 info: Sendspin.SDK.Connection.SendspinListener[0] Stopping WebSocket server
07:24:28 info: Sendspin.SDK.Client.SendspinHostService[0] Sendspin host service stopped
07:24:28 info: Sendspin.SDK.Client.SendspinHostService[0] Stopping Sendspin host service
07:24:28 info: Sendspin.SDK.Client.SendspinHostService[0] Sendspin host service stopped
{
"status": "ok",
"reason": null,
"implementation": "sendspin-dotnet",
"role": "client",
"scenario_id": "server-initiated-flac",
"initiator_role": "server",
"preferred_codec": "flac",
"client_name": "sendspin-dotnet-client",
"client_id": "oRlgP2iN3_rUPC4v8ReVkcI8xe-gkalmzXEORqhYCns",
"server": {
"server_id": "e7A_mRMACOSlS5DpS1Dg2y4ZpXHFzxacvYdqFdfa9Fg",
"server_name": "sendspin-server-cpp server",
"connection_reason": "playback"
},
"peer_hello": null,
"stream": {
"codec": "flac",
"sample_rate": 8000,
"channels": 1,
"bit_depth": 16,
"codec_header": "ZkxhQ4AAACIAoACgAAAAAAAAAfQA8AAAAAAAAAAAAAAAAAAAAAAAAAAA"
},
"audio": {
"received_pcm_sha256": "9d447b5b270bc99b45bb9a616937e436c941ca56c477f9cbe16a93275a6b059e",
"received_encoded_sha256": "487d14e26e3a0f34482a6c2e8a5c5570ff8435a6b465b450a4691c478b95d52b",
"received_sample_count": 40000,
"audio_chunk_count": 51
}
}
Server build log · sendspin-server-cpp-server · built · 161.45s
RAWp-server.dir/trace_recorder.cpp.o
[100%] Linking CXX executable conformance-sendspin-server-cpp-server
[100%] Built target conformance-sendspin-server-cpp-server
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:6: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:17:34: note: expanded from macro 'HAS_SIZEOF_INT128_64BIT'
17 | #define HAS_SIZEOF_INT128_64BIT (defined(__SIZEOF_INT128__) && defined(__LP64__))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:6: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:17:64: note: expanded from macro 'HAS_SIZEOF_INT128_64BIT'
17 | #define HAS_SIZEOF_INT128_64BIT (defined(__SIZEOF_INT128__) && defined(__LP64__))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:33: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:18:25: note: expanded from macro 'HAS_MSVC_64BIT'
18 | #define HAS_MSVC_64BIT (defined(_MSC_VER) && defined(_M_X64))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:33: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:18:46: note: expanded from macro 'HAS_MSVC_64BIT'
18 | #define HAS_MSVC_64BIT (defined(_MSC_VER) && defined(_M_X64))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:51: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
21 | #if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:19:28: note: expanded from macro 'HAS_GCC_4_4_64BIT'
19 | #define HAS_GCC_4_4_64BIT (defined(__GNUC__) && defined(__LP64__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))))
| ^
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:21:51: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
/Users/runner/work/conformance/conformance/adapters/sendspin-server-cpp/server/build/_deps/noise_c-src/src/crypto/donna/poly1305-donna.c:19:49: note: expanded from macro 'HAS_GCC_4_4_64BIT'
19 | #define HAS_GCC_4_4_64BIT (defined(__GNUC__) && defined(__LP64__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))))
| ^
6 warnings generated.Client build log · sendspin-dotnet-client · built · 17.06s
RAWSDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1500BracesForMultiLineStatementsMustNotShareLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1502ElementMustNotBeOnASingleLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1508ClosingBracesMustNotBePrecededByBlankLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1500BracesForMultiLineStatementsMustNotShareLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1502ElementMustNotBeOnASingleLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1508ClosingBracesMustNotBePrecededByBlankLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1500BracesForMultiLineStatementsMustNotShareLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1502ElementMustNotBeOnASingleLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
CSC : warning AD0001: Analyzer 'StyleCop.Analyzers.LayoutRules.SA1508ClosingBracesMustNotBePrecededByBlankLine' threw an exception of type 'System.NullReferenceException' with message 'Object reference not set to an instance of an object.'. [/Users/runner/work/conformance/conformance/repos/sendspin-dotnet/src/Sendspin.SDK/Sendspin.SDK.csproj::TargetFramework=net10.0]
/Users/runner/work/conformance/conformance/adapters/sendspin-dotnet/client/Program.cs(607,52): warning CS0067: The event 'HashingAudioPipeline.ErrorOccurred' is never used [/Users/runner/work/conformance/conformance/adapters/sendspin-dotnet/client/Conformance.SendspinDotnet.Client.csproj]
/Users/runner/work/conformance/conformance/adapters/sendspin-dotnet/client/Program.cs(608,37): warning CS0067: The event 'HashingAudioPipeline.OutputLatencyChanged' is never used [/Users/runner/work/conformance/conformance/adapters/sendspin-dotnet/client/Conformance.SendspinDotnet.Client.csproj]
1228 Warning(s)
0 Error(s)
Time Elapsed 00:00:16.04