summaryrefslogtreecommitdiff
path: root/drivers/alsa/alsa_driver.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/alsa/alsa_driver.h')
-rw-r--r--drivers/alsa/alsa_driver.h269
1 files changed, 136 insertions, 133 deletions
diff --git a/drivers/alsa/alsa_driver.h b/drivers/alsa/alsa_driver.h
index 074ac69..5066bcc 100644
--- a/drivers/alsa/alsa_driver.h
+++ b/drivers/alsa/alsa_driver.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2001 Paul Davis
+ Copyright (C) 2001 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
+ */
#ifndef __jack_alsa_driver_h__
#define __jack_alsa_driver_h__
@@ -38,180 +38,183 @@
#include "driver.h"
#include "memops.h"
-typedef void (*ReadCopyFunction) (jack_default_audio_sample_t *dst, char *src,
- unsigned long src_bytes,
- unsigned long src_skip_bytes);
-typedef void (*WriteCopyFunction) (char *dst, jack_default_audio_sample_t *src,
- unsigned long src_bytes,
- unsigned long dst_skip_bytes,
- dither_state_t *state);
+typedef void (*ReadCopyFunction)(jack_default_audio_sample_t *dst, char *src,
+ unsigned long src_bytes,
+ unsigned long src_skip_bytes);
+typedef void (*WriteCopyFunction)(char *dst, jack_default_audio_sample_t *src,
+ unsigned long src_bytes,
+ unsigned long dst_skip_bytes,
+ dither_state_t *state);
typedef struct _alsa_driver {
- JACK_DRIVER_NT_DECL
-
- int poll_timeout;
- jack_time_t poll_last;
- jack_time_t poll_next;
- char **playback_addr;
- char **capture_addr;
- const snd_pcm_channel_area_t *capture_areas;
- const snd_pcm_channel_area_t *playback_areas;
- struct pollfd *pfd;
- unsigned int playback_nfds;
- unsigned int capture_nfds;
- unsigned long interleave_unit;
- unsigned long *capture_interleave_skip;
- unsigned long *playback_interleave_skip;
- channel_t max_nchannels;
- channel_t user_nchannels;
- channel_t playback_nchannels;
- channel_t capture_nchannels;
- unsigned long playback_sample_bytes;
- unsigned long capture_sample_bytes;
-
- jack_nframes_t frame_rate;
- jack_nframes_t frames_per_cycle;
- jack_nframes_t capture_frame_latency;
- jack_nframes_t playback_frame_latency;
-
- unsigned long *silent;
- char *alsa_name_playback;
- char *alsa_name_capture;
- char *alsa_driver;
- bitset_t channels_not_done;
- bitset_t channels_done;
- snd_pcm_format_t playback_sample_format;
- snd_pcm_format_t capture_sample_format;
- float max_sample_val;
- unsigned long user_nperiods;
- unsigned int playback_nperiods;
- unsigned int capture_nperiods;
- unsigned long last_mask;
- snd_ctl_t *ctl_handle;
- snd_pcm_t *playback_handle;
- snd_pcm_t *capture_handle;
- snd_pcm_hw_params_t *playback_hw_params;
- snd_pcm_sw_params_t *playback_sw_params;
- snd_pcm_hw_params_t *capture_hw_params;
- snd_pcm_sw_params_t *capture_sw_params;
- jack_hardware_t *hw;
- ClockSyncStatus *clock_sync_data;
- jack_client_t *client;
- JSList *capture_ports;
- JSList *playback_ports;
- JSList *monitor_ports;
-
- unsigned long input_monitor_mask;
-
- char soft_mode;
- char hw_monitoring;
- char hw_metering;
- char all_monitor_in;
- char capture_and_playback_not_synced;
- char playback_interleaved;
- char capture_interleaved;
- char with_monitor_ports;
- char has_clock_sync_reporting;
- char has_hw_monitoring;
- char has_hw_metering;
- char quirk_bswap;
-
- ReadCopyFunction read_via_copy;
- WriteCopyFunction write_via_copy;
-
- int dither;
- dither_state_t *dither_state;
-
- SampleClockMode clock_mode;
- JSList *clock_sync_listeners;
- pthread_mutex_t clock_sync_lock;
- unsigned long next_clock_sync_listener_id;
-
- int running;
- int run;
-
- int poll_late;
- int xrun_count;
- int process_count;
-
- int xrun_recovery;
- int previously_successfully_configured;
+ JACK_DRIVER_NT_DECL
+
+ int poll_timeout;
+ jack_time_t poll_last;
+ jack_time_t poll_next;
+ char **playback_addr;
+ char **capture_addr;
+ const snd_pcm_channel_area_t *capture_areas;
+ const snd_pcm_channel_area_t *playback_areas;
+ struct pollfd *pfd;
+ unsigned int playback_nfds;
+ unsigned int capture_nfds;
+ unsigned long interleave_unit;
+ unsigned long *capture_interleave_skip;
+ unsigned long *playback_interleave_skip;
+ channel_t max_nchannels;
+ channel_t user_nchannels;
+ channel_t playback_nchannels;
+ channel_t capture_nchannels;
+ unsigned long playback_sample_bytes;
+ unsigned long capture_sample_bytes;
+
+ jack_nframes_t frame_rate;
+ jack_nframes_t frames_per_cycle;
+ jack_nframes_t capture_frame_latency;
+ jack_nframes_t playback_frame_latency;
+
+ unsigned long *silent;
+ char *alsa_name_playback;
+ char *alsa_name_capture;
+ char *alsa_driver;
+ bitset_t channels_not_done;
+ bitset_t channels_done;
+ snd_pcm_format_t playback_sample_format;
+ snd_pcm_format_t capture_sample_format;
+ float max_sample_val;
+ unsigned long user_nperiods;
+ unsigned int playback_nperiods;
+ unsigned int capture_nperiods;
+ unsigned long last_mask;
+ snd_ctl_t *ctl_handle;
+ snd_pcm_t *playback_handle;
+ snd_pcm_t *capture_handle;
+ snd_pcm_hw_params_t *playback_hw_params;
+ snd_pcm_sw_params_t *playback_sw_params;
+ snd_pcm_hw_params_t *capture_hw_params;
+ snd_pcm_sw_params_t *capture_sw_params;
+ jack_hardware_t *hw;
+ ClockSyncStatus *clock_sync_data;
+ jack_client_t *client;
+ JSList *capture_ports;
+ JSList *playback_ports;
+ JSList *monitor_ports;
+
+ unsigned long input_monitor_mask;
+
+ char soft_mode;
+ char hw_monitoring;
+ char hw_metering;
+ char all_monitor_in;
+ char capture_and_playback_not_synced;
+ char playback_interleaved;
+ char capture_interleaved;
+ char with_monitor_ports;
+ char has_clock_sync_reporting;
+ char has_hw_monitoring;
+ char has_hw_metering;
+ char quirk_bswap;
+
+ ReadCopyFunction read_via_copy;
+ WriteCopyFunction write_via_copy;
+
+ int dither;
+ dither_state_t *dither_state;
+
+ SampleClockMode clock_mode;
+ JSList *clock_sync_listeners;
+ pthread_mutex_t clock_sync_lock;
+ unsigned long next_clock_sync_listener_id;
+
+ int running;
+ int run;
+
+ int poll_late;
+ int xrun_count;
+ int process_count;
+
+ int xrun_recovery;
+ int previously_successfully_configured;
} alsa_driver_t;
-static inline void
-alsa_driver_mark_channel_done (alsa_driver_t *driver, channel_t chn) {
+static inline void
+alsa_driver_mark_channel_done (alsa_driver_t *driver, channel_t chn)
+{
bitset_remove (driver->channels_not_done, chn);
driver->silent[chn] = 0;
}
-static inline void
+static inline void
alsa_driver_silence_on_channel (alsa_driver_t *driver, channel_t chn,
- jack_nframes_t nframes) {
+ jack_nframes_t nframes)
+{
if (driver->playback_interleaved) {
- memset_interleave
+ memset_interleave
(driver->playback_addr[chn],
- 0, nframes * driver->playback_sample_bytes,
- driver->interleave_unit,
- driver->playback_interleave_skip[chn]);
+ 0, nframes * driver->playback_sample_bytes,
+ driver->interleave_unit,
+ driver->playback_interleave_skip[chn]);
} else {
memset (driver->playback_addr[chn], 0,
nframes * driver->playback_sample_bytes);
}
- alsa_driver_mark_channel_done (driver,chn);
+ alsa_driver_mark_channel_done (driver, chn);
}
-static inline void
+static inline void
alsa_driver_silence_on_channel_no_mark (alsa_driver_t *driver, channel_t chn,
- jack_nframes_t nframes) {
+ jack_nframes_t nframes)
+{
if (driver->playback_interleaved) {
- memset_interleave
+ memset_interleave
(driver->playback_addr[chn],
- 0, nframes * driver->playback_sample_bytes,
- driver->interleave_unit,
- driver->playback_interleave_skip[chn]);
+ 0, nframes * driver->playback_sample_bytes,
+ driver->interleave_unit,
+ driver->playback_interleave_skip[chn]);
} else {
memset (driver->playback_addr[chn], 0,
nframes * driver->playback_sample_bytes);
}
}
-static inline void
+static inline void
alsa_driver_read_from_channel (alsa_driver_t *driver,
channel_t channel,
jack_default_audio_sample_t *buf,
jack_nframes_t nsamples)
{
- driver->read_via_copy (buf,
+ driver->read_via_copy (buf,
driver->capture_addr[channel],
- nsamples,
+ nsamples,
driver->capture_interleave_skip[channel]);
}
-static inline void
+static inline void
alsa_driver_write_to_channel (alsa_driver_t *driver,
- channel_t channel,
- jack_default_audio_sample_t *buf,
+ channel_t channel,
+ jack_default_audio_sample_t *buf,
jack_nframes_t nsamples)
{
driver->write_via_copy (driver->playback_addr[channel],
- buf,
- nsamples,
+ buf,
+ nsamples,
driver->playback_interleave_skip[channel],
- driver->dither_state+channel);
+ driver->dither_state + channel);
alsa_driver_mark_channel_done (driver, channel);
}
-void alsa_driver_silence_untouched_channels (alsa_driver_t *driver,
- jack_nframes_t nframes);
-void alsa_driver_set_clock_sync_status (alsa_driver_t *driver, channel_t chn,
- ClockSyncStatus status);
-int alsa_driver_listen_for_clock_sync_status (alsa_driver_t *,
- ClockSyncListenerFunction,
- void *arg);
-int alsa_driver_stop_listen_for_clock_sync_status (alsa_driver_t *,
- unsigned int);
-void alsa_driver_clock_sync_notify (alsa_driver_t *, channel_t chn,
- ClockSyncStatus);
+void alsa_driver_silence_untouched_channels(alsa_driver_t *driver,
+ jack_nframes_t nframes);
+void alsa_driver_set_clock_sync_status(alsa_driver_t *driver, channel_t chn,
+ ClockSyncStatus status);
+int alsa_driver_listen_for_clock_sync_status (alsa_driver_t *,
+ ClockSyncListenerFunction,
+ void *arg);
+int alsa_driver_stop_listen_for_clock_sync_status(alsa_driver_t *,
+ unsigned int);
+void alsa_driver_clock_sync_notify (alsa_driver_t *, channel_t chn,
+ ClockSyncStatus);
#endif /* __jack_alsa_driver_h__ */