|
|
@ -2,8 +2,9 @@ package volume
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
#cgo CFLAGS: -x objective-c
|
|
|
|
#cgo CFLAGS: -x objective-c
|
|
|
|
#cgo LDFLAGS: -framework CoreAudio
|
|
|
|
#cgo LDFLAGS: -framework CoreAudio -framework AudioToolbox
|
|
|
|
#include <CoreAudio/CoreAudio.h>
|
|
|
|
#include <CoreAudio/CoreAudio.h>
|
|
|
|
|
|
|
|
#include <AudioToolbox/AudioToolbox.h>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
import "C"
|
|
|
|
import "C"
|
|
|
|
import (
|
|
|
|
import (
|
|
|
@ -43,10 +44,17 @@ func GetDefaultOutputDevice() (AudioObjectID, OSStatus) {
|
|
|
|
func GetVolume(objectID AudioObjectID) (float32, OSStatus) {
|
|
|
|
func GetVolume(objectID AudioObjectID) (float32, OSStatus) {
|
|
|
|
|
|
|
|
|
|
|
|
properties := C.AudioObjectPropertyAddress{
|
|
|
|
properties := C.AudioObjectPropertyAddress{
|
|
|
|
C.kAudioDevicePropertyVolumeScalar,
|
|
|
|
C.kAudioHardwareServiceDeviceProperty_VirtualMainVolume,
|
|
|
|
C.kAudioDevicePropertyScopeOutput,
|
|
|
|
C.kAudioDevicePropertyScopeOutput,
|
|
|
|
0, //main channel
|
|
|
|
C.kAudioObjectPropertyElementMain,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
properties := C.AudioObjectPropertyAddress{
|
|
|
|
|
|
|
|
C.kAudioDevicePropertyVolumeScalar,
|
|
|
|
|
|
|
|
C.kAudioDevicePropertyScopeOutput,
|
|
|
|
|
|
|
|
0, //main channel
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
var data C.Float32
|
|
|
|
var data C.Float32
|
|
|
|
dataSize := C.UInt32(unsafe.Sizeof(data))
|
|
|
|
dataSize := C.UInt32(unsafe.Sizeof(data))
|
|
|
@ -66,10 +74,17 @@ func GetVolume(objectID AudioObjectID) (float32, OSStatus) {
|
|
|
|
func SetVolume(objectID AudioObjectID, volume float32) OSStatus {
|
|
|
|
func SetVolume(objectID AudioObjectID, volume float32) OSStatus {
|
|
|
|
|
|
|
|
|
|
|
|
properties := C.AudioObjectPropertyAddress{
|
|
|
|
properties := C.AudioObjectPropertyAddress{
|
|
|
|
C.kAudioDevicePropertyVolumeScalar,
|
|
|
|
C.kAudioHardwareServiceDeviceProperty_VirtualMainVolume,
|
|
|
|
C.kAudioDevicePropertyScopeOutput,
|
|
|
|
C.kAudioDevicePropertyScopeOutput,
|
|
|
|
0, //main channel
|
|
|
|
C.kAudioObjectPropertyElementMain,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
properties := C.AudioObjectPropertyAddress{
|
|
|
|
|
|
|
|
C.kAudioDevicePropertyVolumeScalar,
|
|
|
|
|
|
|
|
C.kAudioDevicePropertyScopeOutput,
|
|
|
|
|
|
|
|
0, //main channel
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
data := C.Float32(volume)
|
|
|
|
data := C.Float32(volume)
|
|
|
|
|
|
|
|
|
|
|
|