@@ -524,68 +524,48 @@ public final class MediaChannel {
524524
525525 /// MediaChannel の接続中にマイクをハードミュート有効化/無効化します
526526 /// - Parameter mute: `true` で有効化、`false` で無効化
527- /// - Returns: 成功した場合は `true`、接続状態などの理由で処理しなかった場合は `false`
528- public func setAudioHardMute( _ mute: Bool ) -> Bool {
529- guard canSwitchAudioMute ( ) else {
530- return false
527+ /// - Returns: 成功した場合は `nil`、失敗した場合は `Error` を返します
528+ public func setAudioHardMute( _ mute: Bool ) -> Error ? {
529+ guard state == . connected else {
530+ return SoraError . mediaChannelError (
531+ reason: " MediaChannel is not connected (state: \( state) ) " )
531532 }
532533
533- return NativePeerChannelFactory . default. audioDeviceModuleWrapper. setAudioHardMute ( mute)
534- }
535-
536- /// MediaChannel の接続中にマイクをソフトミュート有効化 / 無効化します
537- /// - Parameter mute: `true` で有効化、`false` で無効化
538- /// - Returns: 成功した場合は `true`、接続状態などの理由で処理しなかった場合は `false`
539- public func setAudioSoftMute( _ mute: Bool ) -> Bool {
540- guard canSwitchAudioMute ( ) else {
541- return false
534+ guard configuration. audioEnabled else {
535+ return SoraError . mediaChannelError ( reason: " audioEnabled is false " )
542536 }
543537
544- // senderStream が Nullable のためアンラップが必要
545- guard let senderStream else {
546- return false
538+ if NativePeerChannelFactory . default. audioDeviceModuleWrapper. setAudioHardMute ( mute) {
539+ return SoraError . mediaChannelError ( reason: " AudioDeviceModuleWrapper::setAudioHardMute failed " )
547540 }
548541
549- senderStream. audioEnabled = !mute
550- Logger . debug ( type: . mediaChannel, message: " setAudioSoftMute mute= \( mute) " )
551- return true
542+ return nil
552543 }
553544
554- // 音声ミュートの切り替えが可能かチェックします
555- private func canSwitchAudioMute( ) -> Bool {
556- // 接続中か
545+ /// MediaChannel の接続中にマイクをソフトミュート有効化 / 無効化します
546+ /// - Parameter mute: `true` で有効化、`false` で無効化
547+ /// - Returns: 成功した場合は `nil`、失敗した場合は `Error` を返します
548+ public func setAudioSoftMute( _ mute: Bool ) -> Error ? {
557549 guard state == . connected else {
558- Logger . debug (
559- type: . mediaChannel,
560- message: " Switch audio mute failed, cause MediaChannel is not connected (state: \( state) ) " )
561- return false
550+ return SoraError . mediaChannelError (
551+ reason: " MediaChannel is not connected (state: \( state) ) " )
562552 }
563553
564- // 接続設定で音声を有効にしているか
565554 guard configuration. audioEnabled else {
566- Logger . debug (
567- type: . mediaChannel,
568- message: " Switch audio mute failed, cause audioEnabled is false " )
569- return false
555+ return SoraError . mediaChannelError ( reason: " audioEnabled is false " )
570556 }
571557
572- // ストリームが存在するか
573558 guard let senderStream else {
574- Logger . debug (
575- type: . mediaChannel,
576- message: " Switch audio mute failed, cause senderStream is unavailable " )
577- return false
559+ return SoraError . mediaChannelError ( reason: " senderStream is unavailable " )
578560 }
579561
580- // ストリームに音声トラックが含まれているか
581562 guard senderStream. hasAudioTrack else {
582- Logger . debug (
583- type: . mediaChannel,
584- message: " Switch audio mute failed, cause senderStream has no AudioTrack " )
585- return false
563+ return SoraError . mediaChannelError ( reason: " senderStream has no AudioTrack " )
586564 }
587565
588- return true
566+ senderStream. audioEnabled = !mute
567+ Logger . debug ( type: . mediaChannel, message: " setAudioSoftMute mute= \( mute) " )
568+ return nil
589569 }
590570}
591571
0 commit comments