// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build darwin || linux || windows
// +build darwin linux windows

package al

// Error returns one of these error codes.
const (
	InvalidName      = 0xA001
	InvalidEnum      = 0xA002
	InvalidValue     = 0xA003
	InvalidOperation = 0xA004
	OutOfMemory      = 0xA005
)

// Distance models.
const (
	InverseDistance         = 0xD001
	InverseDistanceClamped  = 0xD002
	LinearDistance          = 0xD003
	LinearDistanceClamped   = 0xD004
	ExponentDistance        = 0xD005
	ExponentDistanceClamped = 0xD006
)

// Global parameters.
const (
	paramDistanceModel   = 0xD000
	paramDopplerFactor   = 0xC000
	paramDopplerVelocity = 0xC001
	paramSpeedOfSound    = 0xC003
	paramVendor          = 0xB001
	paramVersion         = 0xB002
	paramRenderer        = 0xB003
	paramExtensions      = 0xB004
)

// Source and listener parameters.
const (
	paramGain             = 0x100A
	paramPosition         = 0x1004
	paramVelocity         = 0x1006
	paramOrientation      = 0x100F
	paramMinGain          = 0x100D
	paramMaxGain          = 0x100E
	paramSourceState      = 0x1010
	paramBuffersQueued    = 0x1015
	paramBuffersProcessed = 0x1016
	paramSecOffset        = 0x1024
	paramSampleOffset     = 0x1025
	paramByteOffset       = 0x1026
)

// A source could be in the state of initial, playing, paused or stopped.
const (
	Initial = 0x1011
	Playing = 0x1012
	Paused  = 0x1013
	Stopped = 0x1014
)

// Buffer parameters.
const (
	paramFreq     = 0x2001
	paramBits     = 0x2002
	paramChannels = 0x2003
	paramSize     = 0x2004
)

// Audio formats. Buffer.BufferData accepts one of these formats as the data format.
const (
	FormatMono8    = 0x1100
	FormatMono16   = 0x1101
	FormatStereo8  = 0x1102
	FormatStereo16 = 0x1103
)

// CapabilityDistanceModel represents the capability of specifying a different distance
// model for each source.
const CapabilityDistanceModel = Capability(0x200)
