         }
     }
     
-    public var videoFilter: VideoFilter?
+    var videoFilter: VideoFilter?
     
-    public var videoRenderer: VideoRenderer? {
+    var videoRenderer: VideoRenderer? {
         get {
             return videoRendererAdapter?.videoRenderer
         }

        }
    }
    
    public var nativeStream: RTCMediaStream
    
    public var nativeVideoTrack: RTCVideoTrack? {
        get { return nativeStream.videoTracks.first }
    }
    
    public var nativeVideoSource: RTCVideoSource? {
        get { return nativeVideoTrack?.source }
    }
    
    public init(nativeStream: RTCMediaStream) {
        self.nativeStream = nativeStream
        streamId = nativeStream.streamId
        creationTime = Date()
    }
    
    private static let dummyCapturer: RTCVideoCapturer = RTCVideoCapturer()
    public func render(videoFrame: VideoFrame?) {
        if let frame = videoFrame {
            // フィルターを通す
            let frame = videoFilter?.filter(videoFrame: frame) ?? frame

    
}

class BasicMediaStream: MediaStream {
    
    var streamId: String = ""
    var videoTrackId: String = ""
    var audioTrackId: String = ""
    var creationTime: Date
    
    var videoCapturer: VideoCapturer? {
        willSet {
            if var oldValue = videoCapturer {
                // Do not autostop here, let others manage videoCapturer's life cycle
