mirror of
https://github.com/samsonjs/SJSAssetExportSession.git
synced 2026-04-27 14:57:46 +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))
|
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()
|
throw CancellationError()
|
||||||
}
|
}
|
||||||
guard writer.status != .failed else {
|
guard writer.status != .failed else {
|
||||||
|
|
@ -253,6 +256,12 @@ actor SampleWriter {
|
||||||
|
|
||||||
private func writeReadySamples(output: AVAssetReaderOutput, input: AVAssetWriterInput) -> Bool {
|
private func writeReadySamples(output: AVAssetReaderOutput, input: AVAssetWriterInput) -> Bool {
|
||||||
while input.isReadyForMoreMediaData {
|
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,
|
guard reader.status == .reading && writer.status == .writing,
|
||||||
let sampleBuffer = output.copyNextSampleBuffer() else {
|
let sampleBuffer = output.copyNextSampleBuffer() else {
|
||||||
input.markAsFinished()
|
input.markAsFinished()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue