5.1. Audio Data Types

This section describes the structures, data types and defines used when talking to the audio device.

5.1.1. audio_stream_source_t

The audio stream source is set through the AUDIO_SELECT_SOURCE call and can take the following values, depending on whether we are replaying from an internal (demux) or external (user write) source.

 typedef enum {
 } audio_stream_source_t;

AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY is selected the stream comes from the application through the write() system call.

5.1.2. audio_play_state_t

The following values can be returned by the AUDIO_GET_STATUS call representing the state of audio playback.

 typedef enum {
 } audio_play_state_t;

5.1.3. audio_channel_select_t

The audio channel selected via AUDIO_CHANNEL_SELECT is determined by the following values.

 typedef enum {
 } audio_channel_select_t;

5.1.4. struct audio_status

The AUDIO_GET_STATUS call returns the following structure informing about various states of the playback operation.

 typedef struct audio_status {
	 boolean AV_sync_state;
	 boolean mute_state;
	 audio_play_state_t play_state;
	 audio_stream_source_t stream_source;
	 audio_channel_select_t channel_select;
	 boolean bypass_mode;
 } audio_status_t;

5.1.5. struct audio_mixer

The following structure is used by the AUDIO_SET_MIXER call to set the audio volume.

 typedef struct audio_mixer {
	 unsigned int volume_left;
	 unsigned int volume_right;
 } audio_mixer_t;

5.1.6. audio encodings

A call to AUDIO_GET_CAPABILITIES returns an unsigned integer with the following bits set according to the hardwares capabilities.

 #define AUDIO_CAP_DTS    1
 #define AUDIO_CAP_LPCM   2
 #define AUDIO_CAP_MP1    4
 #define AUDIO_CAP_MP2    8
 #define AUDIO_CAP_MP3   16
 #define AUDIO_CAP_AAC   32
 #define AUDIO_CAP_OGG   64
 #define AUDIO_CAP_SDDS 128
 #define AUDIO_CAP_AC3  256

5.1.7. struct audio_karaoke

The ioctl AUDIO_SET_KARAOKE uses the following format:

 struct audio_karaoke{
	 int vocal1;
	 int vocal2;
	 int melody;
 } audio_karaoke_t;

If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t at 70% each. If both, Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the right channel at 100% each. Ff Melody is non-zero, the melody channel gets mixed into left and right.

5.1.8. audio attributes

The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES:

 typedef uint16_t audio_attributes_t;
 /⋆   bits: descr. ⋆/
 /⋆   15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, ⋆/
 /⋆   12    multichannel extension ⋆/
 /⋆   11-10 audio type (0=not spec, 1=language included) ⋆/
 /⋆    9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) ⋆/
 /⋆    7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit,  ⋆/
 /⋆    5- 4 Sample frequency fs (0=48kHz, 1=96kHz) ⋆/
 /⋆    2- 0 number of audio channels (n+1 channels) ⋆/