Get default format

live
noah metz 2024-04-08 11:56:34 -06:00
parent 9fcdaf500b
commit 7e5aeb7789
1 changed files with 26 additions and 11 deletions

@ -23,12 +23,19 @@ func main() {
panic(err) panic(err)
} }
playback_device := infos[0] var playback_device *malgo.DeviceInfo = nil
for _, info := range infos { for _, info := range infos {
if info.IsDefault != 0 { if info.IsDefault != 0 {
playback_device = info full, err := ctx.DeviceInfo(malgo.Playback, info.ID, malgo.Shared)
break if err != nil {
panic(err)
} }
playback_device = &full
}
}
if playback_device == nil {
panic("No default playback device")
} }
infos, err = ctx.Devices(malgo.Capture) infos, err = ctx.Devices(malgo.Capture)
@ -36,27 +43,35 @@ func main() {
panic(err) panic(err)
} }
capture_device := infos[0] var capture_device *malgo.DeviceInfo = nil
for _, info := range infos { for _, info := range infos {
if info.IsDefault != 0 { if info.IsDefault != 0 {
capture_device = info full, err := ctx.DeviceInfo(malgo.Capture, info.ID, malgo.Shared)
if err != nil {
panic(err)
}
capture_device = &full
} }
} }
if capture_device == nil {
panic("No default capture device")
}
inDeviceConfig := malgo.DefaultDeviceConfig(malgo.Capture) inDeviceConfig := malgo.DefaultDeviceConfig(malgo.Capture)
inDeviceConfig.Capture.Format = malgo.FormatF32 inDeviceConfig.Capture.Format = capture_device.Formats[0].Format
inDeviceConfig.Capture.Channels = 1 inDeviceConfig.Capture.Channels = 1
inDeviceConfig.Capture.DeviceID = capture_device.ID.Pointer() inDeviceConfig.Capture.DeviceID = capture_device.ID.Pointer()
inDeviceConfig.SampleRate = 44100 inDeviceConfig.SampleRate = capture_device.Formats[0].SampleRate
inDeviceConfig.PeriodSizeInFrames = 100 inDeviceConfig.PeriodSizeInFrames = 100
inDeviceConfig.Alsa.NoMMap = 1 inDeviceConfig.Alsa.NoMMap = 1
inDeviceConfig.Capture.ShareMode = malgo.Shared inDeviceConfig.Capture.ShareMode = malgo.Shared
outDeviceConfig := malgo.DefaultDeviceConfig(malgo.Playback) outDeviceConfig := malgo.DefaultDeviceConfig(malgo.Playback)
outDeviceConfig.Playback.Format = malgo.FormatF32 outDeviceConfig.Playback.Format = playback_device.Formats[0].Format
outDeviceConfig.Playback.Channels = 1 outDeviceConfig.Playback.Channels = 1
outDeviceConfig.Playback.DeviceID = playback_device.ID.Pointer() outDeviceConfig.Playback.DeviceID = playback_device.ID.Pointer()
outDeviceConfig.SampleRate = 44100 outDeviceConfig.SampleRate = playback_device.Formats[0].SampleRate
outDeviceConfig.PeriodSizeInFrames = 100 outDeviceConfig.PeriodSizeInFrames = 100
outDeviceConfig.Alsa.NoMMap = 1 outDeviceConfig.Alsa.NoMMap = 1
outDeviceConfig.Playback.ShareMode = malgo.Shared outDeviceConfig.Playback.ShareMode = malgo.Shared
@ -75,7 +90,7 @@ func main() {
Data: onSendFrames, Data: onSendFrames,
} }
fmt.Printf("Creating playback device %s\n", playback_device) fmt.Printf("Creating playback device %+v\n", playback_device)
outDevice, err := malgo.InitDevice(ctx.Context, outDeviceConfig, playbackCallbacks) outDevice, err := malgo.InitDevice(ctx.Context, outDeviceConfig, playbackCallbacks)
if err != nil { if err != nil {
panic(err) panic(err)
@ -104,7 +119,7 @@ func main() {
Data: onRecvFrames, Data: onRecvFrames,
} }
fmt.Printf("Creating capture device %s\n", capture_device) fmt.Printf("Creating capture device %+v\n", capture_device)
inDevice, err := malgo.InitDevice(ctx.Context, inDeviceConfig, captureCallbacks) inDevice, err := malgo.InitDevice(ctx.Context, inDeviceConfig, captureCallbacks)
if err != nil { if err != nil {
panic(err) panic(err)