mirror of
https://github.com/HaishinKit/HaishinKit.swift.git
synced 2026-05-07 20:12:28 +00:00
36 lines
757 B
Swift
36 lines
757 B
Swift
import Foundation
|
|
import HaishinKit
|
|
|
|
class ADTSReader: Sequence {
|
|
private var data: Data = .init()
|
|
|
|
func read(_ data: Data) {
|
|
self.data = data
|
|
}
|
|
|
|
func makeIterator() -> ADTSReaderIterator {
|
|
return ADTSReaderIterator(data: data)
|
|
}
|
|
}
|
|
|
|
struct ADTSReaderIterator: IteratorProtocol {
|
|
private let data: Data
|
|
private var cursor: Int = 0
|
|
private var header: ADTSHeader = .init()
|
|
|
|
init(data: Data) {
|
|
self.data = data
|
|
}
|
|
|
|
mutating func next() -> Int? {
|
|
guard cursor < data.count else {
|
|
return nil
|
|
}
|
|
header.data = data.advanced(by: cursor)
|
|
defer {
|
|
cursor += Int(header.aacFrameLength)
|
|
}
|
|
return Int(header.aacFrameLength)
|
|
}
|
|
}
|