diff --git a/common/JackAPIWrapper.cpp b/common/JackAPIWrapper.cpp index b267bf25..57f22132 100644 --- a/common/JackAPIWrapper.cpp +++ b/common/JackAPIWrapper.cpp @@ -20,6 +20,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "jack.h" #include "JackExports.h" #include +#include +#include #ifdef __cplusplus extern "C" diff --git a/linux/Makefile b/linux/Makefile index 1485de54..592da8cd 100644 --- a/linux/Makefile +++ b/linux/Makefile @@ -52,7 +52,7 @@ CXXFLAGS := -g -O3 -fPIC -DSOCKET_RPC_FIFO_SEMA -D__SMP__ -DADDON_DIR=\"$(prefix # Add the -D__CLIENTDEBUG__ flag to activate client validation -linux : $(TARGET_LINUX_SERVER_LIB) $(TARGET_LINUX_CLIENT_LIB) $(TARGET_LINUX_SERVER) $(TARGET_LINUX_ALSA) $(TARGET_LINUX_DUMMY) \ +linux : $(TARGET_LINUX_SERVER_LIB) $(TARGET_LINUX_CLIENT_LIB) $(TARGET_LINUX_WRAPPER_LIB) $(TARGET_LINUX_SERVER) $(TARGET_LINUX_ALSA) $(TARGET_LINUX_DUMMY) \ synchroClient synchroServer synchroServerClient testSem jack_test all : $(TARGET_LINUX_SERVER) $(TARGET_LINUX_SERVER_LIB) $(TARGET_LINUX_ALSA) $(TARGET_LINUX_DUMMY) diff --git a/linux/alsa/JackAlsaDriver.cpp b/linux/alsa/JackAlsaDriver.cpp index c0a1461a..0674c7b4 100644 --- a/linux/alsa/JackAlsaDriver.cpp +++ b/linux/alsa/JackAlsaDriver.cpp @@ -363,8 +363,7 @@ JackAlsaDriver::alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) driver->read_via_copy = driver->quirk_bswap? sample_move_dS_s32u24s : sample_move_dS_s32u24; break; - } - } + } } int @@ -454,9 +453,7 @@ JackAlsaDriver::alsa_driver_configure_stream (alsa_driver_t *driver, char *devic &frame_rate, NULL) ; driver->frame_rate = frame_rate ; if (err < 0) { - jack_error ("ALSA: cannot set sample/frame rate to %" - PRIu32 " for %s", driver->frame_rate, - stream_name); + jack_error ("ALSA: cannot set sample/frame rate to %ld for %s", driver->frame_rate, stream_name); return -1; } if (!*nchns) { @@ -499,9 +496,7 @@ JackAlsaDriver::alsa_driver_configure_stream (alsa_driver_t *driver, char *devic driver->frames_per_cycle, 0)) < 0) { - jack_error ("ALSA: cannot set period size to %" PRIu32 - " frames for %s", driver->frames_per_cycle, - stream_name); + jack_error ("ALSA: cannot set period size to %ld frames for %s", driver->frames_per_cycle, stream_name); return -1; } @@ -524,19 +519,18 @@ JackAlsaDriver::alsa_driver_configure_stream (alsa_driver_t *driver, char *devic } jack_error ("ALSA: use %d periods for %s", *nperiodsp, stream_name); +/* if (!jack_power_of_two(driver->frames_per_cycle)) { jack_error("JACK: frames must be a power of two " "(64, 512, 1024, ...)\n"); return -1; } - +*/ if ((err = snd_pcm_hw_params_set_buffer_size (handle, hw_params, *nperiodsp * driver->frames_per_cycle)) < 0) { - jack_error ("ALSA: cannot set buffer length to %" PRIu32 - " for %s", - *nperiodsp * driver->frames_per_cycle, + jack_error ("ALSA: cannot set buffer length to %ld for %s", *nperiodsp * driver->frames_per_cycle, stream_name); return -1; } diff --git a/linux/alsa/alsa_driver.h b/linux/alsa/alsa_driver.h index dec42479..12356e27 100644 --- a/linux/alsa/alsa_driver.h +++ b/linux/alsa/alsa_driver.h @@ -1,33 +1,35 @@ /* - 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 - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + $Id: alsa_driver.h 945 2006-05-04 15:14:45Z pbd $ */ #ifndef __jack_alsa_driver_h__ #define __jack_alsa_driver_h__ #include - #include "bitset.h" #if __BYTE_ORDER == __LITTLE_ENDIAN - #define SND_PCM_FORMAT_S24_3 SND_PCM_FORMAT_S24_3LE +#define IS_LE 0 +#define IS_BE 1 #elif __BYTE_ORDER == __BIG_ENDIAN - #define SND_PCM_FORMAT_S24_3 SND_PCM_FORMAT_S24_3BE +#define IS_LE 1 +#define IS_BE 0 #endif #include "types.h" @@ -35,112 +37,100 @@ #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 (*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 (*CopyCopyFunction) (char *dst, char *src, - unsigned long src_bytes, - unsigned long dst_skip_bytes, - unsigned long src_skip_byte); - -typedef struct _alsa_driver -{ + unsigned long src_bytes, + unsigned long dst_skip_bytes, + dither_state_t *state); +typedef void (*CopyCopyFunction) (char *dst, char *src, + unsigned long src_bytes, + unsigned long dst_skip_bytes, + unsigned long src_skip_byte); + +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; + 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; + 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 : - 1; -char hw_monitoring : - 1; -char hw_metering : - 1; -char all_monitor_in : - 1; -char capture_and_playback_not_synced : - 1; -char playback_interleaved : - 1; -char capture_interleaved : - 1; -char with_monitor_ports : - 1; + 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; CopyCopyFunction channel_copy; - int dither; + 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; -char has_clock_sync_reporting : - 1; -char has_hw_monitoring : - 1; -char has_hw_metering : - 1; int running; int run; @@ -149,100 +139,95 @@ char has_hw_metering : int xrun_count; int process_count; -} -alsa_driver_t; +} alsa_driver_t; -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 +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) -{ - if (driver->playback_interleaved) { - memset_interleave - (driver->playback_addr[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); + jack_nframes_t nframes) { + if (driver->playback_interleaved) { + memset_interleave + (driver->playback_addr[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); } -static inline void +static inline void alsa_driver_silence_on_channel_no_mark (alsa_driver_t *driver, channel_t chn, - jack_nframes_t nframes) -{ - if (driver->playback_interleaved) { - memset_interleave - (driver->playback_addr[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); - } + jack_nframes_t nframes) { + if (driver->playback_interleaved) { + memset_interleave + (driver->playback_addr[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) + channel_t channel, + jack_default_audio_sample_t *buf, + jack_nframes_t nsamples) { - driver->read_via_copy (buf, - driver->capture_addr[channel], - nsamples, - driver->capture_interleave_skip[channel]); + driver->read_via_copy (buf, + driver->capture_addr[channel], + 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, - jack_nframes_t nsamples) + channel_t channel, + jack_default_audio_sample_t *buf, + jack_nframes_t nsamples) { - driver->write_via_copy (driver->playback_addr[channel], - buf, - nsamples, - driver->playback_interleave_skip[channel], - driver->dither_state + channel); - alsa_driver_mark_channel_done (driver, channel); + driver->write_via_copy (driver->playback_addr[channel], + buf, + nsamples, + driver->playback_interleave_skip[channel], + driver->dither_state+channel); + alsa_driver_mark_channel_done (driver, channel); } -static inline void -alsa_driver_copy_channel (alsa_driver_t *driver, - channel_t input_channel, - channel_t output_channel, - jack_nframes_t nsamples) -{ - - driver->channel_copy (driver->playback_addr[output_channel], - driver->capture_addr[input_channel], - nsamples * driver->playback_sample_bytes, - driver->playback_interleave_skip[output_channel], - driver->capture_interleave_skip[input_channel]); - alsa_driver_mark_channel_done (driver, output_channel); +static inline void +alsa_driver_copy_channel (alsa_driver_t *driver, + channel_t input_channel, + channel_t output_channel, + jack_nframes_t nsamples) { + + driver->channel_copy (driver->playback_addr[output_channel], + driver->capture_addr[input_channel], + nsamples * driver->playback_sample_bytes, + driver->playback_interleave_skip[output_channel], + driver->capture_interleave_skip[input_channel]); + alsa_driver_mark_channel_done (driver, output_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__ */ diff --git a/linux/alsa/hammerfall.c b/linux/alsa/hammerfall.c index 3adeb74c..f1cae9fc 100644 --- a/linux/alsa/hammerfall.c +++ b/linux/alsa/hammerfall.c @@ -142,7 +142,7 @@ hammerfall_check_sync (hammerfall_t *h, snd_ctl_elem_value_t *ctl) static int hammerfall_set_input_monitor_mask (jack_hardware_t *hw, unsigned long mask) { - hammerfall_t *h = (hammerfall_t *) hw->private; + hammerfall_t *h = (hammerfall_t *) hw->private_hw; snd_ctl_elem_value_t *ctl; snd_ctl_elem_id_t *ctl_id; int err; @@ -170,7 +170,7 @@ hammerfall_set_input_monitor_mask (jack_hardware_t *hw, unsigned long mask) static int hammerfall_change_sample_clock (jack_hardware_t *hw, SampleClockMode mode) { - hammerfall_t *h = (hammerfall_t *) hw->private; + hammerfall_t *h = (hammerfall_t *) hw->private_hw; snd_ctl_elem_value_t *ctl; snd_ctl_elem_id_t *ctl_id; int err; @@ -203,7 +203,7 @@ static void hammerfall_release (jack_hardware_t *hw) { - hammerfall_t *h = (hammerfall_t *) hw->private; + hammerfall_t *h = (hammerfall_t *) hw->private_hw; void *status; if (h == 0) { @@ -221,7 +221,7 @@ static void * hammerfall_monitor_controls (void *arg) { jack_hardware_t *hw = (jack_hardware_t *) arg; - hammerfall_t *h = (hammerfall_t *) hw->private; + hammerfall_t *h = (hammerfall_t *) hw->private_hw; snd_ctl_elem_id_t *switch_id[3]; snd_ctl_elem_value_t *sw[3]; @@ -270,7 +270,6 @@ hammerfall_monitor_controls (void *arg) jack_hardware_t * jack_alsa_hammerfall_hw_new (alsa_driver_t *driver) - { jack_hardware_t *hw; hammerfall_t *h; @@ -279,7 +278,7 @@ jack_alsa_hammerfall_hw_new (alsa_driver_t *driver) hw->capabilities = Cap_HardwareMonitoring|Cap_AutoSync|Cap_WordClock|Cap_ClockMaster|Cap_ClockLockReporting; hw->input_monitor_mask = 0; - hw->private = 0; + hw->private_hw = 0; hw->set_input_monitor_mask = hammerfall_set_input_monitor_mask; hw->change_sample_clock = hammerfall_change_sample_clock; @@ -299,7 +298,7 @@ jack_alsa_hammerfall_hw_new (alsa_driver_t *driver) h->monitor_interval.tv_sec = 1; h->monitor_interval.tv_nsec = 0; - hw->private = h; + hw->private_hw = h; #if 0 if (pthread_create (&h->monitor_thread, 0, hammerfall_monitor_controls, hw)) { diff --git a/linux/alsa/hardware.h b/linux/alsa/hardware.h index a941bdff..900d60a1 100644 --- a/linux/alsa/hardware.h +++ b/linux/alsa/hardware.h @@ -21,8 +21,6 @@ #ifndef __jack_hardware_h__ #define __jack_hardware_h__ -//#include - #include "types.h" typedef enum { @@ -48,10 +46,8 @@ typedef int (*JackHardwareChangeSampleClockFunction)(struct _jack_hardware *, Sa typedef double (*JackHardwareGetHardwarePeak)(jack_port_t *port, jack_nframes_t frames); typedef double (*JackHardwareGetHardwarePower)(jack_port_t *port, jack_nframes_t frames); - typedef struct _jack_hardware { - unsigned long capabilities; unsigned long input_monitor_mask; @@ -60,8 +56,7 @@ typedef struct _jack_hardware JackHardwareReleaseFunction release; JackHardwareGetHardwarePeak get_hardware_peak; JackHardwareGetHardwarePower get_hardware_power; - void *private_hw; - + void *private_hw; } jack_hardware_t; diff --git a/linux/alsa/hdsp.c b/linux/alsa/hdsp.c index 51c4b290..d405cea7 100644 --- a/linux/alsa/hdsp.c +++ b/linux/alsa/hdsp.c @@ -89,7 +89,7 @@ set_control_id (snd_ctl_elem_id_t *ctl, const char *name) static int hdsp_set_mixer_gain(jack_hardware_t *hw, int input_channel, int output_channel, int gain) { - hdsp_t *h = (hdsp_t *) hw->private; + hdsp_t *h = (hdsp_t *) hw->private_hw; snd_ctl_elem_value_t *ctl; snd_ctl_elem_id_t *ctl_id; int err; @@ -194,7 +194,7 @@ static double hdsp_get_hardware_power (jack_port_t *port, jack_nframes_t frame) static void hdsp_release (jack_hardware_t *hw) { - hdsp_t *h = (hdsp_t *) hw->private; + hdsp_t *h = (hdsp_t *) hw->private_hw; if (h != 0) { free (h); @@ -204,7 +204,6 @@ hdsp_release (jack_hardware_t *hw) /* Mostly copied directly from hammerfall.c */ jack_hardware_t * jack_alsa_hdsp_hw_new (alsa_driver_t *driver) - { jack_hardware_t *hw; hdsp_t *h; @@ -216,7 +215,7 @@ jack_alsa_hdsp_hw_new (alsa_driver_t *driver) /* hw->capabilities = Cap_HardwareMonitoring|Cap_AutoSync|Cap_WordClock|Cap_ClockMaster|Cap_ClockLockReporting; */ hw->capabilities = Cap_HardwareMonitoring | Cap_HardwareMetering; hw->input_monitor_mask = 0; - hw->private = 0; + hw->private_hw = 0; hw->set_input_monitor_mask = hdsp_set_input_monitor_mask; hw->change_sample_clock = hdsp_change_sample_clock; @@ -226,7 +225,7 @@ jack_alsa_hdsp_hw_new (alsa_driver_t *driver) h = (hdsp_t *) malloc (sizeof (hdsp_t)); h->driver = driver; - hw->private = h; + hw->private_hw = h; return hw; } diff --git a/linux/alsa/ice1712.c b/linux/alsa/ice1712.c index ffa3ee71..ad350349 100644 --- a/linux/alsa/ice1712.c +++ b/linux/alsa/ice1712.c @@ -32,9 +32,8 @@ static int ice1712_hw_monitor_toggle(jack_hardware_t *hw, int idx, int onoff) - { - ice1712_t *h = (ice1712_t *) hw->private; + ice1712_t *h = (ice1712_t *) hw->private_hw; snd_ctl_elem_value_t *val; int err; @@ -62,11 +61,10 @@ ice1712_hw_monitor_toggle(jack_hardware_t *hw, int idx, int onoff) } static int -ice1712_set_input_monitor_mask (jack_hardware_t *hw, unsigned long mask) - +ice1712_set_input_monitor_mask (jack_hardware_t *hw, unsigned long mask) { int idx; - ice1712_t *h = (ice1712_t *) hw->private; + ice1712_t *h = (ice1712_t *) hw->private_hw; for (idx = 0; idx < 10; idx++) { if (h->active_channels & (1<private; + ice1712_t *h = (ice1712_t *) hw->private_hw; if (h == 0) return; @@ -102,7 +99,6 @@ ice1712_release (jack_hardware_t *hw) jack_hardware_t * jack_alsa_ice1712_hw_new (alsa_driver_t *driver) - { jack_hardware_t *hw; ice1712_t *h; @@ -113,7 +109,7 @@ jack_alsa_ice1712_hw_new (alsa_driver_t *driver) hw->capabilities = Cap_HardwareMonitoring; hw->input_monitor_mask = 0; - hw->private = 0; + hw->private_hw = 0; hw->set_input_monitor_mask = ice1712_set_input_monitor_mask; hw->change_sample_clock = ice1712_change_sample_clock; @@ -155,7 +151,7 @@ jack_alsa_ice1712_hw_new (alsa_driver_t *driver) h->active_channels |= 0x300U; } - hw->private = h; + hw->private_hw = h; return hw; } diff --git a/linux/alsa/memops.h b/linux/alsa/memops.h index b8cdb0dd..25b09e2f 100644 --- a/linux/alsa/memops.h +++ b/linux/alsa/memops.h @@ -38,7 +38,6 @@ typedef struct { float rm1; unsigned int idx; float e[DITHER_BUF_SIZE]; -} } dither_state_t; #ifdef __cplusplus