     var audioEnabled: Bool { get set }
 
     /**
-     音声のボリューム。 0 から 10 (含む) までの値をセットします。
+     受信した音声のボリューム。 0 から 10 (含む) までの値をセットします。
      このプロパティはロールがサブスクライバーの場合のみ有効です。
      */
-    var audioVolume: Double? { get set }
+    var remoteAudioVolume: Double? { get set }
     
     // MARK: 映像フレームの送信
 

    var nativeStream: RTCMediaStream
    
    var nativeVideoTrack: RTCVideoTrack? {
        get {
            return nativeStream.videoTracks.first
        }
        set {
            if let track = newValue {
                if !nativeStream.videoTracks.contains(track) {
                    if let adapter = videoRendererAdapter {
                        track.add(adapter)
                    }
                    nativeStream.addVideoTrack(track)
                }
                assert(nativeStream.videoTracks.count == 1)
            } else {
                let tracks = nativeStream.videoTracks
                for track in tracks {
                    if let adapter = videoRendererAdapter {
                        track.remove(adapter)
                    }
                    nativeStream.removeVideoTrack(track)
                }
                assert(nativeStream.videoTracks.count == 0)
            }
        }
    }
    
    var nativeVideoSource: RTCVideoSource? {
        get { return nativeVideoTrack?.source }
    }
    
    var nativeAudioTrack: RTCAudioTrack? {
        get {
            return nativeStream.audioTracks.first }
        set {
            if let track = newValue {
                if !nativeStream.audioTracks.contains(track) {
                    nativeStream.addAudioTrack(track)
                }
                assert(nativeStream.audioTracks.count == 1)
            } else {
                let tracks = nativeStream.audioTracks
                for track in tracks {
                    nativeStream.removeAudioTrack(track)
                }
                assert(nativeStream.audioTracks.count == 0)
            }
        }
    }
    
    var cachedNativeVideoTrack: RTCVideoTrack?
    var cachedNativeAudioTrack: RTCAudioTrack?

    var videoEnabled: Bool {
        get {
            return nativeVideoTrack != nil
        }
        set {
            guard videoEnabled != newValue else {
                return
            }
            if newValue {
                nativeVideoTrack = cachedNativeVideoTrack
            } else {
                nativeVideoTrack = nil
            }
            handlers.onSwitchVideoHandler?(newValue)
        }
    }
    
    var origAudioVolume: Double?
    
    var audioEnabled: Bool {
        get {
            return nativeAudioTrack != nil
        }
        set {
            guard audioEnabled != newValue else {
                return
            }
            if newValue {
                nativeAudioTrack = cachedNativeAudioTrack
                audioVolume = origAudioVolume
            } else {
                origAudioVolume = audioVolume
                audioVolume = 0
                nativeAudioTrack = nil
            }
            handlers.onSwitchAudioHandler?(newValue)
        }
    }
    
    var audioVolume: Double? {
        get {
            if let track = cachedNativeAudioTrack {
                return track.source.volume
            } else {
                return nil
            }
        }
        set {
            if let volume = newValue {
                if let track = cachedNativeAudioTrack {
                    var volume = volume
                    if volume < 0 {
                        volume = 0
                    } else if volume > 10 {
                        volume = 10
                    }
                    track.source.volume = volume
                    Logger.debug(type: .mediaStream,
                                 message: "set audio volume \(volume)")
                }
            }
        }
    }

        self.nativeStream = nativeStream
        streamId = nativeStream.streamId
        creationTime = Date()
    }
    
    private static let dummyCapturer: RTCVideoCapturer = RTCVideoCapturer()
