Skip to content

Fix iOS audio: app-owned manual audio session for stable playout - #346

Draft
MaxHeimbrock wants to merge 1 commit into
mainfrom
max/ios-audio-session-manual-mode
Draft

Fix iOS audio: app-owned manual audio session for stable playout#346
MaxHeimbrock wants to merge 1 commit into
mainfrom
max/ios-audio-session-manual-mode

Fix iOS audio: app-owned manual audio session for stable playout

78e4c7c
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
GitHub Actions / Test Results (6000.0.49f1) completed Jul 9, 2026 in 0s

⚠️ Test Results (6000.0.49f1) - 131/146, skipped: 15 - Passed in 15.171s

⚠️ editmode-results.xml - 73/75, skipped: 2 - Passed in 0.295s

⚠️ playmode-results.xml - 58/71, skipped: 13 - Passed in 14.876s

Details

⚠️ editmode-results.xml - 73/75, skipped: 2 - Passed in 0.295s
  • ✅ LiveKit.EditModeTests.DataStreamTests - 4/4 - Passed in 0.099s
    • OnChunk_ConcurrentProducerAndConsumer_AllChunksObservedInOrder - Passed in 0.068s
    • OnChunk_MultipleChunksBeforeConsumerDrains_AllChunksAreObserved - Passed in 0.002s
    • OnChunk_RacingWithReset_NoChunkLost - Passed in 0.018s
    • OnEos_RacingWithChunks_FinalStateConsistent - Passed in 0.012s
  • ✅ LiveKit.EditModeTests.DataTrackTests - 6/6 - Passed in 0.010s
    • DataTrackFrame_Constructor_WithExplicitTimestamp_SetsValue - Passed in 0.001s
    • DataTrackFrame_DurationSinceTimestamp_NullWithoutTimestamp - Passed in 0.001s
    • DataTrackFrame_DurationSinceTimestamp_ReturnsValue - Passed in 0.007s
    • DataTrackFrame_WithUserTimestampNow_DoesNotMutateOriginal - Passed in 0.001s
    • DataTrackFrame_WithUserTimestampNow_OverwritesExistingTimestamp - Passed in 0.000s
    • DataTrackFrame_WithUserTimestampNow_SetsTimestamp - Passed in 0.000s
  • ✅ LiveKit.EditModeTests.FfiHandleTests.IsInvalid_ReturnsTrueForKnownInvalidPointers - 2/2 - Passed in 0.001s
    • IsInvalid_ReturnsTrueForKnownInvalidPointers(0) - Passed in 0.001s
    • IsInvalid_ReturnsTrueForKnownInvalidPointers(-1) - Passed in 0.000s
  • ✅ LiveKit.EditModeTests.FfiResponseEnsureCleanTests.EnsureClean_Throws_ForOneofCases - 5/5 - Passed in 0.004s
    • EnsureClean_Throws_ForOneofCases("LocalTrackMute",LiveKit.Proto.LocalTrackMuteResponse) - Passed in 0.001s
    • EnsureClean_Throws_ForOneofCases("ByteStreamOpen",LiveKit.Proto.ByteStreamOpenResponse) - Passed in 0.001s
    • EnsureClean_Throws_ForOneofCases("SendStreamHeader",LiveKit.Proto.SendStreamHeaderResponse) - Passed in 0.001s
    • EnsureClean_Throws_ForOneofCases("SetRemoteTrackPublicationQuality",LiveKit.Proto.SetRemoteTrackPublicationQualityResponse) - Passed in 0.001s
    • EnsureClean_Throws_ForOneofCases("SendChatMessage",LiveKit.Proto.SendChatMessageResponse) - Passed in 0.001s
  • ✅ LiveKit.EditModeTests.FfiResponseEnsureCleanTests - 2/2 - Passed in 0.004s
    • EnsureClean_DoesNotThrow_WhenMessageCaseIsNone - Passed in 0.002s
    • EnsureClean_Throws_ForConnect - Passed in 0.002s
  • ✅ LiveKit.EditModeTests.MonoBehaviourContextTests - 1/1 - Passed in 0.002s
    • RunCoroutine_AfterInstanceDestroyed_DrainsSynchronously_DoesNotThrow - Passed in 0.002s
  • ✅ LiveKit.EditModeTests.PanicEventTests - 1/1 - Passed in 0.019s
    • RouteFfiEvent_Panic_RaisesPanicReceivedOnMainThread_AndCancelsPendingCallbacks - Passed in 0.019s
  • ✅ LiveKit.EditModeTests.PlatformAudioTests - 3/3 - Passed in 0.002s
    • AudioDevice_StoresIndexNameGuid - Passed in 0.001s
    • AudioProcessingOptions_Default_EnablesProcessingAndHardware - Passed in 0.000s
    • PlatformAudioSource_NullPlatformAudio_Throws - Passed in 0.001s
  • ✅ LiveKit.EditModeTests.RingBufferTests - 16/16 - Passed in 0.010s
    • AvailableRead_AfterWrite_MatchesWrittenLength - Passed in 0.001s
    • AvailableReadInPercent_ReturnsCorrectRatio - Passed in 0.001s
    • AvailableWrite_AfterWrite_ReducedByWrittenLength - Passed in 0.000s
    • AvailableWriteInPercent_ReturnsCorrectRatio - Passed in 0.000s
    • Capacity_MatchesConstructorArgument - Passed in 0.000s
    • Clear_ResetsState - Passed in 0.003s
    • MultipleWriteReadCycles_MaintainIntegrity - Passed in 0.001s
    • Read_ReturnsNumberOfBytesRead - Passed in 0.000s
    • Read_WhenEmpty_ReturnsZero - Passed in 0.000s
    • SkipRead_AdvancesReadPosition - Passed in 0.000s
    • SkipRead_BeyondAvailable_ClampedToAvailable - Passed in 0.000s
    • Write_ReturnsNumberOfBytesWritten - Passed in 0.000s
    • Write_WhenFull_ReturnsZero - Passed in 0.000s
    • Write_WhenPartiallyFull_WritesOnlyAvailable - Passed in 0.000s
    • WriteAndRead_DataMatchesInput - Passed in 0.000s
    • WriteAndRead_WithWraparound_DataIntegrity - Passed in 0.000s
  • ✅ LiveKit.EditModeTests.RoomDisconnectReasonTests - 3/3 - Passed in 0.013s
    • Disconnected_SurfacesReasonOnPropertyAndEvent - Passed in 0.005s
    • DisconnectReason_DefaultsToUnknown - Passed in 0.000s
    • ParticipantDisconnected_SurfacesReasonOnEvent - Passed in 0.007s
  • ✅ LiveKit.EditModeTests.RoomDisconnectTests - 2/2 - Passed in 0.001s
    • Disconnect_OnNeverConnectedRoom_CalledTwice_DoesNotThrow - Passed in 0.000s
    • Disconnect_OnNeverConnectedRoom_DoesNotThrow - Passed in 0.000s
  • ✅ LiveKit.EditModeTests.RoomStreamHandlerTests - 4/4 - Passed in 0.003s
    • RegisterByteStreamHandler_DuplicateTopic_ThrowsStreamError - Passed in 0.001s
    • RegisterTextStreamHandler_DuplicateTopic_ThrowsStreamError - Passed in 0.001s
    • UnregisterByteStreamHandler_AllowsReregistrationOfSameTopic - Passed in 0.000s
    • UnregisterTextStreamHandler_AllowsReregistrationOfSameTopic - Passed in 0.000s
  • ✅ LiveKit.EditModeTests.RpcErrorTests - 4/4 - Passed in 0.004s
    • BuiltIn_HasMessageAndCodeForEveryErrorCode - Passed in 0.004s
    • Constructor_DefaultDataIsNull - Passed in 0.000s
    • Constructor_SetsCodeMessageAndData - Passed in 0.000s
    • RpcError_IsException - Passed in 0.001s
  • ✅ LiveKit.EditModeTests.SkipDispatchTests - 5/5 - Passed in 0.006s
    • InlineCallback_RunsOnDispatchingBackgroundThread - Passed in 0.002s
    • MainThreadCallback_TrySkipDispatch_ReturnsFalseAndDoesNotComplete - Passed in 0.000s
    • RouteFfiEvent_InlineCallback_CompletesOnDispatchingThread - Passed in 0.001s
    • RouteFfiEvent_MainThreadCallback_PostsToSynchronizationContext_AndDrainsCompletion - Passed in 0.001s
    • TryDispatchPendingCallback_RunsCompletionSynchronouslyOnCallerThread - Passed in 0.001s
  • ✅ LiveKit.EditModeTests.ThreadSafeQueueTests - 5/5 - Passed in 0.007s
    • Clear_SetsCountToZero - Passed in 0.001s
    • ConcurrentEnqueueDequeue_NoExceptions - Passed in 0.005s
    • Dequeue_ReturnsEnqueuedItem_FIFO - Passed in 0.001s
    • Dequeue_WhenEmpty_ThrowsInvalidOperationException - Passed in 0.000s
    • Enqueue_IncreasesCount - Passed in 0.000s
  • ⚠️ LiveKit.EditModeTests.UsageStrictTests.NoManualCreateNew - 0/2, skipped: 2 - Passed in 0.000s
    • ⚠️ NoManualCreateNew("FfiResponse") - Skipped
    • ⚠️ NoManualCreateNew("FfiRequest") - Skipped
  • ✅ LiveKit.EditModeTests.VideoFrameTests.Create_ReturnsCorrectConcreteType - 6/6 - Passed in 0.005s
    • Create_ReturnsCorrectConcreteType(I420,LiveKit.I420Buffer) - Passed in 0.003s
    • Create_ReturnsCorrectConcreteType(I420A,LiveKit.I420ABuffer) - Passed in 0.000s
    • Create_ReturnsCorrectConcreteType(I422,LiveKit.I422Buffer) - Passed in 0.000s
    • Create_ReturnsCorrectConcreteType(I444,LiveKit.I444Buffer) - Passed in 0.000s
    • Create_ReturnsCorrectConcreteType(I010,LiveKit.I010Buffer) - Passed in 0.000s
    • Create_ReturnsCorrectConcreteType(Nv12,LiveKit.NV12Buffer) - Passed in 0.000s
  • ✅ LiveKit.EditModeTests.VideoFrameTests - 1/1 - Passed in 0.000s
    • Create_ReturnsNull_ForUnsupportedType - Passed in 0.000s
  • ✅ LiveKit.EditModeTests.YieldInstructionThreadingTests - 3/3 - Passed in 0.038s
    • IsDone_SetFromBackgroundThread_ObservedByForegroundSpin - Passed in 0.013s
    • IsError_VisibleAcrossThreadsOnceIsDoneIsObserved - Passed in 0.004s
    • KeepWaiting_FlipsToFalse_AfterBackgroundCompletion - Passed in 0.021s
