#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

config AUDIO
	bool "Audio Support"
	default n
	---help---
		Enables overall support for Audio library.

if AUDIO

config AUDIO_MULTI_SESSION
	bool "Support multiple sessions"
	default n
	---help---
		Some audio devices, such as USB attached sound cards, may support more
		than one streaming session at a time (each with one or more audio channels).
		Selecting this feature adds support for tracking multiple concurrent
		sessions with the lower-level audio devices.

menu "Audio Buffer Configuration"

config AUDIO_LARGE_BUFFERS
	bool "Support Audio Buffers with greater than 65K samples"
	default n
	---help---
		By default, the Audio Pipeline Buffers use a 16-bit max sample count, limiting
		the number of samples per buffer to 65K.  Enable this option to specify a
		32-bit max sample count for increased samples / buffer capability.
		channel capability.

config AUDIO_NUM_BUFFERS
	int "Number of buffers for audio processing"
	default 2
	---help---
		Specifies the number of buffers to allocate for audio processing.
		If Driver Specified buffer sizes is enabled (below), then the
		low-level drivers will have the opportunity to override this
		value.

config AUDIO_BUFFER_NUMBYTES
	int "Size of each audio buffer for audio processing"
	default 8192
	---help---
		Specifies the allocation size for each audio buffer
		If Driver Specified buffer sizes is enabled (below), then the
		low-level drivers will have the opportunity to override this
		value.

config AUDIO_DRIVER_SPECIFIC_BUFFERS
	bool "Support for Driver specified buffer sizes"
	default n
	---help---
		By default, the Audio system uses the same size and number of buffers
		regardless of the specific audio device in use.  Specifying 'y' here
		adds extra code which allows the lower-level audio device to specify
		a partucular size and number of buffers.

endmenu # Audio Buffer Configuration

menu "Supported Audio Formats"

config AUDIO_FORMAT_AC3
	bool "AC3 Format"
	default n
	---help---
		Build in support for AC3 (Dolby Digital) Audio format.

config AUDIO_FORMAT_DTS
	bool "DTS Format"
	default n
	---help---
		Add in support for DTS format.

config AUDIO_FORMAT_PCM
	bool "PCM Audio"
	default y
	---help---
		Build in support for PCM Audio format.

config AUDIO_FORMAT_MP3
	bool "MPEG 3 Layer 1"
	default y
	---help---
		Build in support for MP3 Audio format.

config AUDIO_FORMAT_MIDI
	bool "Midi Format"
	default n
	---help---
		Add in support for MIDI format.

config AUDIO_FORMAT_WMA
	bool "WMA Format (see copyright notice)"
	default n
	---help---
		Add in support for Microsoft Windows Media format.

config AUDIO_FORMAT_OGG_VORBIS
	bool "Ogg Vorbis format"
	default n
	---help---
		Build in support for the Open Source Ogg Vorbis format.

endmenu

menu "Exclude Specific Audio Features"

config AUDIO_EXCLUDE_VOLUME
	bool "Exclude volume controls"
	default n
	---help---
		Exclude building support for changing the playback volume.

config AUDIO_EXCLUDE_BALANCE
	bool "Exclude balance controls"
	default n
	---help---
		Exclude building support for changing the balance.

config AUDIO_EXCLUDE_EQUALIZER
	bool "Exclude equalizer controls"
	default y
	---help---
		Exclude building support for setting equalization.

config AUDIO_EQUALIZER_NBANDS
	int "Number of equalizer bands"
	default 8
	depends on !AUDIO_EXCLUDE_EQUALIZER
	---help---
		If equalizer support is not excluded, then it will be necessary to
		provide the (maximum) number of equalization bands to be supported.

config AUDIO_EXCLUDE_TONE
	bool "Exclude tone (bass and treble) controls"
	default y if !AUDIO_EXCLUDE_EQUALIZER
	default n if AUDIO_EXCLUDE_EQUALIZER
	---help---
		Exclude building support for changing the bass and treble.  Normally
		you would not select both tone controls and equalizer support unless
		your underlying hardware supports both options.

config AUDIO_EXCLUDE_PAUSE_RESUME
	bool "Exclude pause and resume controls"
	default n
	---help---
		Exclude building support for pausing and resuming audio files
		once they are submitted.  If the sound system is being used to play
		short system notification or error type sounds that typicaly only
		last a second or two, then there is no need (or chance) to pause or
		resume sound playback once it has started.

config AUDIO_EXCLUDE_STOP
	bool "Exclude stop playback controls"
	default n
	---help---
		Exclude building support for stopping audio files once they are
		submitted.  If the sound system is being used to play short sytem
		notification or error type sounds that typically only last a second
		or two, then there is no need (or chance) to stop the sound
		playback once it has started.

config AUDIO_EXCLUDE_FFORWARD
	bool "Exclude fast forward controls"
	default n if !AUDIO_EXCLUDE_STOP
	default y if AUDIO_EXCLUDE_STOP
	---help---
		Exclude building support for fast forwarding through audio files
		once they are submitted.  Selecting this option would only make
		if the underlying audio decoding logic is capable of sub-sampling
		in the stream of audio data.

config AUDIO_EXCLUDE_REWIND
	bool "Exclude rewind controls"
	default y
	---help---
		Rewind may be supported by some audio devices, but not the typical
		device that receives a non-seekable, stream of audio buffers.

endmenu

config AUDIO_CUSTOM_DEV_PATH
	bool "Use custom device path"
	default n
	---help---
		By default, all audio devices on the target are are registered in the
		/dev/audio directory.  Select this option to change the default location
		for the device registration.

if AUDIO_CUSTOM_DEV_PATH

config AUDIO_DEV_ROOT
	bool "Place audio devices in /dev"
	default n
	---help---
		This option causes all device entries to appear in /dev with all the
		other device entries.  This option generates the smallest code and
		RAM footprint.

if !AUDIO_DEV_ROOT

config AUDIO_DEV_PATH
	string "Base path for Audio devices"
	default "/dev/audio"
	---help---
		The path on the target where audio devices are registered.  The default
		is to place all audio devices in the /dev/audio/ directory.

endif
endif


# These are here as placeholders of what could be added

if AUDIO_PLANNED

config AUDIO_MIXER
	bool "Planned - Enable support for the software based Audio Mixer"
	default n
	---help---
		The Audio mixer is a software-only based component that can be used
		to perform audio channel or device mixing.

config AUDIO_MIDI_SYNTH
	bool "Planned - Enable support for the software-based MIDI synthisizer"
	default n
	---help---
		Builds a simple MIDI synthisizer.

config AUDIO_OUTPUT_JACK_CONTROL
	bool "Planned - Enable support for output jack control"
	default n
	---help---
		Builds a simple MIDI synthisizer.

config AUDIO_FONT
	bool "Planned - Enable support for the Audio Font"
	default n
	---help---
		The Audio font provides common audio symbols.

endif

endif
