minor tidyup
This commit is contained in:
@@ -96,12 +96,10 @@ public class AudioBuffer {
|
|||||||
|
|
||||||
availableBytes -= bytesPerChunk
|
availableBytes -= bytesPerChunk
|
||||||
|
|
||||||
let packet = AudioPacket(
|
return AudioPacket(
|
||||||
timestamp: Date(),
|
timestamp: Date(),
|
||||||
duration: chunkDuration,
|
duration: chunkDuration,
|
||||||
rawAudioData: chunkData
|
data: chunkData
|
||||||
)
|
)
|
||||||
|
|
||||||
return packet
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public class AudioFormatConverter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func transform(_ packet: AudioPacket) -> AudioPacket {
|
public func transform(_ packet: AudioPacket) -> AudioPacket {
|
||||||
let inputData = packet.rawAudioData
|
let inputData = packet.data
|
||||||
|
|
||||||
// Calculate frame counts
|
// Calculate frame counts
|
||||||
let inputFrameCount =
|
let inputFrameCount =
|
||||||
@@ -119,16 +119,10 @@ public class AudioFormatConverter {
|
|||||||
return AudioPacket(
|
return AudioPacket(
|
||||||
timestamp: packet.timestamp,
|
timestamp: packet.timestamp,
|
||||||
duration: packet.duration,
|
duration: packet.duration,
|
||||||
rawAudioData: outputData
|
data: outputData
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: - Convenience Constructors
|
|
||||||
|
|
||||||
extension AudioFormatConverter {
|
|
||||||
/// Create a converter to a specific sample rate with mono PCM 16-bit output
|
|
||||||
/// Since the tap already converts to mono, we hardcode channels to 1
|
|
||||||
public static func toSampleRate(
|
public static func toSampleRate(
|
||||||
_ sampleRate: Double, from sourceFormat: AudioStreamBasicDescription
|
_ sampleRate: Double, from sourceFormat: AudioStreamBasicDescription
|
||||||
) throws -> AudioFormatConverter {
|
) throws -> AudioFormatConverter {
|
||||||
@@ -145,17 +139,7 @@ extension AudioFormatConverter {
|
|||||||
return try AudioFormatConverter(sourceFormat: sourceFormat, targetFormat: targetFormat)
|
return try AudioFormatConverter(sourceFormat: sourceFormat, targetFormat: targetFormat)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Common sample rates for validation
|
|
||||||
public static let supportedSampleRates: [Double] = [
|
|
||||||
8000, 16000, 22050, 24000, 32000, 44100, 48000,
|
|
||||||
]
|
|
||||||
|
|
||||||
/// Validate if a sample rate is supported
|
|
||||||
public static func isValidSampleRate(_ sampleRate: Double) -> Bool {
|
public static func isValidSampleRate(_ sampleRate: Double) -> Bool {
|
||||||
return supportedSampleRates.contains(sampleRate)
|
return [8000, 16000, 22050, 24000, 32000, 44100, 48000].contains(sampleRate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Error Types
|
|
||||||
|
|
||||||
// AudioConverterError moved to Sources/Core/Errors/AudioTeeErrors.swift
|
|
||||||
|
|||||||
@@ -3,15 +3,15 @@ import Foundation
|
|||||||
public struct AudioPacket {
|
public struct AudioPacket {
|
||||||
public let timestamp: Date
|
public let timestamp: Date
|
||||||
public let duration: Double
|
public let duration: Double
|
||||||
public let rawAudioData: Data
|
public let data: Data
|
||||||
|
|
||||||
public init(
|
public init(
|
||||||
timestamp: Date,
|
timestamp: Date,
|
||||||
duration: Double,
|
duration: Double,
|
||||||
rawAudioData: Data
|
data: Data
|
||||||
) {
|
) {
|
||||||
self.timestamp = timestamp
|
self.timestamp = timestamp
|
||||||
self.duration = duration
|
self.duration = duration
|
||||||
self.rawAudioData = rawAudioData
|
self.data = data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ public class BinaryAudioOutputHandler: AudioOutputHandler {
|
|||||||
|
|
||||||
public func handleAudioPacket(_ packet: AudioPacket) {
|
public func handleAudioPacket(_ packet: AudioPacket) {
|
||||||
// Write raw binary audio data directly to stdout
|
// Write raw binary audio data directly to stdout
|
||||||
FileHandle.standardOutput.write(packet.rawAudioData)
|
FileHandle.standardOutput.write(packet.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func handleMetadata(_ metadata: AudioStreamMetadata) {
|
public func handleMetadata(_ metadata: AudioStreamMetadata) {
|
||||||
|
|||||||
@@ -7,9 +7,6 @@ public enum MessageType: String, Codable {
|
|||||||
case streamStart = "stream_start"
|
case streamStart = "stream_start"
|
||||||
case streamStop = "stream_stop"
|
case streamStop = "stream_stop"
|
||||||
|
|
||||||
// Audio data
|
|
||||||
case audio
|
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
case info
|
case info
|
||||||
case error
|
case error
|
||||||
|
|||||||
Reference in New Issue
Block a user