@@ -91,12 +91,10 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
9191 private let renderSynchronizer : AVSampleBufferRenderSynchronizer
9292 private var videoRenderer : AVSampleBufferDisplayLayer
9393 private var audioRenderer : AVSampleBufferAudioRenderer ?
94- private weak var videoNode : MediaPlayerNode ?
9594
9695 private var partsState = ChunkMediaPlayerPartsState ( duration: nil , parts: [ ] )
9796 private var loadedParts : [ LoadedPart ] = [ ]
9897 private var loadedPartsMediaData : QueueLocalObject < LoadedPartsMediaData >
99- private var reportedDidEnqueueVideo : Bool = false
10098 private var hasSound : Bool = false
10199
102100 private var statusValue : MediaPlayerStatus ? {
@@ -175,7 +173,6 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
175173 assertionFailure ( )
176174 }
177175 self . videoRenderer = playerNode. videoLayer ?? AVSampleBufferDisplayLayer ( )
178- self . videoNode = playerNode
179176
180177 self . updateTimer = Foundation . Timer. scheduledTimer ( withTimeInterval: 1.0 / 60.0 , repeats: true , block: { [ weak self] _ in
181178 guard let self else {
@@ -680,8 +677,8 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
680677
681678 videoTarget. requestMediaDataWhenReady ( on: self . dataQueue. queue, using: { [ weak self] in
682679 if let loadedPartsMediaData = loadedPartsMediaData. unsafeGet ( ) {
683- let fillResult = ChunkMediaPlayerV2 . fillRendererBuffer ( bufferTarget: videoTarget, loadedPartsMediaData: loadedPartsMediaData, isVideo: true )
684- if fillResult . isReadyForMoreData {
680+ let bufferIsReadyForMoreData = ChunkMediaPlayerV2 . fillRendererBuffer ( bufferTarget: videoTarget, loadedPartsMediaData: loadedPartsMediaData, isVideo: true )
681+ if bufferIsReadyForMoreData {
685682 videoTarget. stopRequestingMediaData ( )
686683 Queue . mainQueue ( ) . async {
687684 guard let self else {
@@ -698,12 +695,11 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
698695 if !self . audioIsRequestingMediaData, let audioRenderer = self . audioRenderer {
699696 self . audioIsRequestingMediaData = true
700697 let loadedPartsMediaData = self . loadedPartsMediaData
701- let reportedDidEnqueueVideo = self . reportedDidEnqueueVideo
702698 let audioTarget = audioRenderer
703699 audioTarget. requestMediaDataWhenReady ( on: self . dataQueue. queue, using: { [ weak self] in
704700 if let loadedPartsMediaData = loadedPartsMediaData. unsafeGet ( ) {
705- let fillResult = ChunkMediaPlayerV2 . fillRendererBuffer ( bufferTarget: audioTarget, loadedPartsMediaData: loadedPartsMediaData, isVideo: false )
706- if fillResult . isReadyForMoreData {
701+ let bufferIsReadyForMoreData = ChunkMediaPlayerV2 . fillRendererBuffer ( bufferTarget: audioTarget, loadedPartsMediaData: loadedPartsMediaData, isVideo: false )
702+ if bufferIsReadyForMoreData {
707703 audioTarget. stopRequestingMediaData ( )
708704 Queue . mainQueue ( ) . async {
709705 guard let self else {
@@ -713,28 +709,13 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
713709 self . updateInternalState ( )
714710 }
715711 }
716- if fillResult. didEnqueue && !reportedDidEnqueueVideo {
717- Queue . mainQueue ( ) . async {
718- guard let self else {
719- return
720- }
721- self . reportedDidEnqueueVideo = true
722- if #available( iOS 17 . 4 , * ) {
723- } else {
724- if let videoNode = self . videoNode {
725- videoNode. notifyHasSentFramesToDisplay ( )
726- }
727- }
728- }
729- }
730712 }
731713 } )
732714 }
733715 }
734716
735- private static func fillRendererBuffer( bufferTarget: AVQueuedSampleBufferRendering , loadedPartsMediaData: LoadedPartsMediaData , isVideo: Bool ) -> ( isReadyForMoreData : Bool , didEnqueue : Bool ) {
717+ private static func fillRendererBuffer( bufferTarget: AVQueuedSampleBufferRendering , loadedPartsMediaData: LoadedPartsMediaData , isVideo: Bool ) -> Bool {
736718 var bufferIsReadyForMoreData = true
737- var didEnqeue = false
738719 outer: while true {
739720 if !bufferTarget. isReadyForMoreMediaData {
740721 bufferIsReadyForMoreData = false
@@ -774,7 +755,9 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
774755 continue outer
775756 }
776757 }
777- didEnqeue = true
758+ /*if isVideo {
759+ print("Enqueue \(isVideo ? "video" : "audio") at \(CMSampleBufferGetPresentationTimeStamp(sampleBuffer).seconds) \(CMSampleBufferGetPresentationTimeStamp(sampleBuffer).value)/\(CMSampleBufferGetPresentationTimeStamp(sampleBuffer).timescale) next \(CMSampleBufferGetPresentationTimeStamp(sampleBuffer).value + CMSampleBufferGetDuration(sampleBuffer).value)")
760+ }*/
778761 bufferTarget. enqueue ( sampleBuffer)
779762 hasData = true
780763 continue outer
@@ -787,7 +770,7 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
787770 }
788771 }
789772
790- return ( bufferIsReadyForMoreData, didEnqeue )
773+ return bufferIsReadyForMoreData
791774 }
792775}
793776
0 commit comments