mirror of
https://github.com/samsonjs/SJSAssetExportSession.git
synced 2026-03-25 08:45:50 +00:00
Try to improve cancellation response, memory might be leaking
This commit is contained in:
parent
c5b127c702
commit
33152e4e44
1 changed files with 10 additions and 1 deletions
|
|
@ -129,7 +129,10 @@ actor SampleWriter {
|
|||
try await Task.sleep(for: .milliseconds(10))
|
||||
}
|
||||
|
||||
guard reader.status != .cancelled && writer.status != .cancelled else {
|
||||
guard !isCancelled, reader.status != .cancelled, writer.status != .cancelled else {
|
||||
log.debug("Cancelled before writing samples")
|
||||
reader.cancelReading()
|
||||
writer.cancelWriting()
|
||||
throw CancellationError()
|
||||
}
|
||||
guard writer.status != .failed else {
|
||||
|
|
@ -253,6 +256,12 @@ actor SampleWriter {
|
|||
|
||||
private func writeReadySamples(output: AVAssetReaderOutput, input: AVAssetWriterInput) -> Bool {
|
||||
while input.isReadyForMoreMediaData {
|
||||
guard !isCancelled else {
|
||||
log.debug("Cancelled while writing samples")
|
||||
reader.cancelReading()
|
||||
writer.cancelWriting()
|
||||
return false
|
||||
}
|
||||
guard reader.status == .reading && writer.status == .writing,
|
||||
let sampleBuffer = output.copyNextSampleBuffer() else {
|
||||
input.markAsFinished()
|
||||
|
|
|
|||
Loading…
Reference in a new issue