⚠️ playmode-results.xml - 58/71, skipped: 13 - Passed in 14.876s
  • ✅ LiveKit.PlayModeTests.AudioBufferTests - 2/2 - Passed in 1.576s
    • AudioBuffer_WhenAppForegrounded_BufferIsCleared - Passed in 0.990s
    • AudioBuffer_WhenBufferRunsFull_TriggersCatchupMechanism - Passed in 0.585s
  • ✅ LiveKit.PlayModeTests.ByteStreamTests - 1/1 - Passed in 0.246s
    • StreamBytes_WriteAndClose_ReceivedViaReadAll - Passed in 0.246s
  • ✅ LiveKit.PlayModeTests.DataStreamTests - 5/5 - Passed in 0.009s
    • RegisterByteHandler_FailsWithDuplicateTopic - Passed in 0.006s
    • RegisterTextAndByteHandler_SameTopic_BothSucceed - Passed in 0.001s
    • RegisterTextHandler_FailsWithDuplicateTopic - Passed in 0.000s
    • UnregisterByteHandler_ThenRegisterSameTopic_Succeeds - Passed in 0.000s
    • UnregisterTextHandler_ThenRegisterSameTopic_Succeeds - Passed in 0.001s
  • ✅ LiveKit.PlayModeTests.DataTrackTests - 9/9 - Passed in 1.337s
    • PublishAndUnpublish_TriggersEvents - Passed in 0.216s
    • PublishDataTrack_IsPublishedReturnsTrue - Passed in 0.140s
    • PublishDataTrack_Succeeds - Passed in 0.096s
    • PublishDataTrack_TrackInfoMatchesOptions - Passed in 0.089s
    • PushAndReceive_FramePayloadMatches - Passed in 0.213s
    • PushAndReceive_TimestampIsPreserved - Passed in 0.214s
    • Subscribe_Succeeds - Passed in 0.199s
    • TryPush_Succeeds - Passed in 0.084s
    • Unpublish_IsPublishedReturnsFalse - Passed in 0.085s
  • ✅ LiveKit.PlayModeTests.FfiBoundaryTests - 1/1 - Passed in 0.083s
    • Disconnect_CalledTwice_DoesNotThrow - Passed in 0.083s
  • ✅ LiveKit.PlayModeTests.FfiHandleDisposalTests - 1/1 - Passed in 0.195s
    • StreamWriter_LeakedHandle_DoesNotCrashOnGC - Passed in 0.195s
  • ✅ LiveKit.PlayModeTests.LateJoinTrackSubscriptionTests - 1/1 - Passed in 0.360s
    • LateJoiner_ReceivesTrackSubscribedForAlreadyPublishedTracks - Passed in 0.360s
  • ✅ LiveKit.PlayModeTests.LocalParticipantTests - 4/4 - Passed in 0.321s
    • Identity_MatchesProvided - Passed in 0.092s
    • Metadata_MatchesProvided - Passed in 0.087s
    • Name_MatchesProvided - Passed in 0.069s
    • Sid_StartsWithPA - Passed in 0.073s
  • ✅ LiveKit.PlayModeTests.PanicRoomTeardownTests - 1/1 - Passed in 0.086s
    • Panic_DisconnectsConnectedRoom - Passed in 0.086s
  • ✅ LiveKit.PlayModeTests.ParticipantMetadataTests - 3/3 - Passed in 0.597s
    • SetAttributes_UpdatesLocalAndTriggersRemoteEvent - Passed in 0.192s
    • SetMetadata_UpdatesLocalAndTriggersRemoteEvent - Passed in 0.198s
    • SetName_UpdatesLocalAndTriggersRemoteEvent - Passed in 0.208s
  • ⚠️ LiveKit.PlayModeTests.PlatformAudioIntegrationTests - 0/4, skipped: 4 - Passed in 0.010s
    • ⚠️ MultipleSourcesFromOneManager_Publish - Skipped
    • ⚠️ PlatformAudioFramesReachRemote_ViaStats - Skipped
    • ⚠️ PublishPlatformAudioTrack_EndToEnd - Skipped
    • ⚠️ UnpublishPlatformAudioTrack_Propagates - Skipped
  • ⚠️ LiveKit.PlayModeTests.PlatformAudioTests - 0/5, skipped: 5 - Passed in 0.008s
    • ⚠️ CreateSource_WithCustomOptions - Skipped
    • ⚠️ CreateSourceAndTrack_WhenAvailable - Skipped
    • ⚠️ EnumerateDevices_AndSelectByGuid_DoesNotThrow - Skipped
    • ⚠️ SetRecordingDeviceByIndex_OutOfRange_Throws - Skipped
    • ⚠️ StartThenStopRecording_DoesNotThrow - Skipped
  • ✅ LiveKit.PlayModeTests.PublishDataTests - 2/2 - Passed in 0.350s
    • ReturnsError_ForOversizedPayload - Passed in 0.184s
    • ReturnsSuccess_ForSmallPayload - Passed in 0.166s
  • ⚠️ LiveKit.PlayModeTests.RoomTests - 7/11, skipped: 4 - Passed in 3.230s
    • Connect_FailsWithInvalidUrl - Passed in 0.003s
    • ⚠️ ConnectionState_IsConnected - Skipped
    • ⚠️ Disconnect_TriggersEvent - Skipped
    • GetAwaiter_CompletesImmediately_WhenAlreadyDone - Passed in 0.003s
    • GetAwaiter_ResumesOnCompletion_AndSurfacesIsError - Passed in 0.003s
    • GetAwaiter_ResumesOnMainThread_WhenCompletedOffThread - Passed in 0.003s
    • ⚠️ ParticipantDisconnect_TriggersEvent - Skipped
    • ParticipantJoin_CreatesRemoteParticipant - Passed in 3.062s
    • ⚠️ ParticipantJoin_TriggersEvent - Skipped
    • RoomName_MatchesProvided - Passed in 0.085s
    • RoomSid_StartsWithRM - Passed in 0.071s
  • ✅ LiveKit.PlayModeTests.RpcTests - 7/7 - Passed in 1.280s
    • RegisterRpcMethod_AndPerformRpc_ReturnsResponse - Passed in 0.198s
    • PerformRpc_NearLimitPayload_EchoesRoundTrip - Passed in 0.207s
    • PerformRpc_ConcurrentInvocations_AllComplete - Passed in 0.167s
    • PerformRpc_HandlerThrowsGenericException_ReturnsApplicationError - Passed in 0.196s
    • PerformRpc_HandlerThrowsRpcError_PropagatesError - Passed in 0.153s
    • PerformRpc_UnregisteredMethod_ReturnsUnsupportedMethod - Passed in 0.175s
    • UnregisterRpcMethod_ThenPerformRpc_ReturnsUnsupportedMethod - Passed in 0.184s
  • ✅ LiveKit.PlayModeTests.StreamLifecycleTests - 1/1 - Passed in 0.187s
    • SendFile_RecipientReceivesBytes - Passed in 0.187s
  • ✅ LiveKit.PlayModeTests.TextStreamTests - 4/4 - Passed in 0.724s
    • SendText_ReceivedByHandler_ContentMatches - Passed in 0.236s
    • SendText_WithTopic_DispatchesToCorrectHandler - Passed in 0.151s
    • StreamText_CloseWithoutReason_Succeeds - Passed in 0.169s
    • StreamText_WriteAndClose_ReceivedViaReadAll - Passed in 0.169s
  • ✅ LiveKit.PlayModeTests.TrackTests - 8/8 - Passed in 3.646s
    • LocalAudioTrack_SetMute_TrueFalse_TogglesSourceMuteState - Passed in 0.092s
    • PublishAudioTrack_UnpublishAndRepublish_Succeeds - Passed in 0.145s
    • RemoteTrack_GetStats_ReturnsNoError - Passed in 1.911s
    • RemoteTrack_SetEnabled_FalseAndTrue_DoesNotThrow - Passed in 0.374s
    • RemoteTrackPublication_PublisherDisablesCamera_UpdatesFlagAndTriggersEvent - Passed in 0.217s
    • RemoteTrackPublication_PublisherMutesMic_UpdatesFlagAndTriggersEvent - Passed in 0.368s
    • RemoteTrackPublication_SetVideoQuality_DoesNotThrow - Passed in 0.194s
    • RemoteTrackPublication_Unsubscribe_UpdatesFlagAndTriggersEvent - Passed in 0.345s
  • ✅ LiveKit.PlayModeTests.VideoFrameMetadataTests - 1/1 - Passed in 0.530s
    • VideoFrame_AttachedMetadata_ReceivedOnSubscriber - Passed in 0.530s