mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-26 14:01:24 +00:00
FFMpegMediaFrameSource: fix video playback after seek
This commit is contained in:
@@ -276,8 +276,10 @@ final class FFMpegMediaFrameSource: NSObject, MediaFrameSource {
|
||||
return MediaFrameSourceSeekResult(buffers: MediaPlaybackBuffers(audioBuffer: nil, videoBuffer: nil), extraDecodedVideoFrames: [], timestamp: timestamp)
|
||||
}
|
||||
}))
|
||||
let _ = currentSemaphore.swap(nil)
|
||||
subscriber.putCompletion()
|
||||
} else {
|
||||
let _ = currentSemaphore.swap(nil)
|
||||
subscriber.putError(.generic)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: Unsa
|
||||
}
|
||||
if totalCount > maximumFetchSize {
|
||||
context.readingError = true
|
||||
return -1
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,7 +111,8 @@ private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: Unsa
|
||||
let _ = context.currentSemaphore.swap(nil)
|
||||
disposable.dispose()
|
||||
if !completedRequest {
|
||||
return -1
|
||||
context.readingError = true
|
||||
return 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -162,7 +163,8 @@ private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: Unsa
|
||||
let _ = context.currentSemaphore.swap(nil)
|
||||
disposable.dispose()
|
||||
if !completedRequest {
|
||||
return -1
|
||||
context.readingError = true
|
||||
return 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,7 +177,8 @@ private func readPacketCallback(userData: UnsafeMutableRawPointer?, buffer: Unsa
|
||||
}
|
||||
|
||||
if context.closed {
|
||||
return -1
|
||||
context.readingError = true
|
||||
return 0
|
||||
}
|
||||
return fetchedCount
|
||||
}
|
||||
@@ -212,7 +215,8 @@ private func seekCallback(userData: UnsafeMutableRawPointer?, offset: Int64, whe
|
||||
let _ = context.currentSemaphore.swap(nil)
|
||||
disposable.dispose()
|
||||
if !completedRequest {
|
||||
return -1
|
||||
context.readingError = true
|
||||
return 0
|
||||
}
|
||||
resourceSize = resultSize
|
||||
}
|
||||
@@ -222,7 +226,7 @@ private func seekCallback(userData: UnsafeMutableRawPointer?, offset: Int64, whe
|
||||
}
|
||||
|
||||
if (whence & FFMPEG_AVSEEK_SIZE) != 0 {
|
||||
result = Int64(resourceSize == Int(Int32.max - 1) ? -1 : resourceSize)
|
||||
result = Int64(resourceSize == Int(Int32.max - 1) ? 0 : resourceSize)
|
||||
} else {
|
||||
context.readingOffset = Int(min(Int64(resourceSize), offset))
|
||||
|
||||
@@ -248,7 +252,8 @@ private func seekCallback(userData: UnsafeMutableRawPointer?, offset: Int64, whe
|
||||
}
|
||||
|
||||
if context.closed {
|
||||
return -1
|
||||
context.readingError = true
|
||||
return 0
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user