diff --git a/Sources/IO/IOStream.swift b/Sources/IO/IOStream.swift index 35b38bec9..5f1c46791 100644 --- a/Sources/IO/IOStream.swift +++ b/Sources/IO/IOStream.swift @@ -524,7 +524,9 @@ extension IOStream: IOMixerDelegate { // MARK: IOMixerDelegate func mixer(_ mixer: IOMixer, didOutput video: CMSampleBuffer) { - observers.forEach { $0.stream(self, didOutput: video) } + if readyState != .playing { + observers.forEach { $0.stream(self, didOutput: video) } + } } func mixer(_ mixer: IOMixer, didOutput audio: AVAudioPCMBuffer, when: AVAudioTime) { @@ -565,6 +567,9 @@ extension IOStream: IOTellyUnitDelegate { // MARK: IOTellyUnitDelegate func tellyUnit(_ tellyUnit: IOTellyUnit, dequeue sampleBuffer: CMSampleBuffer) { mixer.videoIO.view?.enqueue(sampleBuffer) + if videoSampleAccess { + observers.forEach { $0.stream(self, didOutput: sampleBuffer) } + } } func tellyUnit(_ tellyUnit: IOTellyUnit, didBufferingChanged: Bool) { diff --git a/Sources/IO/MediaLink.swift b/Sources/IO/MediaLink.swift index 4634f5a07..441e6f7b0 100644 --- a/Sources/IO/MediaLink.swift +++ b/Sources/IO/MediaLink.swift @@ -68,7 +68,7 @@ final class MediaLink { } try? bufferQueue?.enqueue(buffer) if isBuffering { - bufferingTime += bufferQueue?.duration.seconds ?? 0 + bufferingTime = bufferQueue?.duration.seconds ?? 0 if bufferTime <= bufferingTime { bufferTime += 0.1 isBuffering = false