diff --git a/device_config.go b/device_config.go index 80a8152..dd5b832 100644 --- a/device_config.go +++ b/device_config.go @@ -28,6 +28,7 @@ type DeviceConfig struct { Wasapi WasapiDeviceConfig Alsa AlsaDeviceConfig Pulse PulseDeviceConfig + AAudio AAudioDeviceConfig // TODO: Add support for coreaudio, opensl, aaudio } @@ -84,6 +85,13 @@ func DefaultDeviceConfig(deviceType DeviceType) DeviceConfig { deviceConfig.Pulse.StreamNamePlayback = C.GoString(config.pulse.pStreamNamePlayback) } + deviceConfig.AAudio.Usage = AAudioUsage(config.aaudio.usage) + deviceConfig.AAudio.ContentType = AAudioContentType(config.aaudio.contentType) + deviceConfig.AAudio.InputPreset = AAudioInputPreset(config.aaudio.inputPreset) + deviceConfig.AAudio.AllowedCapturePolicy = AAudioAllowedCapturePolicy(config.aaudio.allowedCapturePolicy) + deviceConfig.AAudio.NoAutoStartAfterReroute = uint32(config.aaudio.noAutoStartAfterReroute) + deviceConfig.AAudio.EnableCompatibilityWorkarounds = uint32(config.aaudio.enableCompatibilityWorkarounds) + return deviceConfig } @@ -146,6 +154,13 @@ func (d *DeviceConfig) toC() (C.ma_device_config, func()) { }) } + deviceConfig.aaudio.usage = C.ma_aaudio_usage(d.AAudio.Usage) + deviceConfig.aaudio.contentType = C.ma_aaudio_content_type(d.AAudio.ContentType) + deviceConfig.aaudio.inputPreset = C.ma_aaudio_input_preset(d.AAudio.InputPreset) + deviceConfig.aaudio.allowedCapturePolicy = C.ma_aaudio_allowed_capture_policy(d.AAudio.AllowedCapturePolicy) + deviceConfig.aaudio.noAutoStartAfterReroute = C.ma_bool32(d.AAudio.NoAutoStartAfterReroute) + deviceConfig.aaudio.enableCompatibilityWorkarounds = C.ma_bool32(d.AAudio.EnableCompatibilityWorkarounds) + return deviceConfig, func() { for _, release := range releasers { defer release() @@ -203,3 +218,13 @@ type ResampleLinearConfig struct { type ResampleSpeexConfig struct { Quality int } + +// AAudioDeviceConfig type. +type AAudioDeviceConfig struct { + Usage AAudioUsage + ContentType AAudioContentType + InputPreset AAudioInputPreset + AllowedCapturePolicy AAudioAllowedCapturePolicy + NoAutoStartAfterReroute uint32 + EnableCompatibilityWorkarounds uint32 +} diff --git a/enumerations.go b/enumerations.go index 332336c..715a369 100644 --- a/enumerations.go +++ b/enumerations.go @@ -116,3 +116,64 @@ const ( IOSSessionCategoryOptionAllowBluetoothA2dp = 0x20 // AVAudioSessionCategoryOptionAllowBluetoothA2DP IOSSessionCategoryOptionAllowAirPlay = 0x40 // AVAudioSessionCategoryOptionAllowAirPlay ) + +// AAudioUsage type. +type AAudioUsage uint32 + +// AAudioUsages enumeration. +const ( + AAudioUsageDefault AAudioUsage = iota + AAudioUsageMedia + AAudioUsageVoiceCommunication + AAudioUsageVoiceCommunicationSignalling + AAudioUsageAlarm + AAudioUsageNotification + AAudioUsageNotificationRingtone + AAudioUsageNotificationEvent + AAudioUsageAssistanceAccessibility + AAudioUsageAssistanceNavigationGuidance + AAudioUsageAssistanceSonification + AAudioUsageGame + AAudioUsageAssitant + AAudioUsageEmergency + AAudioUsageSafety + AAudioUsageVehicleStatus + AAudioUsageAnnouncement +) + +// AAudioContentType type. +type AAudioContentType uint32 + +// AAudioContentTypes enumeration. +const ( + AAudioContentTypeDefault AAudioContentType = iota + AAudioContentTypeSpeech + AAudioContentTypeMusic + AAudioContentTypeMovie + AAudioContentTypeSonification +) + +// AAudioInputPreset type. +type AAudioInputPreset uint32 + +// AAudioInputPresets enumeration. +const ( + AAudioInputPresetDefault AAudioInputPreset = iota + AAudioInputPresetGeneric + AAudioInputPresetCamcorder + AAudioInputPresetVoiceRecognition + AAudioInputPresetVoiceCommunication + AAudioInputPresetUnprocessed + AAudioInputPresetVoicePerformance +) + +// AAudioAllowedCapturePolicy type. +type AAudioAllowedCapturePolicy uint32 + +// AAudioAllowedCapturePolicies enumeration. +const ( + AAudioAllowCapturePolicyDefault AAudioAllowedCapturePolicy = iota + AAudioAllowCapturePolicyByAll + AAudioAllowCapturePolicyBySystem + AAudioAllowCapturePolicyByNone +)