All of lore.kernel.org
 help / color / mirror / Atom feed
* ALSA API as standards
@ 2007-11-21 16:31 Takashi Iwai
  2007-11-23 14:54 ` Takashi Iwai
  0 siblings, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2007-11-21 16:31 UTC (permalink / raw)
  To: alsa-devel

[-- Attachment #1: Type: text/plain, Size: 1689 bytes --]

Hi,

I've talked with some people workiong on LSB about the possibility to
put libasound as a part of the next LSB (surprisingly, they would like
it more than I).  I proposed that we should define the minimal set at
first as the standard instead of taking all existing API functions.

An interesting input was that they did some statistics and counted the
actual used functions/variables in ALSA API over distros.   The data
is attached below.  I just put the number of apps and functions there
to simplify.  (It includes __* functions that are actaully internal
ones, and I'm wondering why their numbers are so high.  Anyway, they
shouldn't be a part of standard.)

So, first, just take a look at it.  You'll see how many functions are
not actually used at all.

What I'd like to do now are:

- create a list of "standard" functions to be passed to LSB
- clean up and actually drop some non-used functions
- remove some functions from export list (in Versions file)

I'll try to create a list.  Basically it'll be almost as same as the
list of functions with count > 0, plus some related ones.
Then, let's discuss and clean up...


BTW, regarding Versions.  The versioned symbols for newly added
functions seem not set properly as expected.  We have entries

ALSA_0.9 {
  global:
    __snd_*;
    _snd_*;
    snd_*;
  local:
    *;
};

and thus the rest functions after this all belong to ALSA_0.9 in the
end (except for functions explicitly defined with obsolete macros in
pcm.c).  It means, we'll need to stick with ALSA_0.9 tag no matter
which version is added.  Only if the function API is changed and
double definitions are needed, we'll tag to another version...
Oh well.


Takashi

[-- Attachment #2: alsafunc2.txt --]
[-- Type: text/plain, Size: 49130 bytes --]

AppUsage Iname
36 snd_pcm_hw_params_set_format
36 snd_pcm_hw_params_set_access
36 snd_pcm_hw_params_any
36 snd_pcm_open
36 snd_pcm_hw_params
36 snd_pcm_prepare
35 snd_strerror
35 snd_pcm_close
35 snd_pcm_writei
34 snd_pcm_hw_params_set_channels
29 snd_pcm_sw_params_current
28 snd_pcm_sw_params
28 snd_pcm_sw_params_set_start_threshold
27 snd_pcm_readi
25 snd_pcm_drop
24 snd_pcm_avail_update
23 snd_pcm_state
23 snd_pcm_resume
22 snd_ctl_open
22 snd_ctl_close
22 snd_card_next
22 snd_pcm_sw_params_set_avail_min
22 snd_pcm_start
21 snd_ctl_pcm_next_device
21 snd_pcm_hw_params_malloc
20 snd_pcm_hw_params_free
20 snd_pcm_nonblock
19 snd_pcm_pause
19 snd_pcm_info_set_stream
19 snd_ctl_pcm_info
19 snd_pcm_info_get_name
19 snd_pcm_status
19 snd_pcm_info_set_device
18 snd_pcm_hw_params_set_rate_near
18 snd_pcm_sw_params_set_xfer_align
18 snd_pcm_info_set_subdevice
17 snd_ctl_card_info_get_name
17 snd_ctl_card_info
17 snd_pcm_hw_params_sizeof
16 snd_pcm_hw_params_get_format_mask
16 snd_pcm_status_get_avail
16 snd_pcm_hw_params_set_period_size_near
16 snd_pcm_format_physical_width
16 snd_lib_error_set_handler
16 snd_pcm_format_mask_test
15 snd_pcm_sw_params_free
15 snd_pcm_info_free
15 snd_ctl_card_info_get_id
15 snd_pcm_sw_params_malloc
15 snd_pcm_info_malloc
14 snd_pcm_format_mask_malloc
14 snd_pcm_sw_params_sizeof
14 snd_seq_set_client_name
14 snd_seq_open
14 snd_pcm_format_mask_free
13 snd_pcm_format_width
13 snd_pcm_format_big_endian
13 snd_pcm_format_linear
13 snd_pcm_build_linear_format
13 snd_ctl_card_info_free
13 snd_pcm_info_get_id
13 snd_seq_create_simple_port
13 snd_seq_close
13 snd_ctl_card_info_malloc
13 snd_pcm_status_free
13 snd_pcm_format_signed
13 snd_pcm_info_get_subdevices_count
13 snd_pcm_status_malloc
13 __snd_pcm_hw_params_set_tick_time_last
13 __snd_pcm_hw_params_get_period_time
13 __snd_pcm_hw_params_get_periods
13 __snd_pcm_hw_params_set_access_last
13 __snd_pcm_hw_params_set_buffer_size_near
13 __snd_pcm_hw_params_get_periods_max
13 __snd_pcm_hw_params_get_period_size_min
13 __snd_pcm_hw_params_set_format_last
13 __snd_pcm_hw_params_set_period_time_first
13 __snd_pcm_hw_params_set_period_time_last
13 __snd_pcm_hw_params_set_channels_last
13 __snd_pcm_hw_params_get_tick_time_min
13 __snd_pcm_hw_params_set_buffer_size_first
13 __snd_pcm_hw_params_get_period_time_max
13 __snd_pcm_hw_params_get_tick_time_max
13 __snd_pcm_hw_params_get_rate
13 __snd_pcm_hw_params_get_subformat
13 __snd_pcm_hw_params_get_tick_time
13 __snd_pcm_hw_params_get_rate_max
13 __snd_pcm_hw_params_get_period_size
13 __snd_pcm_hw_params_set_periods_first
13 __snd_pcm_hw_params_get_access
13 __snd_pcm_hw_params_set_rate_near
13 __snd_pcm_hw_params_set_buffer_size_last
13 __snd_pcm_hw_params_set_tick_time_first
13 __snd_pcm_hw_params_get_periods_min
13 __snd_pcm_hw_params_get_rate_min
13 __snd_pcm_hw_params_set_channels_first
13 __snd_pcm_hw_params_get_channels_max
13 __snd_pcm_hw_params_get_buffer_time_min
13 __snd_pcm_hw_params_get_period_size_max
13 __snd_pcm_hw_params_get_channels_min
13 __snd_pcm_hw_params_get_buffer_time_max
13 __snd_pcm_hw_params_get_buffer_size_max
13 __snd_pcm_hw_params_get_buffer_size
13 __snd_pcm_hw_params_get_buffer_time
13 __snd_pcm_hw_params_get_period_time_min
13 __snd_pcm_hw_params_set_format_first
13 __snd_pcm_hw_params_set_period_size_first
13 __snd_pcm_hw_params_get_channels
13 __snd_pcm_hw_params_set_rate_last
13 __snd_pcm_hw_params_get_format
13 __snd_pcm_hw_params_set_buffer_time_near
13 __snd_pcm_hw_params_get_buffer_size_min
13 __snd_pcm_hw_params_set_channels_near
13 __snd_pcm_hw_params_set_subformat_last
13 __snd_pcm_hw_params_set_subformat_first
13 __snd_pcm_hw_params_set_rate_first
13 __snd_pcm_hw_params_set_period_size_last
13 __snd_pcm_hw_params_set_period_size_near
13 __snd_pcm_hw_params_set_period_time_near
13 __snd_pcm_hw_params_set_tick_time_near
13 __snd_pcm_hw_params_set_periods_near
13 __snd_pcm_hw_params_set_buffer_time_last
13 __snd_pcm_hw_params_set_periods_last
13 __snd_pcm_hw_params_set_buffer_time_first
11 snd_seq_event_input
11 snd_pcm_drain
11 snd_pcm_hw_params_get_buffer_size
10 snd_mixer_selem_get_playback_volume
10 snd_mixer_selem_register
10 snd_mixer_attach
10 snd_mixer_selem_get_playback_volume_range
10 snd_pcm_hw_params_set_periods_near
10 snd_pcm_hw_params_get_period_size
10 snd_mixer_open
10 snd_mixer_load
10 snd_mixer_close
9 snd_mixer_elem_next
9 snd_mixer_selem_has_playback_volume
9 snd_pcm_delay
9 snd_rawmidi_read
9 snd_seq_client_id
9 snd_rawmidi_close
9 snd_mixer_selem_has_playback_switch
9 snd_midi_event_new
9 snd_mixer_first_elem
9 snd_rawmidi_open
8 snd_pcm_hw_params_get_rate
8 snd_seq_poll_descriptors
8 snd_mixer_selem_set_playback_switch_all
8 snd_mixer_selem_get_name
8 snd_mixer_selem_get_capture_volume
8 snd_rawmidi_write
8 snd_mixer_selem_set_playback_volume
8 snd_seq_port_info_sizeof
8 snd_mixer_selem_has_capture_volume
8 snd_mixer_selem_has_capture_switch
8 snd_midi_event_free
8 snd_mixer_selem_set_capture_switch_all
8 snd_rawmidi_nonblock
7 snd_rawmidi_info_free
7 snd_seq_client_info_sizeof
7 snd_pcm_sw_params_set_silence_size
7 snd_rawmidi_info_malloc
7 snd_ctl_rawmidi_info
7 snd_rawmidi_info_get_name
7 snd_midi_event_encode_byte
7 snd_ctl_rawmidi_next_device
7 snd_rawmidi_info_set_device
7 snd_seq_port_info_set_port
7 snd_rawmidi_info_set_stream
7 snd_pcm_hw_params_set_buffer_size_near
7 snd_rawmidi_info_set_subdevice
7 snd_rawmidi_info_get_id
7 snd_rawmidi_info_get_subdevices_count
7 snd_mixer_selem_get_capture_volume_range
7 snd_mixer_selem_is_playback_mono
7 snd_pcm_sw_params_set_stop_threshold
7 snd_pcm_hw_params_can_pause
6 snd_ctl_card_info_get_mixername
6 snd_seq_free_event
6 snd_pcm_hw_params_set_buffer_time_near
6 snd_pcm_hw_params_get_channels_max
6 snd_seq_poll_descriptors_count
6 snd_mixer_selem_get_capture_switch
6 snd_pcm_sw_params_set_silence_threshold
6 snd_mixer_selem_has_playback_channel
6 snd_pcm_status_sizeof
6 snd_pcm_hw_params_set_period_time_near
6 snd_mixer_selem_set_capture_volume
6 snd_config_search
6 snd_mixer_selem_channel_name
6 snd_seq_query_next_port
6 snd_pcm_info_sizeof
6 snd_pcm_hw_params_get_channels_min
6 snd_pcm_hw_params_set_rate
6 snd_mixer_selem_get_playback_switch
6 snd_mixer_selem_is_capture_mono
6 snd_seq_port_info_set_client
6 snd_mixer_selem_is_active
6 snd_mixer_selem_has_capture_channel
6 snd_pcm_hw_params_test_format
6 snd_config_update
5 snd_seq_port_subscribe_set_sender
5 snd_seq_port_subscribe_set_dest
5 snd_config_iterator_end
5 snd_config_iterator_next
5 snd_seq_port_info_get_name
5 snd_seq_port_info_get_capability
5 snd_config_iterator_first
5 snd_seq_connect_to
5 snd_pcm_hw_params_get_channels
5 snd_pcm_hw_params_get_buffer_size_min
5 snd_seq_subscribe_port
5 snd_pcm_hw_params_get_period_size_min
5 snd_seq_port_info_get_addr
5 snd_seq_event_input_pending
5 snd_seq_query_next_client
5 snd_seq_event_output
5 snd_config_iterator_entry
5 snd_seq_client_info_get_client
5 snd_seq_drain_output
5 snd_seq_client_info_set_client
5 snd_config_get_string
5 snd_seq_port_info_get_port
4 snd_pcm_hw_params_get_buffer_size_max
4 snd_pcm_hw_params_get_rate_min
4 snd_pcm_bytes_to_frames
4 snd_ctl_card_info_sizeof
4 snd_pcm_hw_params_get_rate_max
4 snd_pcm_hw_params_can_resume
4 snd_card_get_name
4 snd_pcm_hw_params_get_period_size_max
4 snd_pcm_frames_to_bytes
4 snd_pcm_status_get_trigger_tstamp
4 snd_pcm_wait
3 snd_pcm_poll_descriptors
3 snd_pcm_hw_params_is_double
3 snd_pcm_hw_params_is_batch
3 snd_pcm_hw_params_get_tick_time
3 snd_pcm_hw_params_can_sync_start
3 snd_pcm_status_get_state
3 snd_seq_port_info_set_name
3 snd_pcm_hw_params_get_periods_max
3 snd_pcm_hw_params_get_period_time
3 snd_async_add_pcm_handler
3 snd_seq_port_subscribe_sizeof
3 snd_pcm_mmap_commit
3 snd_pcm_hw_params_test_rate
3 snd_pcm_hw_params_get_access
3 snd_pcm_hw_params_can_overrange
3 snd_pcm_writen
3 snd_pcm_hw_params_get_format
3 snd_pcm_hw_params_is_half_duplex
3 snd_seq_event_output_direct
3 snd_pcm_hw_params_is_joint_duplex
3 snd_seq_connect_from
3 snd_pcm_hw_params_get_buffer_time
3 snd_config_get_id
3 snd_seq_client_info_get_name
3 snd_pcm_mmap_begin
3 snd_seq_port_info_set_capability
3 snd_pcm_hw_params_can_mmap_sample_resolution
3 snd_pcm_poll_descriptors_count
3 snd_pcm_link
3 snd_config
3 snd_pcm_hw_params_get_periods
3 snd_pcm_hw_params_set_channels_near
3 snd_pcm_hw_params_test_access
3 snd_pcm_hw_params_is_block_transfer
3 snd_pcm_hw_params_set_rate_resample
2 snd_seq_disconnect_from
2 snd_config_get_type
2 snd_mixer_selem_id_sizeof
2 snd_pcm_hw_params_get_period_time_max
2 snd_pcm_poll_descriptors_revents
2 snd_seq_delete_simple_port
2 snd_pcm_access_mask_test
2 snd_ctl_elem_value_clear
2 snd_config_get_integer
2 snd_pcm_access_name
2 snd_seq_port_info_get_client
2 snd_ctl_elem_value_set_integer
2 snd_mixer_selem_id_get_name
2 snd_pcm_mmap_readi
2 snd_ctl_elem_info_is_readable
2 snd_hctl_close
2 snd_ctl_elem_info_malloc
2 snd_pcm_mmap_writei
2 snd_ctl_name
2 snd_hwdep_close
2 snd_hwdep_open
2 snd_hwdep_info
2 snd_pcm_hw_params_get_access_mask
2 snd_pcm_format_set_silence
2 snd_hctl_load
2 snd_hctl_find_elem
2 snd_hctl_free
2 snd_pcm_sw_params_set_tstamp_mode
2 snd_pcm_hw_params_get_periods_min
2 snd_pcm_hw_params_test_channels
2 snd_pcm_sw_params_set_xrun_mode
2 snd_ctl_elem_value_get_integer
2 snd_pcm_hw_params_get_tick_time_max
2 snd_async_handler_get_callback_private
2 snd_hctl_open
2 snd_pcm_hw_params_get_tick_time_min
2 snd_pcm_readn
2 snd_seq_unsubscribe_port
2 snd_hctl_elem_info
2 snd_pcm_access_mask_sizeof
2 snd_seq_disconnect_to
2 snd_pcm_hw_params_dump
2 snd_pcm_hw_params_get_period_time_min
2 snd_pcm_rewind
2 snd_seq_client_info_get_type
2 snd_pcm_hw_params_copy
2 snd_seq_create_port
2 snd_pcm_type
2 snd_hwdep_info_sizeof
2 snd_hctl_elem_write
2 snd_ctl_elem_value_free
2 snd_ctl_elem_info_get_count
2 snd_pcm_hw_params_set_period_size
2 snd_seq_port_info_get_type
2 snd_ctl_elem_id_set_name
2 snd_ctl_elem_id_clear
2 snd_ctl_elem_info_free
2 snd_pcm_hwsync
2 snd_pcm_info
2 snd_seq_port_info_set_type
2 snd_mixer_selem_set_playback_volume_all
2 snd_ctl_elem_info_clear
2 snd_pcm_state_name
2 snd_pcm_sw_params_get_boundary
2 snd_hctl_elem_read
2 snd_ctl_elem_id_malloc
2 snd_ctl_elem_id_set_interface
2 snd_pcm_format_mask_sizeof
2 snd_ctl_elem_id_free
2 snd_rawmidi_poll_descriptors_count
2 snd_rawmidi_poll_descriptors
2 snd_pcm_hw_params_get_buffer_time_max
2 snd_midi_event_decode
2 snd_pcm_format_cpu_endian
2 snd_ctl_elem_value_malloc
2 snd_mixer_selem_set_capture_volume_all
2 snd_ctl_elem_info_get_step
2 snd_seq_port_subscribe_free
2 snd_output_stdio_attach
2 snd_ctl_elem_info_get_min
2 snd_seq_port_subscribe_malloc
2 snd_mixer_selem_id_get_index
2 snd_pcm_status_get_tstamp
2 snd_pcm_hw_params_get_buffer_time_min
2 snd_pcm_format_name
2 snd_ctl_elem_info_get_max
1 snd_seq_port_subscribe_copy
1 snd_pcm_sw_params_set_sleep_min
1 snd_timer_info_get_resolution
1 snd_ctl_hwdep_next_device
1 snd_midi_event_init
1 snd_mixer_selem_get_id
1 snd_pcm_forward
1 snd_pcm_hw_params_test_period_size
1 snd_mixer_find_selem
1 snd_config_add
1 snd_pcm_areas_silence
1 snd_timer_poll_descriptors_count
1 snd_pcm_hw_free
1 snd_timer_params_set_ticks
1 snd_seq_poll_descriptors_revents
1 snd_seq_port_info_free
1 snd_pcm_hw_params_get_sbits
1 snd_seq_query_subscribe_set_root
1 snd_pcm_format_description
1 snd_pcm_status_dump
1 snd_pcm_sw_params_dump
1 snd_seq_get_client_info
1 snd_seq_query_subscribe_get_root
1 snd_timer_params_set_auto_start
1 snd_timer_params
1 snd_timer_open
1 snd_mixer_selem_id_set_name
1 snd_pcm_area_copy
1 snd_rawmidi_poll_descriptors_revents
1 snd_timer_read
1 snd_timer_id_malloc
1 snd_seq_port_subscribe_get_exclusive
1 snd_mixer_selem_has_common_volume
1 snd_timer_params_get_ticks
1 snd_seq_alloc_queue
1 snd_asoundlib_version
1 snd_seq_port_info_set_port_specified
1 snd_timer_close
1 snd_mixer_detach
1 snd_timer_info_malloc
1 snd_seq_client_info_set_name
1 snd_seq_port_subscribe_get_sender
1 snd_seq_query_subscribe_get_addr
1 snd_seq_query_subscribe_get_queue
1 snd_seq_port_subscribe_get_time_real
1 snd_seq_port_subscribe_set_exclusive
1 snd_config_substitute
1 snd_seq_query_subscribe_get_time_real
1 snd_timer_stop
1 snd_timer_info
1 snd_seq_query_subscribe_get_exclusive
1 snd_output_close
1 snd_seq_port_subscribe_get_time_update
1 snd_seq_port_subscribe_set_time_update
1 snd_seq_port_subscribe_get_dest
1 snd_timer_params_malloc
1 snd_seq_port_subscribe_get_queue
1 snd_config_copy
1 snd_seq_query_subscribe_get_index
1 snd_seq_set_client_info
1 snd_seq_port_subscribe_set_queue
1 snd_seq_port_info_malloc
1 snd_config_get_ascii
1 snd_seq_queue_tempo_set_ppq
1 snd_seq_query_subscribe_set_type
1 snd_pcm_hw_params_get_rate_numden
1 snd_midi_event_reset_encode
1 snd_seq_queue_tempo_sizeof
1 snd_pcm_open_lconf
1 snd_ctl_hwdep_info
1 snd_pcm_hw_params_get_subformat
1 snd_pcm_hw_params_set_periods
1 snd_seq_query_subscribe_sizeof
1 snd_mixer_elem_get_type
1 snd_seq_query_subscribe_get_time_update
1 snd_seq_query_subscribe_set_index
1 snd_config_search_alias_hooks
1 snd_card_get_longname
1 snd_config_imake_integer
1 snd_seq_query_port_subscribers
1 snd_seq_queue_tempo_set_tempo
1 snd_config_update_free_global
1 snd_hwdep_info_set_device
1 snd_seq_get_any_client_info
1 snd_pcm_dump
1 snd_seq_set_port_info
1 snd_seq_get_port_info
1 snd_mixer_selem_has_playback_switch_joined
1 snd_hwdep_poll_descriptors
1 snd_pcm_format_size
1 snd_seq_delete_port
1 snd_seq_control_queue
1 snd_seq_event_length
1 snd_config_delete
1 snd_mixer_selem_id_set_index
1 snd_pcm_hw_params_set_periods_min
1 snd_seq_port_info_set_midi_channels
1 snd_mixer_selem_has_playback_volume_joined
1 snd_seq_free_queue
1 snd_hwdep_ioctl
1 snd_pcm_hw_params_set_periods_integer
1 snd_seq_parse_address
1 snd_timer_poll_descriptors
1 snd_async_del_handler
1 snd_pcm_status_get_avail_max
1 snd_seq_get_any_port_info
1 snd_hwdep_info_get_iface
1 snd_mixer_selem_set_playback_switch
1 snd_seq_port_subscribe_set_time_real
1 snd_timer_start
1 snd_hwdep_info_get_name
1 snd_midi_event_encode
1 snd_pcm_status_get_delay
1 snd_hwdep_read
1 snd_seq_set_queue_tempo
0 snd_instr_header_get_id
0 snd_pcm_unlink
0 snd_pcm_hw_params_set_access_first
0 snd_ctl_rawmidi_prefer_subdevice
0 snd_pcm_hw_params_test_buffer_size
0 snd_pcm_info_get_subdevices_avail
0 snd_pcm_sw_params_get_silence_size
0 snd_ctl_elem_list_malloc
0 snd_output_buffer_open
0 snd_pcm_samples_to_bytes
0 snd_pcm_null_open
0 snd_pcm_hook_get_private
0 snd_pcm_status_get_htstamp
0 snd_ctl_elem_value_get_bytes
0 snd_ctl_elem_list_set_offset
0 snd_ctl_elem_value_get_name
0 snd_timer_params_set_early_event
0 snd_pcm_meter_get_rate
0 snd_config_save
0 snd_pcm_meter_get_boundary
0 snd_pcm_meter_get_bufsize
0 snd_seq_remove_events_get_queue
0 snd_pcm_mulaw_open
0 snd_hwdep_info_get_id
0 snd_hctl_elem_prev
0 snd_pcm_info_get_sync
0 snd_config_search_definition
0 snd_pcm_multi_open
0 snd_pcm_meter_search_scope
0 snd_hwdep_dsp_status_get_dsp_loaded
0 snd_ctl_event_elem_get_numid
0 snd_hctl_poll_descriptors
0 snd_pcm_mmap_writen
0 snd_mixer_elem_empty
0 snd_pcm_info_get_device
0 snd_instr_header_get_alias
0 snd_pcm_hw_params_set_period_size_max
0 snd_pcm_hw_params_set_period_size_integer
0 snd_pcm_hw_params_set_period_size_first
0 snd_pcm_hw_params_set_buffer_time_min
0 snd_pcm_hw_params_get_fifo_size
0 snd_mixer_elem_get_callback_private
0 snd_ctl_elem_info_set_id
0 snd_pcm_hw_params_set_format_last
0 snd_seq_port_info_get_timestamp_real
0 snd_pcm_hw_params_set_period_time_min
0 snd_pcm_scope_set_name
0 snd_seq_set_client_pool
0 snd_pcm_hw_params_set_periods_last
0 snd_pcm_hw_params_set_periods_first
0 snd_pcm_hw_params_set_period_time_minmax
0 snd_pcm_hw_params_set_period_time_max
0 snd_pcm_hw_params_set_period_size_minmax
0 snd_pcm_hw_params_set_period_size_min
0 snd_pcm_hw_params_set_period_time_last
0 snd_pcm_hw_params_set_period_time_first
0 snd_pcm_hw_params_set_period_time
0 snd_config_get_integer64
0 snd_pcm_hw_params_set_access_last
0 snd_pcm_meter_get_now
0 snd_pcm_hw_params_set_buffer_size_last
0 snd_pcm_hw_open_fd
0 snd_pcm_hw_params_set_buffer_size
0 snd_seq_reset_pool_input
0 snd_ctl_card_info_get_card
0 snd_pcm_hw_params_get_subformat_mask
0 snd_ctl_elem_remove
0 snd_pcm_scope_s16_get_channel_buffer
0 snd_timer_query_next_device
0 snd_pcm_hw_params_set_channels_first
0 snd_pcm_hw_params_set_buffer_time_minmax
0 snd_pcm_hw_params_set_buffer_time_max
0 snd_pcm_scope_set_ops
0 snd_pcm_hw_params_set_channels_min
0 snd_pcm_hw_params_set_channels_last
0 snd_ctl_elem_info_set_interface
0 snd_pcm_hw_params_set_buffer_size_min
0 snd_pcm_hw_params_set_buffer_size_max
0 snd_hctl_elem_get_index
0 snd_pcm_hw_params_set_buffer_time_first
0 snd_pcm_hw_params_set_buffer_time
0 snd_pcm_hw_params_test_tick_time
0 snd_pcm_hw_params_test_subformat
0 snd_seq_get_input_buffer_size
0 snd_pcm_info_copy
0 snd_dlclose
0 snd_config_get_bool
0 snd_pcm_hw_params_set_buffer_size_first
0 snd_seq_queue_timer_get_type
0 snd_ctl_elem_info_get_device
0 snd_instr_fm_convert_from_stream
0 snd_pcm_hw_open
0 snd_pcm_hw_params_test_period_time
0 snd_ctl_poll_descriptors_revents
0 snd_pcm_hook_get_pcm
0 snd_pcm_info_get_stream
0 snd_pcm_info_get_subdevice
0 snd_ctl_elem_value_set_enumerated
0 snd_pcm_info_get_subclass
0 snd_pcm_info_get_class
0 snd_ctl_elem_value_set_name
0 snd_pcm_hw_params_set_period_size_last
0 snd_pcm_hook_set_private
0 snd_pcm_hooks_open
0 snd_pcm_hw_params_set_format_mask
0 snd_pcm_hw_params_set_subformat_first
0 snd_timer_query_open_lconf
0 snd_pcm_hw_params_set_rate_minmax
0 snd_hctl_elem_get_subdevice
0 snd_instr_header_set_name
0 snd_pcm_hw_params_set_subformat_mask
0 snd_ctl_elem_info_get_index
0 snd_pcm_hw_params_set_periods_minmax
0 snd_ctl_elem_list_get_numid
0 snd_pcm_hw_params_set_rate_max
0 snd_pcm_hw_params_set_rate_last
0 snd_pcm_hw_params_set_rate_first
0 snd_pcm_format_silence_64
0 snd_ctl_elem_info_is_locked
0 snd_input_gets
0 snd_pcm_iec958_open
0 snd_pcm_name
0 snd_pcm_hw_params_test_buffer_time
0 snd_pcm_hw_params_set_tick_time_max
0 snd_ctl_elem_info_is_volatile
0 snd_pcm_hw_params_set_tick_time_first
0 snd_pcm_hw_params_set_tick_time_near
0 snd_seq_client_info_get_event_lost
0 snd_pcm_hw_params_set_tick_time_minmax
0 snd_seq_queue_tempo_set_skew
0 snd_seq_queue_timer_free
0 snd_seq_queue_timer_get_queue
0 snd_ctl_event_clear
0 snd_seq_queue_timer_copy
0 snd_seq_queue_timer_set_id
0 snd_seq_queue_timer_set_resolution
0 snd_seq_queue_timer_get_resolution
0 snd_seq_port_info_copy
0 snd_seq_queue_status_get_status
0 snd_seq_queue_tempo_copy
0 snd_seq_queue_tempo_free
0 snd_seq_queue_status_get_tick_time
0 snd_seq_queue_status_malloc
0 snd_seq_queue_tempo_get_skew_base
0 snd_seq_queue_tempo_get_tempo
0 snd_seq_queue_tempo_get_ppq
0 snd_seq_queue_tempo_get_skew
0 snd_seq_remove_events_get_time
0 snd_seq_remove_events_set_condition
0 snd_seq_remove_events_set_dest
0 snd_seq_remove_events_malloc
0 snd_config_searchva
0 snd_seq_remove_events_set_tag
0 snd_timer_info_get_ticks
0 snd_seq_remove_events_set_event_type
0 snd_seq_type
0 snd_seq_queue_timer_set_type
0 snd_seq_remove_events_free
0 snd_seq_queue_timer_sizeof
0 snd_seq_remove_events
0 snd_hwdep_dsp_status_malloc
0 snd_seq_remove_events_get_event_type
0 snd_seq_remove_events_get_tag
0 snd_seq_remove_events_get_condition
0 snd_ctl_event_elem_get_index
0 snd_pcm_format_mask_copy
0 snd_instr_iwffff_open
0 snd_seq_query_named_queue
0 snd_config_set_string
0 snd_config_test_id
0 snd_seq_query_subscribe_get_port
0 snd_mixer_poll_descriptors_revents
0 snd_seq_query_subscribe_get_client
0 snd_seq_query_subscribe_get_num_subs
0 snd_seq_port_info_get_synth_voices
0 snd_seq_port_info_set_addr
0 snd_seq_port_info_set_midi_voices
0 snd_seq_port_info_get_timestamp_queue
0 snd_seq_port_info_get_timestamping
0 snd_seq_client_pool_get_output_room
0 snd_seq_port_info_set_timestamp_real
0 snd_timer_params_get_queue_size
0 snd_seq_port_info_set_synth_voices
0 snd_seq_queue_info_get_queue
0 snd_pcm_access_mask_empty
0 snd_seq_queue_info_set_owner
0 snd_seq_queue_info_malloc
0 snd_seq_queue_info_set_flags
0 snd_seq_queue_status_free
0 snd_seq_queue_status_get_events
0 snd_seq_queue_info_sizeof
0 snd_instr_fm_convert_to_stream
0 snd_seq_query_subscribe_get_type
0 snd_rawmidi_params_sizeof
0 snd_seq_queue_info_copy
0 snd_seq_extract_output
0 snd_seq_query_subscribe_set_client
0 snd_seq_queue_info_get_name
0 snd_pcm_dsnoop_open
0 snd_seq_queue_info_get_flags
0 snd_seq_queue_info_get_locked
0 snd_timer_open_lconf
0 snd_timer_params_free
0 snd_timer_info_sizeof
0 snd_timer_name
0 snd_timer_params_set_exclusive
0 snd_timer_params_set_queue_size
0 snd_timer_params_get_auto_start
0 snd_timer_params_get_early_event
0 snd_timer_id_set_card
0 snd_timer_id_set_subdevice
0 snd_timer_id_sizeof
0 snd_timer_id_set_class
0 snd_timer_id_set_sclass
0 snd_timer_info_get_card
0 snd_timer_info_get_name
0 snd_instr_simple_convert_to_stream
0 snd_rawmidi_status_get_avail
0 snd_instr_iwffff_load
0 snd_timer_status_get_resolution
0 snd_config_imake_string
0 snd_timer_status_get_overrun
0 snd_timer_status_get_queue
0 snd_timer_type
0 snd_user_file
0 snd_timer_status_malloc
0 snd_timer_status_sizeof
0 snd_timer_params_sizeof
0 snd_timer_query_params
0 snd_timer_query_status
0 snd_timer_poll_descriptors_revents
0 snd_timer_query_close
0 snd_rawmidi_open_lconf
0 snd_timer_status_free
0 snd_seq_port_info_set_timestamp_queue
0 snd_timer_status
0 snd_seq_set_input_buffer_size
0 snd_ctl_elem_value_get_interface
0 snd_seq_system_info
0 snd_seq_set_queue_info
0 snd_timer_id_set_device
0 snd_seq_system_info_get_clients
0 snd_ctl_elem_value_set_device
0 snd_seq_system_info_free
0 snd_seq_system_info_get_channels
0 snd_seq_remove_events_set_time
0 snd_seq_set_bit
0 snd_seq_set_client_event_filter
0 snd_seq_remove_events_sizeof
0 snd_seq_reset_pool_output
0 snd_ctl_elem_value_copy
0 snd_seq_set_client_pool_output_room
0 snd_pcm_hw_params_set_format_first
0 snd_hctl_poll_descriptors_count
0 snd_spcm_init_duplex
0 snd_seq_remove_events_copy
0 snd_pcm_sw_params_get_start_threshold
0 snd_spcm_init_get_params
0 snd_ctl_elem_info_get_step64
0 snd_timer_id_get_device
0 snd_timer_id_get_sclass
0 snd_timer_id_free
0 snd_timer_id_get_class
0 snd_seq_system_info_get_cur_queues
0 snd_pcm_dshare_open
0 snd_seq_system_info_sizeof
0 snd_seq_system_info_get_ports
0 snd_seq_system_info_get_queues
0 snd_seq_port_info_get_port_specified
0 snd_shm_area_share
0 snd_seq_remove_events_set_queue
0 snd_seq_client_pool_set_input_pool
0 snd_ctl_elem_info_set_name
0 snd_pcm_tstamp_mode_name
0 snd_pcm_type_name
0 snd_async_add_ctl_handler
0 snd_timer_query_info
0 snd_rawmidi_drain
0 snd_dlopen
0 snd_ctl_elem_value_set_byte
0 snd_ctl_elem_list_get_id
0 snd_pcm_sw_params_get_avail_min
0 snd_pcm_sw_params_get_sleep_min
0 snd_pcm_sw_params_get_stop_threshold
0 snd_timer_params_copy
0 snd_pcm_sw_params_get_silence_threshold
0 snd_ctl_elem_iface_name
0 snd_config_hook_load_for_all_cards
0 snd_pcm_sw_params_get_tstamp_mode
0 snd_pcm_sw_params_get_xfer_align
0 snd_mixer_get_count
0 snd_rawmidi_name
0 snd_timer_status_copy
0 snd_mixer_get_callback_private
0 _snd_pcm_file_open
0 snd_rawmidi_params_get_avail_min
0 snd_shm_area_create
0 snd_rawmidi_params_copy
0 snd_rawmidi_params_current
0 snd_input_ungetc
0 snd_rawmidi_info_get_card
0 snd_rawmidi_info_get_device
0 snd_rawmidi_info
0 snd_ctl_elem_value_set_numid
0 snd_rawmidi_info_get_subdevice_name
0 snd_rawmidi_info_get_subdevices_avail
0 snd_pcm_status_get_overrange
0 snd_rawmidi_info_get_stream
0 snd_pcm_scope_get_name
0 snd_pcm_scope_s16_open
0 snd_pcm_scope_set_callback_private
0 snd_pcm_scope_malloc
0 snd_seq_client_pool_get_input_free
0 snd_pcm_shm_open
0 snd_ctl_elem_value_get_index
0 snd_pcm_hw_params_set_channels_minmax
0 snd_seq_queue_status_sizeof
0 snd_rawmidi_info_sizeof
0 snd_seq_remove_events_get_channel
0 snd_pcm_reset
0 snd_hctl_set_compare
0 snd_seq_query_subscribe_malloc
0 snd_pcm_route_open
0 snd_pcm_scope_get_callback_private
0 snd_pcm_route_determine_ttable
0 snd_pcm_route_load_ttable
0 snd_pcm_subformat_description
0 snd_pcm_subformat_mask_free
0 snd_timer_status_get_timestamp
0 snd_pcm_subformat_mask_any
0 snd_pcm_subformat_mask_copy
0 snd_pcm_subformat_mask_test
0 snd_pcm_sw_params_copy
0 snd_pcm_subformat_mask_set
0 snd_pcm_area_silence
0 snd_pcm_start_mode_name
0 snd_timer_params_get_exclusive
0 snd_mixer_poll_descriptors_count
0 snd_pcm_status_copy
0 snd_sctl_free
0 snd_pcm_stream
0 snd_ctl_elem_info_get_name
0 snd_pcm_status_get_trigger_htstamp
0 _snd_pcm_hw_open
0 snd_pcm_subformat_mask_none
0 snd_seq_queue_timer_get_id
0 snd_seq_drop_output
0 snd_seq_drop_output_buffer
0 snd_seq_event_types
0 snd_hctl_elem_get_interface
0 snd_seq_event_output_pending
0 snd_seq_event_types
0 snd_seq_client_pool_get_output_pool
0 snd_seq_client_pool_set_output_pool
0 snd_ctl_elem_read
0 snd_hctl_async
0 snd_seq_drop_input_buffer
0 snd_ctl_elem_info_sizeof
0 snd_seq_drop_input
0 snd_seq_client_pool_sizeof
0 snd_instr_header_copy
0 snd_seq_name
0 snd_pcm_subformat_name
0 snd_seq_queue_timer_malloc
0 snd_instr_fm_free
0 snd_seq_query_subscribe_copy
0 snd_seq_port_info_get_midi_voices
0 snd_seq_port_info_get_read_use
0 snd_mixer_elem_detach
0 snd_output_buffer_string
0 snd_seq_set_output_buffer_size
0 snd_seq_get_output_buffer_size
0 snd_seq_get_port_subscription
0 snd_seq_get_bit
0 snd_func_private_card_driver
0 snd_seq_get_queue_timer
0 snd_mixer_elem_remove
0 snd_seq_get_queue_status
0 snd_hwdep_dsp_image_free
0 snd_rawmidi_status_free
0 snd_rawmidi_status_get_xruns
0 snd_rawmidi_status_malloc
0 snd_timer_info_free
0 snd_rawmidi_status_get_tstamp
0 snd_sctl_build
0 snd_sctl_install
0 snd_rawmidi_stream
0 snd_rawmidi_type
0 snd_rawmidi_params_get_buffer_size
0 snd_rawmidi_params_set_buffer_size
0 snd_rawmidi_params_set_no_active_sensing
0 snd_rawmidi_params_get_no_active_sensing
0 snd_rawmidi_params_set_avail_min
0 snd_rawmidi_status
0 snd_rawmidi_status_copy
0 snd_seq_query_subscribe_set_port
0 snd_timer_query_open
0 snd_seq_client_info_set_broadcast_filter
0 snd_timer_status_get_lost
0 snd_seq_client_pool_copy
0 snd_seq_client_info_set_error_bounce
0 snd_seq_client_info_set_event_filter
0 snd_seq_client_pool_get_input_pool
0 snd_seq_client_pool_get_output_free
0 snd_seq_client_pool_free
0 snd_seq_client_pool_get_client
0 snd_sctl_remove
0 snd_seq_queue_info_free
0 snd_seq_client_info_free
0 snd_ctl_elem_id_get_subdevice
0 snd_seq_change_bit
0 snd_rawmidi_info_get_flags
0 snd_ctl_elem_info_is_indirect
0 snd_timer_params_set_filter
0 snd_pcm_format_silence_16
0 snd_ctl_event_copy
0 snd_ctl_event_elem_get_device
0 snd_ctl_elem_value_sizeof
0 snd_ctl_elem_write
0 snd_seq_remove_events_get_dest
0 snd_ctl_event_elem_get_name
0 snd_ctl_event_elem_get_subdevice
0 snd_ctl_event_elem_get_interface
0 snd_ctl_event_elem_get_mask
0 snd_config_imake_real
0 snd_ctl_elem_value_set_iec958
0 snd_seq_system_info_get_cur_clients
0 snd_hctl_nonblock
0 snd_seq_queue_status_get_queue
0 snd_config_expand
0 snd_ctl_elem_value_set_subdevice
0 snd_ctl_elem_value_set_integer64
0 snd_ctl_elem_value_set_interface
0 snd_pcm_hw_params_set_periods_max
0 snd_ctl_wait
0 snd_seq_queue_tempo_malloc
0 snd_pcm_hook_add
0 snd_ctl_set_power_state
0 snd_dlsym
0 snd_func_card_id
0 snd_hwdep_dsp_status_copy
0 snd_pcm_hw_params_set_rate_min
0 snd_ctl_elem_list_get_subdevice
0 snd_ctl_event_sizeof
0 snd_ctl_event_type_name
0 snd_ctl_event_get_type
0 snd_ctl_elem_id_set_subdevice
0 snd_mixer_selem_set_enum_item
0 snd_ctl_pcm_prefer_subdevice
0 snd_ctl_poll_descriptors
0 snd_ctl_get_power_state
0 snd_ctl_open_lconf
0 snd_midi_event_no_status
0 snd_ctl_elem_list_get_index
0 snd_ctl_elem_list_get_interface
0 snd_ctl_elem_list_get_count
0 snd_ctl_elem_list_get_device
0 snd_ctl_elem_list_get_name
0 snd_ctl_elem_list_get_used
0 snd_hctl_get_count
0 snd_func_refer
0 snd_func_card_driver
0 snd_timer_info_get_id
0 snd_ctl_elem_info_set_numid
0 snd_ctl_elem_id_set_index
0 snd_ctl_elem_info_set_index
0 snd_ctl_elem_list_alloc_space
0 snd_pcm_hw_params_set_buffer_time_last
0 snd_ctl_elem_list_free_space
0 snd_ctl_elem_list_clear
0 snd_ctl_elem_list_copy
0 snd_ctl_elem_list_sizeof
0 snd_ctl_elem_value_get_enumerated
0 snd_ctl_elem_value_get_id
0 snd_timer_params_get_filter
0 snd_ctl_elem_value_get_device
0 snd_ctl_elem_value_get_integer64
0 snd_ctl_elem_value_get_subdevice
0 snd_ctl_elem_value_set_boolean
0 snd_seq_client_info_copy
0 snd_ctl_elem_value_get_numid
0 snd_ctl_elem_set_bytes
0 snd_hwdep_poll_descriptors_revents
0 snd_ctl_elem_lock
0 snd_seq_client_pool_set_output_room
0 snd_ctl_elem_type_name
0 snd_seq_set_client_pool_input
0 snd_ctl_event_malloc
0 snd_ctl_elem_unlock
0 snd_seq_queue_status_get_real_time
0 snd_input_stdio_open
0 snd_hwdep_name
0 snd_hwdep_dsp_image_set_length
0 snd_hwdep_info_malloc
0 snd_hwdep_open_lconf
0 snd_pcm_sw_params_get_xrun_mode
0 snd_input_buffer_open
0 snd_mixer_selem_has_capture_switch_exclusive
0 snd_rawmidi_info_copy
0 snd_pcm_mmap_readn
0 snd_hwdep_dsp_status_get_id
0 snd_hwdep_dsp_status_free
0 snd_hwdep_dsp_status_get_chip_ready
0 snd_hwdep_dsp_status_get_num_dsps
0 snd_hwdep_info_free
0 snd_hwdep_info_get_card
0 snd_hwdep_dsp_status_get_version
0 snd_hwdep_dsp_status_sizeof
0 snd_input_close
0 snd_pcm_hw_params_set_subformat
0 snd_instr_header_get_name
0 snd_instr_header_get_follow_alias
0 snd_instr_header_get_format
0 snd_instr_header_get_type
0 snd_instr_header_set_cmd
0 snd_config_make_compound
0 snd_instr_header_set_alias
0 snd_instr_header_set_cluster
0 snd_pcm_hw_params_test_periods
0 snd_seq_queue_status_copy
0 snd_hctl_first_elem
0 snd_input_scanf
0 snd_seq_nonblock
0 snd_pcm_access_mask_malloc
0 snd_instr_header_get_data
0 snd_instr_header_free
0 snd_instr_header_get_cluster
0 snd_func_concat
0 snd_pcm_subformat_mask_empty
0 snd_hctl_elem_next
0 snd_hctl_elem_get_name
0 snd_hctl_elem_get_numid
0 snd_hwdep_dsp_load
0 snd_hctl_handle_events
0 snd_hctl_get_callback_private
0 snd_hctl_elem_set_callback
0 snd_hctl_elem_set_callback_private
0 snd_ctl_elem_id_get_numid
0 snd_hctl_compare_fast
0 snd_func_datadir
0 snd_func_igetenv
0 snd_hctl_ctl
0 snd_mixer_selem_get_enum_item
0 snd_pcm_rate_open
0 snd_hctl_elem_get_hctl
0 snd_hctl_elem_get_id
0 snd_hctl_last_elem
0 snd_hwdep_dsp_image_get_index
0 snd_hwdep_dsp_image_get_length
0 snd_seq_get_queue_tempo
0 snd_hwdep_dsp_image_get_image
0 snd_hwdep_dsp_image_malloc
0 snd_hwdep_dsp_image_set_name
0 snd_hwdep_dsp_image_sizeof
0 snd_hwdep_dsp_image_set_image
0 snd_hwdep_dsp_image_set_index
0 snd_hctl_open_ctl
0 snd_config_make
0 snd_pcm_access_mask_reset
0 snd_hctl_name
0 snd_hctl_poll_descriptors_revents
0 snd_hctl_wait
0 snd_hwdep_dsp_image_copy
0 snd_hctl_set_callback
0 snd_card_get_index
0 _snd_pcm_route_open
0 _snd_pcm_share_open
0 _snd_pcm_mulaw_open
0 _snd_pcm_multi_open
0 _snd_pcm_shm_open
0 snd_pcm_hw_params_set_tick_time
0 snd_seq_set_queue_usage
0 snd_config_set_pointer
0 snd_ctl_elem_info_set_item
0 _snd_pcm_hooks_open
0 snd_hwdep_type
0 snd_seq_system_info_copy
0 _snd_pcm_hook_ctl_elems_install
0 snd_hwdep_nonblock
0 _snd_pcm_linear_open
0 snd_ctl_type
0 _snd_pcm_iec958_open
0 snd_ctl_elem_info_set_device
0 snd_async_handler_get_ctl
0 snd_pcm_info_get_card
0 snd_config_get_ctl_iface
0 snd_config_delete_compound_members
0 snd_config_evaluate
0 snd_config_get_bool_ascii
0 snd_config_get_ireal
0 snd_ctl_card_info_get_longname
0 snd_config_get_ctl_iface_ascii
0 snd_ctl_card_info_clear
0 snd_rawmidi_params_free
0 snd_hctl_set_callback_private
0 snd_async_handler_get_fd
0 snd_async_handler_get_signo
0 snd_seq_queue_info_set_locked
0 snd_output_printf
0 snd_config_make_pointer
0 snd_card_load
0 snd_timer_continue
0 snd_mixer_elem_value
0 snd_ctl_subscribe_events
0 snd_timer_nonblock
0 snd_seq_queue_tempo_get_queue
0 snd_ctl_elem_info_get_subdevice
0 snd_timer_id_get_subdevice
0 snd_instr_header_get_len
0 snd_pcm_info_get_subdevice_name
0 snd_async_handler_get_pcm
0 snd_seq_get_client_pool
0 snd_hwdep_info_copy
0 snd_seq_set_queue_timer
0 snd_config_set_id
0 snd_hctl_elem_get_device
0 snd_pcm_file_open
0 snd_instr_header_malloc
0 snd_seq_open_lconf
0 snd_ctl_elem_id_get_device
0 snd_async_add_handler
0 snd_mixer_selem_has_capture_switch_joined
0 snd_timer_id_get_card
0 snd_seq_sync_output_queue
0 snd_ctl_nonblock
0 snd_hctl_elem_get_callback_private
0 _snd_pcm_alaw_open
0 _snd_pcm_dmix_open
0 _snd_pcm_dshare_open
0 _snd_pcm_asym_open
0 _snd_pcm_copy_open
0 snd_seq_client_info_get_num_ports
0 snd_pcm_hw_params_set_tick_time_min
0 snd_config_searchv
0 snd_seq_event_output_buffer
0 snd_ctl_poll_descriptors_count
0 snd_ctl_elem_value_set_index
0 snd_pcm_meter_add_scope
0 _snd_pcm_null_open
0 snd_mixer_selem_get_enum_items
0 snd_seq_port_info_set_timestamping
0 snd_ctl_elem_id_set_numid
0 snd_seq_alloc_named_queue
0 snd_ctl_elem_id_set_device
0 snd_ctl_elem_value_get_boolean
0 snd_ctl_elem_info
0 snd_seq_port_info_get_write_use
0 snd_pcm_format_float
0 snd_hwdep_write
0 snd_hwdep_info_get_device
0 snd_ctl_read
0 snd_rawmidi_info_get_subdevice
0 snd_ctl_elem_list
0 snd_ctl_elem_id_copy
0 snd_ctl_elem_id_get_name
0 snd_seq_client_pool_malloc
0 snd_ctl_elem_id_get_index
0 snd_ctl_elem_id_get_interface
0 snd_ctl_elem_info_copy
0 snd_ctl_elem_info_get_owner
0 snd_ctl_elem_info_get_type
0 snd_seq_client_info_get_error_bounce
0 snd_ctl_elem_info_get_numid
0 snd_ctl_elem_info_is_inactive
0 snd_ctl_elem_info_is_writable
0 _snd_pcm_ladspa_open
0 snd_ctl_elem_info_is_owner
0 snd_pcm_hw_params_set_tick_time_last
0 snd_ctl_elem_info_get_id
0 snd_ctl_elem_info_get_interface
0 snd_ctl_elem_info_get_dimension
0 snd_ctl_elem_info_get_dimensions
0 snd_ctl_elem_info_get_item_name
0 snd_ctl_elem_info_get_max64
0 snd_ctl_elem_info_get_min64
0 snd_ctl_elem_info_get_items
0 snd_mixer_last_elem
0 snd_config_get_pointer
0 snd_func_getenv
0 snd_instr_header_set_follow_alias
0 snd_config_load
0 snd_config_load_override
0 snd_config_make_integer
0 snd_config_make_string
0 snd_config_remove
0 snd_config_make_integer64
0 snd_instr_iwffff_convert_from_stream
0 snd_config_hook_load
0 snd_pcm_meter_get_channels
0 snd_config_get_real
0 snd_config_get_type_ascii
0 snd_config_imake_integer64
0 snd_pcm_subformat_mask_reset
0 snd_pcm_subformat_mask_malloc
0 snd_config_imake_pointer
0 snd_ctl_elem_value_set_id
0 snd_spcm_init
0 snd_config_top
0 snd_config_update_free
0 snd_config_set_integer64
0 snd_config_set_real
0 snd_seq_set_client_pool_output
0 snd_ctl_card_info_copy
0 snd_ctl_card_info_get_driver
0 snd_config_update_r
0 snd_pcm_hw_params_set_access_mask
0 snd_config_searcha
0 snd_config_searcha_hooks
0 snd_config_search_alias
0 snd_config_search_hooks
0 snd_seq_remove_events_set_channel
0 snd_input_getc
0 snd_config_set_integer
0 snd_config_searchva_hooks
0 snd_pcm_ladspa_open
0 snd_mixer_selem_id_copy
0 snd_pcm_share_open
0 snd_pcm_hw_params_set_subformat_last
0 snd_mixer_elem_prev
0 snd_mixer_selem_id_malloc
0 snd_mixer_selem_id_free
0 snd_ctl_elem_info_set_subdevice
0 snd_seq_client_info_malloc
0 snd_mixer_selem_get_index
0 snd_mixer_selem_has_common_switch
0 snd_mixer_selem_has_capture_volume_joined
0 snd_hwdep_poll_descriptors_count
0 snd_mixer_set_compare
0 snd_mixer_set_callback_private
0 snd_mixer_selem_set_playback_volume_range
0 snd_output_flush
0 snd_seq_port_info_get_midi_channels
0 snd_mixer_wait
0 snd_func_private_string
0 snd_mixer_selem_set_capture_switch
0 snd_mixer_selem_is_enumerated
0 snd_ctl_event_free
0 snd_input_stdio_attach
0 snd_mixer_selem_set_capture_volume_range
0 snd_mixer_selem_get_enum_item_name
0 snd_pcm_format_mask_none
0 snd_mixer_elem_attach
0 snd_mixer_elem_add
0 snd_seq_get_queue_usage
0 snd_seq_client_info_get_event_filter
0 snd_mixer_elem_info
0 snd_seq_queue_tempo_set_skew_base
0 snd_mixer_class_register
0 snd_pcm_dump_sw_setup
0 snd_mixer_class_unregister
0 snd_pcm_hw_params_current
0 snd_pcm_hw_params_set_buffer_size_minmax
0 snd_pcm_sw_params_get_start_mode
0 snd_shm_area_destroy
0 snd_pcm_hw_params_get_min_align
0 snd_ctl_elem_list_free
0 snd_rawmidi_status_sizeof
0 snd_mixer_selem_get_capture_group
0 snd_pcm_linear_open
0 snd_mixer_elem_set_callback_private
0 snd_mixer_elem_set_callback
0 snd_mixer_poll_descriptors
0 snd_mixer_handle_events
0 snd_mixer_free
0 snd_pcm_sw_params_set_start_mode
0 snd_hwdep_dsp_status
0 snd_seq_create_queue
0 snd_pcm_dump_setup
0 snd_ctl_card_info_get_components
0 snd_pcm_hw_params_set_channels_max
0 snd_ctl_elem_value_get_iec958
0 snd_seq_system_info_malloc
0 _snd_pcm_rate_open
0 snd_output_puts
0 snd_pcm_dump_hw_setup
0 snd_seq_queue_info_get_owner
0 snd_seq_get_queue_info
0 snd_pcm_stream_name
0 snd_pcm_format_silence
0 snd_pcm_xrun_mode_name
0 snd_pcm_format_value
0 snd_pcm_format_unsigned
0 snd_pcm_format_silence_32
0 snd_pcm_format_mask_any
0 snd_pcm_format_little_endian
0 snd_ctl_elem_id_sizeof
0 snd_pcm_format_mask_set
0 snd_pcm_format_mask_reset
0 snd_pcm_format_mask_empty
0 snd_timer_id_copy
0 snd_pcm_access_mask_none
0 snd_instr_header_get_cmd
0 snd_pcm_access_mask_free
0 snd_pcm_adpcm_open
0 snd_ctl_event_elem_get_id
0 snd_pcm_access_mask_set
0 snd_output_vprintf
0 snd_rawmidi_drop
0 snd_output_putc
0 snd_seq_queue_info_set_name
0 snd_pcm_access_mask_copy
0 snd_pcm_access_mask_any
0 snd_pcm_copy_open
0 snd_pcm_bytes_to_samples
0 _snd_pcm_adpcm_open
0 snd_seq_client_info_get_broadcast_filter
0 snd_pcm_dmix_open
0 snd_ctl_elem_value_get_byte
0 snd_pcm_alaw_open
0 snd_output_stdio_open
0 snd_rawmidi_params_malloc
0 snd_pcm_areas_copy
0 snd_pcm_subformat_mask_sizeof
0 snd_hwdep_dsp_image_get_name
0 snd_midi_event_reset_decode
0 snd_mixer_set_callback
0 snd_instr_iwffff_close
0 snd_instr_simple_convert_from_stream
0 _snd_pcm_dsnoop_open
0 snd_config_make_real
0 snd_instr_header_set_len
0 snd_instr_header_set_id
0 snd_instr_header_set_format
0 snd_instr_header_sizeof
0 snd_instr_header_set_type
0 snd_midi_event_resize_buffer
0 snd_instr_iwffff_open_rom_file
0 snd_instr_iwffff_open_rom
0 snd_pcm_hook_remove
0 snd_instr_simple_free
0 snd_timer_info_copy
0 snd_lib_error
0 snd_rawmidi_params
0 snd_instr_iwffff_convert_to_stream
0 snd_timer_info_is_slave
0 snd_seq_query_subscribe_free
0 snd_instr_iwffff_free
0 snd_config_set_ascii
0 snd_pcm_direct_shm_discard
0 snd_pcm_direct_check_interleave
0 snd_pcm_plugin_undo_read_generic
0 snd_pcm_direct_server_discard
0 snd_pcm_hw_param_get
0 snd_pcm_plugin_undo_write_generic
0 __snd_pcm_forward
0 snd_rawmidi_hw_ops
0 __snd_pcm_sw_params_get_tstamp_mode
0 snd_pcm_direct_initialize_slave
0 snd_pcm_hw_param_refine_multiple
0 snd_interval_refine_last
0 snd_pcm_direct_hw_refine
0 snd_pcm_direct_poll_revents
0 snd_pcm_direct_server_create
0 _snd_hwdep_hw_open
0 snd_interval_mulkdiv
0 snd_rawmidi_virtual_open
0 snd_pcm_hw_param_set_max
0 snd_pcm_hw_param_set_mask
0 _snd_func_private_card_driver_dlsym_config_evaluate_001
0 __snd_hwdep_hw_open_dlsym_hwdep_001
0 snd_pcm_direct_semaphore_create_or_connect
0 snd_pcm_direct_client_discard
0 snd_rawmidi_virtual_ops
0 _snd_timer_query_hw_open
0 __snd_pcm_multi_open_dlsym_pcm_001
0 __snd_pcm_hooks_open_dlsym_pcm_001
0 snd_pcm_direct_shm_create_or_connect
0 __snd_pcm_hook_ctl_elems_install_dlsym_pcm_001
0 snd_pcm_hw_param_set_last
0 snd_atomic_read_wait
0 snd_pcm_hw_param_set_near
0 snd_pcm_slave_conf
0 _snd_pcm_boundary
0 __snd_pcm_adpcm_open_dlsym_pcm_001
0 snd_pcm_direct_initialize_poll_fd
0 __snd_ctl_shm_open_dlsym_control_001
0 __snd_timer_params_set_filter
0 snd_pcm_open_slave
0 __snd_pcm_asym_open_dlsym_pcm_001
0 _snd_pcm_hw_param_set_max
0 __snd_pcm_alaw_open_dlsym_pcm_001
0 __snd_ctl_hw_open_dlsym_control_001
0 snd_interval_add
0 snd_pcm_hw_param_get_min
0 snd_interval_div
0 snd_hwdep_hw_open
0 snd_timer_query_hw_open
0 snd_pcm_adpcm_decode
0 __snd_pcm_sw_params_get_silence_threshold
0 snd_pcm_new
0 _snd_pcm_mmap_hw_ptr
0 __snd_pcm_copy_open_dlsym_pcm_001
0 snd_pcm_direct_async
0 __snd_pcm_hw_open_dlsym_pcm_001
0 __snd_timer_query_info
0 snd_pcm_plugin_fast_ops
0 snd_pcm_direct_client_connect
0 __snd_pcm_shm_open_dlsym_pcm_001
0 snd_pcm_plug_open
0 snd_pcm_areas_from_buf
0 _snd_pcm_hw_param_set_interval
0 snd_pcm_linear_get_index
0 snd_pcm_areas_from_bufs
0 snd_pcm_async
0 __snd_pcm_dmix_open_dlsym_pcm_001
0 snd_pcm_read_mmap
0 snd_pcm_channel_info_shm
0 _snd_rawmidi_virtual_open
0 _snd_ctl_poll_descriptor
0 __snd_timer_query_status
0 __snd_timer_query_params
0 _snd_ctl_hw_open
0 _snd_config_hook_load_dlsym_config_hook_001
0 snd_pcm_direct_mmap
0 snd_pcm_set_appl_ptr
0 __snd_timer_query_hw_open_dlsym_timer_query_001
0 snd_timer_hw_open
0 _snd_func_private_string_dlsym_config_evaluate_001
0 _snd_func_datadir_dlsym_config_evaluate_001
0 __snd_pcm_mulaw_open_dlsym_pcm_001
0 _snd_func_private_pcm_subdevice_dlsym_config_evaluate_001
0 _snd_func_pcm_id_dlsym_config_evaluate_001
0 __snd_pcm_null_open_dlsym_pcm_001
0 __snd_pcm_plug_open_dlsym_pcm_001
0 snd_shm_area_destructor
0 snd_pcm_linear_get32_index
0 snd_pcm_direct_info
0 __snd_pcm_sw_params_get_silence_size
0 __snd_pcm_sw_params_get_start_threshold
0 __snd_pcm_sw_params_get_sleep_min
0 __snd_pcm_share_open_dlsym_pcm_001
0 __snd_timer_params_get_exclusive
0 __snd_pcm_sw_params_get_avail_min
0 __snd_pcm_status_get_trigger_htstamp
0 __snd_timer_params_set_exclusive
0 __snd_timer_hw_open_dlsym_timer_001
0 snd_pcm_mulaw_encode
0 snd_pcm_alaw_decode
0 snd_pcm_hw_param_always_eq
0 snd_pcm_hw_refine
0 __snd_pcm_sw_params_get_stop_threshold
0 __snd_rawmidi_hw_open_dlsym_rawmidi_001
0 snd_pcm_conf_generic_id
0 snd_pcm_hw_param_never_eq
0 _snd_seq_hw_open
0 snd_pcm_hw_param_get_max
0 snd_pcm_hw_param_name
0 snd_pcm_mmap_appl_forward
0 _snd_pcm_hw_params_refine
0 _snd_pcm_hw_param_refine
0 snd_pcm_hw_param_get_mask
0 _snd_pcm_hw_param_set_minmax
0 snd_pcm_hw_param_set_integer
0 snd_pcm_hw_param_set
0 snd_pcm_set_hw_ptr
0 snd_pcm_hw_param_set_first
0 _snd_rawmidi_hw_open
0 _snd_pcm_plug_open
0 __snd_seq_hw_open_dlsym_seq_001
0 snd_pcm_direct_sw_params
0 _snd_pcm_poll_descriptor
0 __snd_pcm_ladspa_open_dlsym_pcm_001
0 _snd_func_getenv_dlsym_config_evaluate_001
0 __snd_pcm_hw_params_set_access_first
0 snd_pcm_hw_param_dump
0 __snd_pcm_meter_open_dlsym_pcm_001
0 _snd_func_refer_dlsym_config_evaluate_001
0 snd_pcm_read_areas
0 __snd_pcm_route_open_dlsym_pcm_001
0 __snd_pcm_iec958_open_dlsym_pcm_001
0 __snd_pcm_dshare_open_dlsym_pcm_001
0 snd_pcm_adpcm_encode
0 _snd_pcm_hw_params_any
0 _snd_pcm_hw_param_set_min
0 _snd_pcm_hw_param_set_empty
0 _snd_pcm_hw_param_set
0 _snd_pcm_hw_param_set_mask
0 snd_pcm_hw_param_empty
0 snd_pcm_plugin_init
0 _snd_func_igetenv_dlsym_config_evaluate_001
0 snd_is_local
0 _snd_config_hook_load_for_all_cards_dlsym_config_hook_001
0 snd_interval_refine_min
0 snd_pcm_munmap
0 snd_interval_refine_set
0 snd_pcm_hw_param_set_minmax
0 snd_rawmidi_hw_open
0 snd_receive_fd
0 snd_pcm_direct_parse_bindings
0 snd_ctl_hw_ops
0 snd_ctl_hw_open
0 __snd_pcm_rate_open_dlsym_pcm_001
0 __snd_ctl_elem_info_get_dimensions
0 _snd_ctl_shm_open
0 snd_interval_refine_max
0 snd_pcm_meter_open
0 __snd_rawmidi_virtual_open_dlsym_rawmidi_001
0 snd_pcm_hw_param_get_interval
0 snd_pcm_write_areas
0 snd_pcm_direct_hw_params
0 snd_ctl_new
0 _snd_func_card_id_dlsym_config_evaluate_001
0 _snd_func_card_driver_dlsym_config_evaluate_001
0 snd_pcm_link_hw_ptr
0 snd_pcm_unlink_hw_ptr
0 __snd_ctl_elem_info_get_dimension
0 __snd_pcm_sw_params_get_xfer_align
0 snd_pcm_linear_convert_index
0 snd_pcm_direct_hw_free
0 __snd_timer_params_get_filter
0 snd_interval_sub
0 snd_ctl_async
0 _snd_timer_hw_open
0 snd_pcm_linear_getput
0 snd_pcm_unlink_appl_ptr
0 snd_pcm_linear_put_index
0 snd_pcm_direct_channel_info
0 snd_seq_create_event
0 __snd_pcm_status_get_htstamp
0 snd_send_fd
0 snd_pcm_linear_put32_index
0 snd_interval_muldiv
0 snd_pcm_write_mmap
0 snd_pcm_linear_convert
0 snd_pcm_hw_fast_tstamp
0 snd_pcm_hw_refine_soft
0 snd_pcm_hw_param_refine_near
0 snd_pcm_mmap_hw_forward
0 snd_pcm_direct_munmap
0 snd_determine_driver
0 snd_interval_refine
0 snd_pcm_free
0 snd_pcm_link_appl_ptr
0 snd_pcm_hw_params_slave
0 snd_pcm_hw_param_set_min
0 snd_pcm_hw_refine_slave
0 snd_pcm_mmap_hw_backward
0 snd_interval_refine_first
0 snd_interval_mul
0 snd_pcm_hw_param_any
0 snd_pcm_direct_nonblock
0 snd_func_private_pcm_subdevice
0 snd_func_pcm_id
0 __snd_pcm_type_name
0 snd_pcm_mulaw_decode
0 snd_interval_print
0 __snd_pcm_linear_open_dlsym_pcm_001
0 snd_interval_muldivk
0 snd_pcm_alaw_encode
0 __snd_pcm_dsnoop_open_dlsym_pcm_001
0 snd_seq_hw_open
0 _snd_func_concat_dlsym_config_evaluate_001
0 _snd_pcm_meter_open
0 snd_seq_hw_ops
0 snd_ctl_shm_ops
0 snd_pcm_mmap
0 __snd_pcm_file_open_dlsym_pcm_001
0 snd_pcm_mmap_appl_backward
0 snd_ctl_shm_open
0 snd_timer_async
0 snd_pcm_lfloat_open
0 _snd_pcm_lfloat_open
0 snd_pcm_lfloat_convert_integer_float
0 snd_pcm_lfloat_convert_float_integer
0 snd_pcm_lfloat_put_s32_index
0 __snd_pcm_lfloat_open_dlsym_pcm_001
0 snd_pcm_lfloat_get_s32_index
0 snd_ctl_elem_add_integer64
0 snd_pcm_softvol_open
0 _snd_pcm_softvol_open
0 snd_ctl_elem_add_integer
0 snd_ctl_elem_add_iec958
0 snd_ctl_elem_info_is_user
0 snd_ctl_elem_add_boolean
0 __snd_pcm_softvol_open_dlsym_pcm_001
0 snd_timer_ginfo_get_name
0 snd_timer_ginfo_get_resolution
0 snd_pcm_ioplug_set_param_minmax
0 snd_timer_ginfo_get_resolution_max
0 snd_pcm_ioplug_reinit_status
0 snd_async_handler_get_timer
0 snd_async_add_timer_handler
0 snd_pcm_ioplug_set_param_list
0 snd_timer_ginfo_get_card
0 snd_pcm_ioplug_params_reset
0 snd_err_msg
0 snd_timer_ginfo_malloc
0 snd_timer_ginfo_get_tid
0 snd_timer_ginfo_copy
0 snd_timer_ginfo_get_clients
0 snd_pcm_hw_params_set_export_buffer
0 snd_pcm_ioplug_delete
0 snd_pcm_ioplug_mmap_areas
0 snd_timer_ginfo_get_id
0 snd_timer_ginfo_set_tid
0 snd_timer_ginfo_get_flags
0 snd_pcm_ioplug_create
0 snd_pcm_extplug_create
0 snd_pcm_extplug_params_reset
0 snd_timer_ginfo_sizeof
0 snd_pcm_extplug_delete
0 snd_pcm_extplug_set_param_minmax
0 snd_pcm_hw_params_get_rate_resample
0 snd_timer_ginfo_get_resolution_min
0 snd_pcm_extplug_set_slave_param_list
0 snd_names_list
0 snd_pcm_extplug_set_param_list
0 snd_names_list_free
0 snd_timer_ginfo_free
0 snd_pcm_hw_params_get_export_buffer
0 snd_pcm_parse_control_id
0 snd_pcm_extplug_set_slave_param_minmax
0 snd_pcm_generic_rewind
0 snd_pcm_generic_sw_params
0 snd_pcm_generic_start
0 snd_pcm_direct_set_timer_params
0 snd_dlobj_cache_add
0 snd_pcm_generic_link
0 snd_ext_parm_set_minmax
0 snd_pcm_generic_state
0 snd_pcm_generic_writei
0 snd_pcm_generic_mmap
0 snd_pcm_generic_async
0 snd_pcm_generic_info
0 snd_pcm_direct_clear_timer_queue
0 snd_pcm_generic_drain
0 snd_pcm_generic_drop
0 snd_pcm_generic_close
0 snd_pcm_generic_hw_free
0 snd_pcm_generic_nonblock
0 snd_pcm_generic_munmap
0 snd_pcm_generic_hw_refine
0 snd_pcm_generic_hw_params
0 snd_pcm_generic_forward
0 snd_pcm_generic_writen
0 snd_ext_parm_clear
0 snd_pcm_generic_readi
0 snd_ext_parm_mask_refine
0 snd_dlobj_cache_cleanup
0 snd_dlobj_cache_lookup
0 snd_pcm_generic_channel_info
0 snd_pcm_generic_poll_descriptors
0 snd_pcm_generic_hwsync
0 snd_pcm_generic_prepare
0 snd_pcm_generic_avail_update
0 snd_ext_parm_set_list
0 snd_pcm_generic_poll_descriptors_count
0 snd_pcm_generic_status
0 snd_pcm_generic_readn
0 snd_pcm_generic_resume
0 snd_pcm_generic_pause
0 snd_interval_list
0 snd_pcm_generic_delay
0 snd_ext_parm_interval_refine
0 snd_pcm_generic_reset
0 snd_pcm_generic_unlink
0 snd_pcm_generic_poll_revents
0 snd_pcm_generic_mmap_commit
0 snd_pcm_direct_timer_stop
0 snd_pcm_wait_nocheck
0 snd_mixer_sbasic_get_private
0 snd_mixer_class_get_mixer
0 snd_mixer_get_hctl
0 snd_mixer_class_set_private_free
0 snd_mixer_class_copy
0 snd_mixer_elem_free
0 snd_mixer_simple_basic_register
0 snd_mixer_class_get_private
0 snd_mixer_selem_set_playback_dB_all
0 snd_mixer_class_get_event
0 snd_mixer_selem_is_enum_capture
0 snd_mixer_sbasic_set_private
0 snd_mixer_class_free
0 snd_mixer_sbasic_set_private_free
0 snd_mixer_selem_set_playback_dB
0 snd_mixer_elem_get_private
0 snd_mixer_class_sizeof
0 snd_mixer_elem_new
0 snd_mixer_selem_get_capture_dB_range
0 snd_mixer_class_get_compare
0 snd_mixer_selem_get_playback_dB_range
0 snd_mixer_sbasic_info
0 snd_mixer_class_set_event
0 snd_mixer_selem_get_capture_dB
0 snd_mixer_class_set_compare
0 snd_mixer_simple_none_register
0 snd_mixer_selem_set_capture_dB_all
0 snd_mixer_selem_is_enum_playback
0 snd_ctl_ext_delete
0 snd_mixer_selem_set_capture_dB
0 snd_mixer_class_set_private
0 snd_mixer_detach_hctl
0 snd_mixer_attach_hctl
0 snd_mixer_class_malloc
0 snd_mixer_selem_get_playback_dB
0 snd_ctl_ext_create
0 snd_pcm_direct_resume
0 _snd_func_pcm_args_by_class_dlsym_config_evaluate_001
0 snd_func_pcm_args_by_class
0 snd_pcm_direct_open_secondary_client
0 snd_mixer_selem_compare
0 snd_pcm_recover
0 snd_pcm_set_params
0 snd_pcm_get_params
0 snd_pcm_direct_parse_open_conf
0 _snd_seq_open_lconf
0 snd_config_check_hop
0 snd_config_set_hop
0 snd_pcm_generic_link_fd
0 _snd_pcm_link_descriptors
0 snd_pcm_generic_link2
0 snd_pcm_rate_get_default_converter
0 snd_hctl_elem_tlv_read
0 snd_ctl_elem_tlv_write
0 snd_ctl_elem_tlv_command
0 snd_hctl_elem_tlv_write
0 snd_ctl_elem_info_is_tlv_commandable
0 snd_ctl_elem_info_is_tlv_writable
0 snd_ctl_elem_info_is_tlv_readable
0 snd_hctl_elem_tlv_command
0 snd_ctl_elem_tlv_read
0 _snd_pcm_rate_linear_open
0 snd_pcm_direct_initialize_secondary_slave

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: ALSA API as standards
  2007-11-21 16:31 ALSA API as standards Takashi Iwai
@ 2007-11-23 14:54 ` Takashi Iwai
  2007-11-23 15:25   ` Blacklist (Re: ALSA API as standards) Takashi Iwai
  2007-11-29 20:55   ` ALSA API as standards Lennart Poettering
  0 siblings, 2 replies; 7+ messages in thread
From: Takashi Iwai @ 2007-11-23 14:54 UTC (permalink / raw)
  To: alsa-devel

At Wed, 21 Nov 2007 17:31:26 +0100,
I wrote:
> 
> What I'd like to do now are:
> 
> - create a list of "standard" functions to be passed to LSB
> - clean up and actually drop some non-used functions
> - remove some functions from export list (in Versions file)
> 
> I'll try to create a list.  Basically it'll be almost as same as the
> list of functions with count > 0, plus some related ones.

OK, here is the white list.  I paste it below at this time.

It doesn't include the new functions regarding TLV and dB level.
Also, some functions are not listed intentionally.  They will be
listed in the next mail.

Please review the names below.  If you think it's not worth to include
to the standard, just speak up.  I'm willing to reduce the numbers!

LSB guys want to finish this soon, so I'll have to pass the list as
soon as possible.  So, if you have time, just check and give
comments.


thanks,

Takashi

===

/* GLOBAL */

snd_asoundlib_version
snd_lib_error_set_handler
snd_strerror

/* I/O */

snd_input_stdio_open
snd_input_stdio_attach
snd_input_buffer_open
snd_input_close
snd_input_scanf
snd_input_gets
snd_input_getc
snd_input_ungetc

snd_output_stdio_open
snd_output_stdio_attach
snd_output_buffer_open
snd_output_buffer_string
snd_output_close
snd_output_printf
snd_output_vprintf
snd_output_puts
snd_output_putc
snd_output_flush

/* CONIFG */

snd_config
snd_config_top
snd_config_load
snd_config_save
snd_config_update
snd_config_update_free_global

snd_config_search
snd_config_searchv
snd_config_search_definition
snd_config_expand
snd_config_evaluate

snd_config_add
snd_config_delete
snd_config_delete_compound_members
snd_config_copy
snd_config_make
snd_config_make_integer
snd_config_make_integer64
snd_config_make_real
snd_config_make_string
snd_config_make_pointer
snd_config_make_compound
snd_config_imake_integer
snd_config_imake_integer64
snd_config_imake_real
snd_config_imake_string
snd_config_imake_pointer
snd_config_get_type

snd_config_set_id
snd_config_set_integer
snd_config_set_integer64
snd_config_set_real
snd_config_set_string
snd_config_set_ascii
snd_config_set_pointer
snd_config_get_id
snd_config_get_integer
snd_config_get_integer64
snd_config_get_real
snd_config_get_ireal
snd_config_get_string
snd_config_get_ascii
snd_config_get_pointer
snd_config_test_id

snd_config_iterator_first
snd_config_iterator_next
snd_config_iterator_end
snd_config_iterator_entry

/* ASYNC */

snd_async_add_handler
snd_async_del_handler
snd_async_handler_get_fd
snd_async_handler_get_signo
snd_async_handler_get_callback_private

snd_async_add_ctl_handler
snd_async_handler_get_ctl

snd_async_add_pcm_handler
snd_async_handler_get_pcm

snd_async_add_timer_handler
snd_async_handler_get_timer

/* CONTROL / GLOBAL */

snd_card_load
snd_card_next
snd_card_get_index
snd_card_get_name
snd_card_get_longname

snd_device_name_hint
snd_device_name_free_hint
snd_device_name_get_hint

snd_ctl_open
snd_ctl_close
snd_ctl_nonblock
snd_ctl_poll_descriptors_count
snd_ctl_poll_descriptors
snd_ctl_poll_descriptors_revents
snd_ctl_subscribe_events

snd_ctl_card_info
snd_ctl_elem_list
snd_ctl_elem_info
snd_ctl_elem_read
snd_ctl_elem_write
snd_ctl_elem_lock
snd_ctl_elem_unlock

snd_ctl_hwdep_next_device
snd_ctl_hwdep_info
snd_ctl_pcm_next_device
snd_ctl_pcm_info
snd_ctl_pcm_prefer_subdevice
snd_ctl_rawmidi_next_device
snd_ctl_rawmidi_info
snd_ctl_rawmidi_prefer_subdevice

snd_ctl_read
snd_ctl_wait
snd_ctl_name
snd_ctl_type

snd_ctl_elem_type_name
snd_ctl_elem_iface_name
snd_ctl_event_type_name

snd_ctl_event_elem_get_mask
snd_ctl_event_elem_get_id

snd_ctl_elem_list_alloc_space
snd_ctl_elem_list_free_space

snd_ctl_elem_id_sizeof
snd_ctl_elem_id_malloc
snd_ctl_elem_id_free
snd_ctl_elem_id_clear
snd_ctl_elem_id_copy
snd_ctl_elem_id_get_numid
snd_ctl_elem_id_get_interface
snd_ctl_elem_id_get_device
snd_ctl_elem_id_get_subdevice
snd_ctl_elem_id_get_name
snd_ctl_elem_id_get_index
snd_ctl_elem_id_set_numid
snd_ctl_elem_id_set_interface
snd_ctl_elem_id_set_device
snd_ctl_elem_id_set_subdevice
snd_ctl_elem_id_set_name
snd_ctl_elem_id_set_index

snd_ctl_card_info_sizeof
snd_ctl_card_info_malloc
snd_ctl_card_info_free
snd_ctl_card_info_clear
snd_ctl_card_info_copy
snd_ctl_card_info_get_id
snd_ctl_card_info_get_driver
snd_ctl_card_info_get_name
snd_ctl_card_info_get_longname
snd_ctl_card_info_get_mixername
snd_ctl_card_info_get_components

snd_ctl_event_sizeof
snd_ctl_event_malloc
snd_ctl_event_free
snd_ctl_event_clear
snd_ctl_event_copy
snd_ctl_event_get_type

snd_ctl_elem_list_sizeof
snd_ctl_elem_list_malloc
snd_ctl_elem_list_free
snd_ctl_elem_list_clear
snd_ctl_elem_list_copy
snd_ctl_elem_list_set_offset
snd_ctl_elem_list_get_used
snd_ctl_elem_list_get_count
snd_ctl_elem_list_get_id
snd_ctl_elem_list_get_numid
snd_ctl_elem_list_get_name

snd_ctl_elem_info_sizeof
snd_ctl_elem_info_malloc
snd_ctl_elem_info_free
snd_ctl_elem_info_clear
snd_ctl_elem_info_copy
snd_ctl_elem_info_get_type
snd_ctl_elem_info_is_readable
snd_ctl_elem_info_is_writable
snd_ctl_elem_info_is_volatile
snd_ctl_elem_info_is_inactive
snd_ctl_elem_info_is_locked
snd_ctl_elem_info_is_owner
snd_ctl_elem_info_is_user
snd_ctl_elem_info_get_owner
snd_ctl_elem_info_get_count
snd_ctl_elem_info_get_min
snd_ctl_elem_info_get_max
snd_ctl_elem_info_get_step
snd_ctl_elem_info_get_min64
snd_ctl_elem_info_get_max64
snd_ctl_elem_info_get_step64
snd_ctl_elem_info_get_items
snd_ctl_elem_info_set_item
snd_ctl_elem_info_get_item_name
snd_ctl_elem_info_get_id
snd_ctl_elem_info_get_numid
snd_ctl_elem_info_get_name
snd_ctl_elem_info_set_id

snd_ctl_elem_add_integer
snd_ctl_elem_add_integer64
snd_ctl_elem_add_boolean
snd_ctl_elem_add_iec958
snd_ctl_elem_remove

snd_ctl_elem_value_sizeof
snd_ctl_elem_value_malloc
snd_ctl_elem_value_free
snd_ctl_elem_value_clear
snd_ctl_elem_value_copy
snd_ctl_elem_value_get_id
snd_ctl_elem_value_get_numid
snd_ctl_elem_value_get_name
snd_ctl_elem_value_set_id
snd_ctl_elem_value_get_boolean
snd_ctl_elem_value_get_integer
snd_ctl_elem_value_get_integer64
snd_ctl_elem_value_get_enumerated
snd_ctl_elem_value_get_byte
snd_ctl_elem_value_set_boolean
snd_ctl_elem_value_set_integer
snd_ctl_elem_value_set_integer64
snd_ctl_elem_value_set_enumerated
snd_ctl_elem_value_set_byte
snd_ctl_elem_value_set_bytes
snd_ctl_elem_value_get_bytes
snd_ctl_elem_value_get_iec958
snd_ctl_elem_value_set_iec958

snd_hctl_open
snd_hctl_open_ctl
snd_hctl_close
snd_hctl_nonblock
snd_hctl_poll_descriptors_count
snd_hctl_poll_descriptors
snd_hctl_poll_descriptors_revents
snd_hctl_get_count
snd_hctl_set_compare

snd_hctl_first_elem
snd_hctl_last_elem
snd_hctl_find_elem
snd_hctl_set_callback
snd_hctl_set_callback_private
snd_hctl_get_callback_private
snd_hctl_load
snd_hctl_free
snd_hctl_handle_events
snd_hctl_name
snd_hctl_wait
snd_hctl_ctl

snd_hctl_elem_next
snd_hctl_elem_prev
snd_hctl_elem_info
snd_hctl_elem_read
snd_hctl_elem_write

snd_hctl_elem_get_hctl

snd_hctl_elem_get_id
snd_hctl_elem_set_callback
snd_hctl_elem_get_callback_private
snd_hctl_elem_set_callback_private

/* MIXER */

snd_mixer_open
snd_mixer_close
snd_mixer_first_elem
snd_mixer_last_elem
snd_mixer_handle_events
snd_mixer_attach
snd_mixer_attach_hctl
snd_mixer_detach
snd_mixer_detach_hctl
snd_mixer_get_hctl
snd_mixer_poll_descriptors_count
snd_mixer_poll_descriptors
snd_mixer_poll_descriptors_revents
snd_mixer_load
snd_mixer_free
snd_mixer_wait
snd_mixer_set_compare
snd_mixer_set_callback
snd_mixer_get_callback_private
snd_mixer_set_callback_private
snd_mixer_get_count

snd_mixer_elem_next
snd_mixer_elem_prev
snd_mixer_elem_set_callback
snd_mixer_elem_get_callback_private
snd_mixer_elem_set_callback_private
snd_mixer_elem_get_type

snd_mixer_selem_channel_name
snd_mixer_selem_register
snd_mixer_selem_get_id
snd_mixer_selem_get_name
snd_mixer_selem_get_index
snd_mixer_find_selem
snd_mixer_selem_is_active
snd_mixer_selem_is_playback_mono
snd_mixer_selem_has_playback_channel
snd_mixer_selem_is_capture_mono
snd_mixer_selem_has_capture_channel
snd_mixer_selem_get_capture_group
snd_mixer_selem_has_common_volume
snd_mixer_selem_has_playback_volume
snd_mixer_selem_has_playback_volume_joined
snd_mixer_selem_has_capture_volume
snd_mixer_selem_has_capture_volume_joined
snd_mixer_selem_has_common_switch
snd_mixer_selem_has_playback_switch
snd_mixer_selem_has_playback_switch_joined
snd_mixer_selem_has_capture_switch
snd_mixer_selem_has_capture_switch_joined
snd_mixer_selem_has_capture_switch_exclusive

snd_mixer_selem_get_playback_volume
snd_mixer_selem_get_capture_volume
snd_mixer_selem_get_playback_switch
snd_mixer_selem_get_capture_switch
snd_mixer_selem_set_playback_volume
snd_mixer_selem_set_capture_volume
snd_mixer_selem_set_playback_volume_all
snd_mixer_selem_set_capture_volume_all
snd_mixer_selem_set_playback_switch
snd_mixer_selem_set_capture_switch
snd_mixer_selem_set_playback_switch_all
snd_mixer_selem_set_capture_switch_all
snd_mixer_selem_get_playback_volume_range
snd_mixer_selem_set_playback_volume_range
snd_mixer_selem_get_capture_volume_range
snd_mixer_selem_set_capture_volume_range

snd_mixer_selem_is_enumerated
snd_mixer_selem_is_enum_playback
snd_mixer_selem_is_enum_capture
snd_mixer_selem_get_enum_items
snd_mixer_selem_get_enum_item_name
snd_mixer_selem_get_enum_item
snd_mixer_selem_set_enum_item

snd_mixer_selem_id_sizeof
snd_mixer_selem_id_malloc
snd_mixer_selem_id_free
snd_mixer_selem_id_copy
snd_mixer_selem_id_get_name
snd_mixer_selem_id_get_index
snd_mixer_selem_id_set_name
snd_mixer_selem_id_set_index

/* HWDEP */

snd_hwdep_open
snd_hwdep_close
snd_hwdep_poll_descriptors
snd_hwdep_poll_descriptors_revents
snd_hwdep_nonblock
snd_hwdep_info
snd_hwdep_dsp_status
snd_hwdep_dsp_load
snd_hwdep_ioctl
snd_hwdep_write
snd_hwdep_read

snd_hwdep_info_sizeof
snd_hwdep_info_malloc
snd_hwdep_info_free
snd_hwdep_info_copy
snd_hwdep_info_get_device
snd_hwdep_info_get_card
snd_hwdep_info_get_id
snd_hwdep_info_get_name
snd_hwdep_info_get_iface
snd_hwdep_info_set_device

snd_hwdep_dsp_status_sizeof
snd_hwdep_dsp_status_malloc
snd_hwdep_dsp_status_free
snd_hwdep_dsp_status_copy
snd_hwdep_dsp_status_get_version
snd_hwdep_dsp_status_get_id
snd_hwdep_dsp_status_get_num_dsps
snd_hwdep_dsp_status_get_dsp_loaded
snd_hwdep_dsp_status_get_chip_ready

snd_hwdep_dsp_image_sizeof
snd_hwdep_dsp_image_malloc
snd_hwdep_dsp_image_free
snd_hwdep_dsp_image_copy
snd_hwdep_dsp_image_get_index
snd_hwdep_dsp_image_get_name
snd_hwdep_dsp_image_get_image
snd_hwdep_dsp_image_get_length
snd_hwdep_dsp_image_set_index
snd_hwdep_dsp_image_set_name
snd_hwdep_dsp_image_set_image
snd_hwdep_dsp_image_set_length

/* PCM */

snd_pcm_open
snd_pcm_close
snd_pcm_name
snd_pcm_type
snd_pcm_stream
snd_pcm_poll_descriptors_count
snd_pcm_poll_descriptors
snd_pcm_poll_descriptors_revents
snd_pcm_nonblock
snd_pcm_info
snd_pcm_hw_params_current
snd_pcm_hw_params
snd_pcm_hw_free
snd_pcm_sw_params_current
snd_pcm_sw_params
snd_pcm_prepare
snd_pcm_reset
snd_pcm_status
snd_pcm_start
snd_pcm_drop
snd_pcm_drain
snd_pcm_pause
snd_pcm_state
snd_pcm_hwsync
snd_pcm_delay
snd_pcm_resume
snd_pcm_avail_update
snd_pcm_rewind
snd_pcm_forward
snd_pcm_writei
snd_pcm_readi
snd_pcm_writen
snd_pcm_readn
snd_pcm_wait
snd_pcm_link
snd_pcm_unlink
snd_pcm_recover

snd_pcm_info_sizeof
snd_pcm_info_malloc
snd_pcm_info_free
snd_pcm_info_copy
snd_pcm_info_get_device
snd_pcm_info_get_subdevice
snd_pcm_info_get_stream
snd_pcm_info_get_card
snd_pcm_info_get_id
snd_pcm_info_get_name
snd_pcm_info_get_subdevice_name
snd_pcm_info_get_class
snd_pcm_info_get_subclass
snd_pcm_info_get_subdevices_count
snd_pcm_info_get_subdevices_avail
snd_pcm_info_get_sync
snd_pcm_info_set_device
snd_pcm_info_set_subdevice
snd_pcm_info_set_stream

snd_pcm_hw_params_sizeof
snd_pcm_hw_params_malloc
snd_pcm_hw_params_free
snd_pcm_hw_params_copy
snd_pcm_hw_params_any
snd_pcm_hw_params_can_mmap_sample_resolution
snd_pcm_hw_params_is_double
snd_pcm_hw_params_can_pause
snd_pcm_hw_params_can_resume
snd_pcm_hw_params_is_half_duplex
snd_pcm_hw_params_is_joint_duplex
snd_pcm_hw_params_can_sync_start
snd_pcm_hw_params_get_rate_numden
snd_pcm_hw_params_get_sbits
snd_pcm_hw_params_get_access
snd_pcm_hw_params_test_access
snd_pcm_hw_params_set_access
snd_pcm_hw_params_set_access_mask
snd_pcm_hw_params_get_access_mask
snd_pcm_hw_params_get_format
snd_pcm_hw_params_test_format
snd_pcm_hw_params_set_format
snd_pcm_hw_params_set_format_mask
snd_pcm_hw_params_get_format_mask
snd_pcm_hw_params_get_channels
snd_pcm_hw_params_get_channels_min
snd_pcm_hw_params_get_channels_max
snd_pcm_hw_params_test_channels
snd_pcm_hw_params_set_channels
snd_pcm_hw_params_set_channels_near
snd_pcm_hw_params_get_rate
snd_pcm_hw_params_get_rate_min
snd_pcm_hw_params_get_rate_max
snd_pcm_hw_params_test_rate
snd_pcm_hw_params_set_rate
snd_pcm_hw_params_set_rate_near
snd_pcm_hw_params_set_rate_resample
snd_pcm_hw_params_get_rate_resample
snd_pcm_hw_params_get_period_time
snd_pcm_hw_params_get_period_time_min
snd_pcm_hw_params_get_period_time_max
snd_pcm_hw_params_test_period_time
snd_pcm_hw_params_set_period_time
snd_pcm_hw_params_set_period_time_near
snd_pcm_hw_params_get_period_size
snd_pcm_hw_params_get_period_size_min
snd_pcm_hw_params_get_period_size_max
snd_pcm_hw_params_test_period_size
snd_pcm_hw_params_set_period_size
snd_pcm_hw_params_set_period_size_near
snd_pcm_hw_params_get_periods
snd_pcm_hw_params_get_periods_min
snd_pcm_hw_params_get_periods_max
snd_pcm_hw_params_test_periods
snd_pcm_hw_params_set_periods
snd_pcm_hw_params_set_periods_near
snd_pcm_hw_params_set_periods_integer
snd_pcm_hw_params_get_buffer_time
snd_pcm_hw_params_get_buffer_time_min
snd_pcm_hw_params_get_buffer_time_max
snd_pcm_hw_params_test_buffer_time
snd_pcm_hw_params_set_buffer_time
snd_pcm_hw_params_set_buffer_time_near
snd_pcm_hw_params_get_buffer_size
snd_pcm_hw_params_get_buffer_size_min
snd_pcm_hw_params_get_buffer_size_max
snd_pcm_hw_params_test_buffer_size
snd_pcm_hw_params_set_buffer_size
snd_pcm_hw_params_set_buffer_size_near

snd_pcm_sw_params_sizeof
snd_pcm_sw_params_malloc
snd_pcm_sw_params_free
snd_pcm_sw_params_copy
snd_pcm_sw_params_get_boundary
snd_pcm_sw_params_set_tstamp_mode
snd_pcm_sw_params_get_tstamp_mode
snd_pcm_sw_params_set_avail_min
snd_pcm_sw_params_get_avail_min
snd_pcm_sw_params_set_start_threshold
snd_pcm_sw_params_get_start_threshold
snd_pcm_sw_params_set_stop_threshold
snd_pcm_sw_params_get_stop_threshold
snd_pcm_sw_params_set_silence_threshold
snd_pcm_sw_params_get_silence_threshold
snd_pcm_sw_params_set_silence_size
snd_pcm_sw_params_get_silence_size

snd_pcm_access_mask_sizeof
snd_pcm_access_mask_malloc
snd_pcm_access_mask_free
snd_pcm_access_mask_copy
snd_pcm_access_mask_none
snd_pcm_access_mask_any
snd_pcm_access_mask_test
snd_pcm_access_mask_empty
snd_pcm_access_mask_set
snd_pcm_access_mask_reset

snd_pcm_format_mask_sizeof
snd_pcm_format_mask_malloc
snd_pcm_format_mask_free
snd_pcm_format_mask_copy
snd_pcm_format_mask_none
snd_pcm_format_mask_any
snd_pcm_format_mask_test
snd_pcm_format_mask_empty
snd_pcm_format_mask_set
snd_pcm_format_mask_reset

snd_pcm_status_sizeof
snd_pcm_status_malloc
snd_pcm_status_free
snd_pcm_status_copy
snd_pcm_status_get_state
snd_pcm_status_get_trigger_tstamp
snd_pcm_status_get_trigger_htstamp
snd_pcm_status_get_tstamp
snd_pcm_status_get_htstamp
snd_pcm_status_get_delay
snd_pcm_status_get_avail
snd_pcm_status_get_avail_max

snd_pcm_type_name
snd_pcm_stream_name
snd_pcm_access_name
snd_pcm_format_name
snd_pcm_format_description
snd_pcm_format_value
snd_pcm_tstamp_mode_name
snd_pcm_state_name

snd_pcm_dump
snd_pcm_dump_hw_setup
snd_pcm_dump_sw_setup
snd_pcm_dump_setup
snd_pcm_hw_params_dump
snd_pcm_sw_params_dump
snd_pcm_status_dump

snd_pcm_mmap_begin
snd_pcm_mmap_commit
snd_pcm_mmap_writei
snd_pcm_mmap_readi
snd_pcm_mmap_writen
snd_pcm_mmap_readn

snd_pcm_format_signed
snd_pcm_format_unsigned
snd_pcm_format_linear
snd_pcm_format_float
snd_pcm_format_little_endian
snd_pcm_format_big_endian
snd_pcm_format_cpu_endian
snd_pcm_format_width
snd_pcm_format_physical_width
snd_pcm_build_linear_format
snd_pcm_format_set_silence
snd_pcm_bytes_to_frames
snd_pcm_frames_to_bytes
snd_pcm_bytes_to_samples
snd_pcm_samples_to_bytes
snd_pcm_area_silence
snd_pcm_areas_silence
snd_pcm_area_copy
snd_pcm_areas_copy

/* RAWMIDI */

snd_rawmidi_open
snd_rawmidi_close
snd_rawmidi_poll_descriptors_count
snd_rawmidi_poll_descriptors
snd_rawmidi_poll_descriptors_revents
snd_rawmidi_nonblock
snd_rawmidi_name
snd_rawmidi_type
snd_rawmidi_stream
snd_rawmidi_drain
snd_rawmidi_drop
snd_rawmidi_write
snd_rawmidi_read

snd_rawmidi_info
snd_rawmidi_info_sizeof
snd_rawmidi_info_malloc
snd_rawmidi_info_free
snd_rawmidi_info_copy
snd_rawmidi_info_get_device
snd_rawmidi_info_get_subdevice
snd_rawmidi_info_get_stream
snd_rawmidi_info_get_card
snd_rawmidi_info_get_flags
snd_rawmidi_info_get_id
snd_rawmidi_info_get_name
snd_rawmidi_info_get_subdevice_name
snd_rawmidi_info_get_subdevices_count
snd_rawmidi_info_get_subdevices_avail
snd_rawmidi_info_set_device
snd_rawmidi_info_set_subdevice
snd_rawmidi_info_set_stream

snd_rawmidi_params
snd_rawmidi_params_current
snd_rawmidi_params_sizeof
snd_rawmidi_params_malloc
snd_rawmidi_params_free
snd_rawmidi_params_copy
snd_rawmidi_params_set_buffer_size
snd_rawmidi_params_get_buffer_size
snd_rawmidi_params_set_avail_min
snd_rawmidi_params_get_avail_min
snd_rawmidi_params_set_no_active_sensing
snd_rawmidi_params_get_no_active_sensing

snd_rawmidi_status_sizeof
snd_rawmidi_status_malloc
snd_rawmidi_status_free
snd_rawmidi_status_copy
snd_rawmidi_status
snd_rawmidi_status_get_tstamp
snd_rawmidi_status_get_avail
snd_rawmidi_status_get_xruns

/* TIMER */

snd_timer_open
snd_timer_close

snd_timer_poll_descriptors_count
snd_timer_poll_descriptors
snd_timer_poll_descriptors_revents(
snd_timer_info
snd_timer_params
snd_timer_status
snd_timer_start
snd_timer_stop
snd_timer_continue
snd_timer_read

snd_timer_id_sizeof
snd_timer_id_malloc
snd_timer_id_free
snd_timer_id_copy
snd_timer_id_set_class
snd_timer_id_get_class
snd_timer_id_set_sclass
snd_timer_id_get_sclass
snd_timer_id_set_card
snd_timer_id_get_card
snd_timer_id_set_device
snd_timer_id_get_device
snd_timer_id_set_subdevice
snd_timer_id_get_subdevice

snd_timer_info_sizeof
snd_timer_info_malloc
snd_timer_info_free
snd_timer_info_copy
snd_timer_info_is_slave
snd_timer_info_get_card
snd_timer_info_get_id
snd_timer_info_get_name
snd_timer_info_get_resolution

snd_timer_params_sizeof
snd_timer_params_malloc
snd_timer_params_free
snd_timer_params_copy
snd_timer_params_set_auto_start
snd_timer_params_get_auto_start
snd_timer_params_set_exclusive
snd_timer_params_get_exclusive
snd_timer_params_set_early_event
snd_timer_params_get_early_event
snd_timer_params_set_ticks
snd_timer_params_get_ticks
snd_timer_params_set_queue_size
snd_timer_params_get_queue_size
snd_timer_params_set_filter
snd_timer_params_get_filter

snd_timer_status_sizeof
snd_timer_status_malloc
snd_timer_status_free
snd_timer_status_copy
snd_timer_status_get_timestamp
snd_timer_status_get_resolution
snd_timer_status_get_lost
snd_timer_status_get_overrun
snd_timer_status_get_queue

/* SEQUENCER */

snd_seq_open
snd_seq_name
snd_seq_type
snd_seq_close
snd_seq_poll_descriptors_count
snd_seq_poll_descriptors
snd_seq_poll_descriptors_revents
snd_seq_nonblock
snd_seq_client_id

snd_seq_get_output_buffer_size
snd_seq_get_input_buffer_size
snd_seq_set_output_buffer_size
snd_seq_set_input_buffer_size

snd_seq_system_info_sizeof
snd_seq_system_info_malloc
snd_seq_system_info_free
snd_seq_system_info_copy
snd_seq_system_info_get_queues
snd_seq_system_info_get_clients
snd_seq_system_info_get_ports
snd_seq_system_info_get_channels
snd_seq_system_info_get_cur_clients
snd_seq_system_info_get_cur_queues
snd_seq_system_info

snd_seq_client_info_sizeof
snd_seq_client_info_malloc
snd_seq_client_info_free
snd_seq_client_info_copy

snd_seq_client_info_get_client
snd_seq_client_info_get_type
snd_seq_client_info_get_name
snd_seq_client_info_get_num_ports
snd_seq_client_info_get_event_lost

snd_seq_client_info_set_client
snd_seq_client_info_set_name

snd_seq_get_client_info
snd_seq_get_any_client_info
snd_seq_set_client_info
snd_seq_query_next_client

snd_seq_port_info_sizeof
snd_seq_port_info_malloc
snd_seq_port_info_free
snd_seq_port_info_copy

snd_seq_port_info_get_client
snd_seq_port_info_get_port
snd_seq_port_info_get_addr
snd_seq_port_info_get_name
snd_seq_port_info_get_capability
snd_seq_port_info_get_type
snd_seq_port_info_get_midi_channels
snd_seq_port_info_get_midi_voices
snd_seq_port_info_get_synth_voices
snd_seq_port_info_get_read_use
snd_seq_port_info_get_write_use
snd_seq_port_info_get_port_specified
snd_seq_port_info_get_timestamping
snd_seq_port_info_get_timestamp_real
snd_seq_port_info_get_timestamp_queue

snd_seq_port_info_set_client
snd_seq_port_info_set_port
snd_seq_port_info_set_addr
snd_seq_port_info_set_name
snd_seq_port_info_set_capability
snd_seq_port_info_set_type
snd_seq_port_info_set_midi_channels
snd_seq_port_info_set_midi_voices
snd_seq_port_info_set_synth_voices
snd_seq_port_info_set_port_specified
snd_seq_port_info_set_timestamping
snd_seq_port_info_set_timestamp_real
snd_seq_port_info_set_timestamp_queue

snd_seq_create_port
snd_seq_delete_port
snd_seq_get_port_info
snd_seq_get_any_port_info
snd_seq_set_port_info
snd_seq_query_next_port

snd_seq_port_subscribe_sizeof
snd_seq_port_subscribe_malloc
snd_seq_port_subscribe_free
snd_seq_port_subscribe_copy

snd_seq_port_subscribe_get_sender
snd_seq_port_subscribe_get_dest
snd_seq_port_subscribe_get_queue
snd_seq_port_subscribe_get_exclusive
snd_seq_port_subscribe_get_time_update
snd_seq_port_subscribe_get_time_real

snd_seq_port_subscribe_set_sender
snd_seq_port_subscribe_set_dest
snd_seq_port_subscribe_set_queue
snd_seq_port_subscribe_set_exclusive
snd_seq_port_subscribe_set_time_update
snd_seq_port_subscribe_set_time_real

snd_seq_get_port_subscription
snd_seq_subscribe_port
snd_seq_unsubscribe_port

snd_seq_query_subscribe_sizeof
snd_seq_query_subscribe_malloc
snd_seq_query_subscribe_free
snd_seq_query_subscribe_copy
snd_seq_query_subscribe_get_client
snd_seq_query_subscribe_get_port
snd_seq_query_subscribe_get_root
snd_seq_query_subscribe_get_type
snd_seq_query_subscribe_get_index
snd_seq_query_subscribe_get_num_subs
snd_seq_query_subscribe_get_addr
snd_seq_query_subscribe_get_queue
snd_seq_query_subscribe_get_exclusive
snd_seq_query_subscribe_get_time_update
snd_seq_query_subscribe_get_time_real

snd_seq_query_subscribe_set_client
snd_seq_query_subscribe_set_port
snd_seq_query_subscribe_set_root
snd_seq_query_subscribe_set_type
snd_seq_query_subscribe_set_index
snd_seq_query_port_subscribers

snd_seq_alloc_named_queue
snd_seq_alloc_queue
snd_seq_free_queue

snd_seq_queue_status_sizeof
snd_seq_queue_status_malloc
snd_seq_queue_status_free
snd_seq_queue_status_copy
snd_seq_queue_status_get_queue
snd_seq_queue_status_get_events
snd_seq_queue_status_get_tick_time
snd_seq_queue_status_get_real_time
snd_seq_queue_status_get_status
snd_seq_get_queue_status

snd_seq_queue_tempo_sizeof
snd_seq_queue_tempo_malloc
snd_seq_queue_tempo_free
snd_seq_queue_tempo_copy
snd_seq_queue_tempo_get_queue
snd_seq_queue_tempo_get_tempo
snd_seq_queue_tempo_get_ppq
snd_seq_queue_tempo_set_tempo
snd_seq_queue_tempo_set_ppq
snd_seq_get_queue_tempo
snd_seq_set_queue_tempo

snd_seq_free_event
snd_seq_event_length
snd_seq_event_output
snd_seq_event_output_buffer
snd_seq_event_output_direct
snd_seq_event_input
snd_seq_event_input_pending
snd_seq_drain_output
snd_seq_event_output_pending
snd_seq_extract_output
snd_seq_drop_output
snd_seq_drop_output_buffer
snd_seq_drop_input
snd_seq_drop_input_buffer

snd_seq_event_types

snd_seq_control_queue
snd_seq_create_simple_port
snd_seq_delete_simple_port
snd_seq_connect_from
snd_seq_connect_to
snd_seq_disconnect_from
snd_seq_disconnect_to
snd_seq_set_client_name
snd_seq_sync_output_queue

snd_seq_parse_address

snd_midi_event_new
snd_midi_event_resize_buffer
snd_midi_event_free
snd_midi_event_init
snd_midi_event_reset_encode
snd_midi_event_reset_decode
snd_midi_event_no_status
snd_midi_event_encode
snd_midi_event_encode_byte
snd_midi_event_decode

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Blacklist (Re:  ALSA API as standards)
  2007-11-23 14:54 ` Takashi Iwai
@ 2007-11-23 15:25   ` Takashi Iwai
  2007-11-26 18:36     ` John Utz
  2007-11-29 20:55   ` ALSA API as standards Lennart Poettering
  1 sibling, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2007-11-23 15:25 UTC (permalink / raw)
  To: alsa-devel

At Fri, 23 Nov 2007 15:54:38 +0100,
I wrote:
> 
> At Wed, 21 Nov 2007 17:31:26 +0100,
> I wrote:
> > 
> > What I'd like to do now are:
> > 
> > - create a list of "standard" functions to be passed to LSB
> > - clean up and actually drop some non-used functions
> > - remove some functions from export list (in Versions file)
> > 
> > I'll try to create a list.  Basically it'll be almost as same as the
> > list of functions with count > 0, plus some related ones.
> 
> OK, here is the white list.  I paste it below at this time.
> 
> It doesn't include the new functions regarding TLV and dB level.
> Also, some functions are not listed intentionally.  They will be
> listed in the next mail.

Here it is, the black list.

These are functions that are not worth to be in the standard list.
They are never used or shouldn't be used any more.  Some are functions
/ variables that are exported but supposed to be internal-only.

I think we can mark them deprecated and get rid of the header files in
future.


Takashi

===

/* internal only */
snd_shm_area_create
snd_shm_area_share
snd_shm_area_destroy

/* internal only */
snd_dlopen
snd_dlsym
snd_dlclose

/* internal only */
snd_user_file
snd_dlsym_start

/* conf.c - no use */
snd_config_load_override
snd_config_update_r

/* internal */
snd_config_search_alias_hooks
snd_config_substitute

/* deprecated */
snd_names_list
snd_names_list_free

/* ctl - no use */
snd_ctl_open_lconf
/* no use, and they can be redundant (retrieved from *_get_id()) */
snd_ctl_event_elem_get_numid
snd_ctl_event_elem_get_interface
snd_ctl_event_elem_get_device
snd_ctl_event_elem_get_subdevice
snd_ctl_event_elem_get_name
snd_ctl_event_elem_get_index
/* ditto */
snd_ctl_elem_list_get_interface
snd_ctl_elem_list_get_device
snd_ctl_elem_list_get_subdevice
snd_ctl_elem_list_get_index

/* dimension feature isn't properly used */
snd_ctl_elem_info_get_dimensions
snd_ctl_elem_info_get_dimension

/* no use, redundant */
snd_ctl_elem_info_get_interface
snd_ctl_elem_info_get_device
snd_ctl_elem_info_get_subdevice
snd_ctl_elem_info_get_index
snd_ctl_elem_info_set_numid
/* ditto */
snd_ctl_elem_info_set_interface
snd_ctl_elem_info_set_device
snd_ctl_elem_info_set_subdevice
snd_ctl_elem_info_set_name
snd_ctl_elem_info_set_index
/* ditto */
snd_ctl_elem_value_get_interface
snd_ctl_elem_value_get_device
snd_ctl_elem_value_get_subdevice
snd_ctl_elem_value_get_index
/* ditto */
snd_ctl_elem_value_set_numid
snd_ctl_elem_value_set_interface
snd_ctl_elem_value_set_device
snd_ctl_elem_value_set_subdevice
snd_ctl_elem_value_set_name
snd_ctl_elem_value_set_index

/* a wrong symbol name */
snd_ctl_elem_set_bytes

/* no use, redundant */
snd_hctl_elem_get_numid
snd_hctl_elem_get_interface
snd_hctl_elem_get_device
snd_hctl_elem_get_subdevice
snd_hctl_elem_get_name
snd_hctl_elem_get_index

/* deprecated */
snd_ctl_set_power_state
snd_ctl_get_power_state

/* deprecated */
snd_sctl_build
snd_sctl_free
snd_sctl_install
snd_sctl_remove

/* mixer class is never used properly */
snd_mixer_class_unregister
snd_mixer_class_register
snd_mixer_add_elem
snd_mixer_remove_elem
snd_mixer_elem_new
snd_mixer_elem_add
snd_mixer_elem_remove
snd_mixer_elem_free
snd_mixer_elem_info
snd_mixer_elem_value
snd_mixer_elem_attach
snd_mixer_elem_detach
snd_mixer_elem_empty
snd_mixer_elem_get_private
snd_mixer_class_sizeof
snd_mixer_class_malloc
snd_mixer_class_free
snd_mixer_class_copy
snd_mixer_class_get_mixer
snd_mixer_class_get_event
snd_mixer_class_get_private
snd_mixer_class_get_compare
snd_mixer_class_set_event
snd_mixer_class_set_private
snd_mixer_class_set_private_free
snd_mixer_class_set_compare

/* deprecated */
snd_pcm_set_params
snd_pcm_get_params

/* useless parameters, implemented on no driver properly */
snd_pcm_hw_params_is_batch
snd_pcm_hw_params_is_block_transfer
snd_pcm_hw_params_can_overrange
snd_pcm_hw_params_get_fifo_size

/* *_set_first() and *_set_last() are almost useless */
snd_pcm_hw_params_set_access_first
snd_pcm_hw_params_set_access_last
snd_pcm_hw_params_set_format_first
snd_pcm_hw_params_set_format_last

/* subformat is useless, so far; we have even no proper definition */
snd_pcm_hw_params_get_subformat
snd_pcm_hw_params_test_subformat
snd_pcm_hw_params_set_subformat
snd_pcm_hw_params_set_subformat_first
snd_pcm_hw_params_set_subformat_last
snd_pcm_hw_params_set_subformat_mask
snd_pcm_hw_params_get_subformat_mask

/* set_min(), set_max(), set_minmax() are useless, too */
snd_pcm_hw_params_set_channels_min
snd_pcm_hw_params_set_channels_max
snd_pcm_hw_params_set_channels_minmax
snd_pcm_hw_params_set_channels_first
snd_pcm_hw_params_set_channels_last
snd_pcm_hw_params_set_rate_min
snd_pcm_hw_params_set_rate_max
snd_pcm_hw_params_set_rate_minmax
snd_pcm_hw_params_set_rate_first
snd_pcm_hw_params_set_rate_last

/* export_buffer feature is never used except for aserver */
snd_pcm_hw_params_set_export_buffer
snd_pcm_hw_params_get_export_buffer

/* min, max */
snd_pcm_hw_params_set_period_time_min
snd_pcm_hw_params_set_period_time_max
snd_pcm_hw_params_set_period_time_minmax
snd_pcm_hw_params_set_period_time_first
snd_pcm_hw_params_set_period_time_last
snd_pcm_hw_params_set_period_size_min
snd_pcm_hw_params_set_period_size_max
snd_pcm_hw_params_set_period_size_minmax
snd_pcm_hw_params_set_period_size_first
snd_pcm_hw_params_set_period_size_last
snd_pcm_hw_params_set_period_size_integer
snd_pcm_hw_params_set_periods_min
snd_pcm_hw_params_set_periods_max
snd_pcm_hw_params_set_periods_minmax
snd_pcm_hw_params_set_periods_first
snd_pcm_hw_params_set_periods_last
snd_pcm_hw_params_set_buffer_time_min
snd_pcm_hw_params_set_buffer_time_max
snd_pcm_hw_params_set_buffer_time_minmax
snd_pcm_hw_params_set_buffer_time_first
snd_pcm_hw_params_set_buffer_time_last
snd_pcm_hw_params_set_buffer_size_min
snd_pcm_hw_params_set_buffer_size_max
snd_pcm_hw_params_set_buffer_size_minmax
snd_pcm_hw_params_set_buffer_size_first
snd_pcm_hw_params_set_buffer_size_last

/* tick_time is never used by any apps */
snd_pcm_hw_params_get_tick_time
snd_pcm_hw_params_get_tick_time_min
snd_pcm_hw_params_get_tick_time_max
snd_pcm_hw_params_test_tick_time
snd_pcm_hw_params_set_tick_time
snd_pcm_hw_params_set_tick_time_min
snd_pcm_hw_params_set_tick_time_max
snd_pcm_hw_params_set_tick_time_minmax
snd_pcm_hw_params_set_tick_time_near
snd_pcm_hw_params_set_tick_time_first
snd_pcm_hw_params_set_tick_time_last
snd_pcm_hw_params_get_min_align

/* sleep_min is never used by apps (except for aplay as an option) */
snd_pcm_sw_params_set_sleep_min
snd_pcm_sw_params_get_sleep_min

/* xfer_align is also superfluous */
snd_pcm_sw_params_set_xfer_align
snd_pcm_sw_params_get_xfer_align

/* subformat is not defined nor used */
snd_pcm_subformat_mask_sizeof
snd_pcm_subformat_mask_malloc
snd_pcm_subformat_mask_free
snd_pcm_subformat_mask_copy
snd_pcm_subformat_mask_none
snd_pcm_subformat_mask_any
snd_pcm_subformat_mask_test
snd_pcm_subformat_mask_empty
snd_pcm_subformat_mask_set
snd_pcm_subformat_mask_reset
snd_pcm_status_get_overrange
snd_pcm_subformat_name
snd_pcm_subformat_description

/* this can be in the whitelist */
snd_pcm_format_size

/* should use snd_pcm_format_set_silence() */
snd_pcm_format_silence
snd_pcm_format_silence_16
snd_pcm_format_silence_32
snd_pcm_format_silence_64

/* no real use of hook plugin (for apps) */
snd_pcm_hook_get_pcm
snd_pcm_hook_get_private
snd_pcm_hook_set_private
snd_pcm_hook_add
snd_pcm_hook_remove

/* no real use of meter plugin (for apps) */
snd_pcm_meter_get_bufsize
snd_pcm_meter_get_channels
snd_pcm_meter_get_rate
snd_pcm_meter_get_now
snd_pcm_meter_get_boundary
snd_pcm_meter_add_scope
snd_pcm_meter_search_scope
snd_pcm_scope_malloc
snd_pcm_scope_set_ops
snd_pcm_scope_set_name
snd_pcm_scope_get_name
snd_pcm_scope_get_callback_private
snd_pcm_scope_set_callback_private
snd_pcm_scope_s16_open
snd_pcm_scope_s16_get_channel_buffer

/* unfinished API, deprecated */
snd_spcm_init
snd_spcm_init_duplex
snd_spcm_init_get_params

/* deprecated */
snd_pcm_start_mode_name
snd_pcm_xrun_mode_name
snd_pcm_sw_params_set_start_mode
snd_pcm_sw_params_get_start_mode
snd_pcm_sw_params_set_xrun_mode
snd_pcm_sw_params_get_xrun_mode

/* timer_query is never used, so far */
snd_timer_query_open
snd_timer_query_open_lconf
snd_timer_query_close
snd_timer_query_next_device
snd_timer_query_info
snd_timer_query_params
snd_timer_query_status
snd_timer_open_lconf

/* ditto for timer_ginfo */
snd_timer_ginfo_sizeof
snd_timer_ginfo_malloc
snd_timer_ginfo_free
snd_timer_ginfo_copy
snd_timer_ginfo_set_tid
snd_timer_ginfo_get_tid
snd_timer_ginfo_get_flags
snd_timer_ginfo_get_card
snd_timer_ginfo_get_id
snd_timer_ginfo_get_name
snd_timer_ginfo_get_resolution
snd_timer_ginfo_get_resolution_min
snd_timer_ginfo_get_resolution_max
snd_timer_ginfo_get_clients
snd_timer_info_get_ticks

/* no use */
snd_seq_open_lconf

/* the sequencer filters are never used by any apps */
snd_seq_client_info_get_broadcast_filter
snd_seq_client_info_get_error_bounce
snd_seq_client_info_get_event_filter
snd_seq_client_info_set_broadcast_filter
snd_seq_client_info_set_error_bounce
snd_seq_client_info_set_event_filter

/* pool adjustment has little demand */
snd_seq_client_pool_sizeof
snd_seq_client_pool_malloc
snd_seq_client_pool_free
snd_seq_client_pool_copy
snd_seq_client_pool_get_client
snd_seq_client_pool_get_output_pool
snd_seq_client_pool_get_input_pool
snd_seq_client_pool_get_output_room
snd_seq_client_pool_get_output_free
snd_seq_client_pool_get_input_free
snd_seq_client_pool_set_output_pool
snd_seq_client_pool_set_input_pool
snd_seq_client_pool_set_output_room
snd_seq_get_client_pool
snd_seq_set_client_pool

/* ditto for queue_info */
snd_seq_queue_info_sizeof
snd_seq_queue_info_malloc
snd_seq_queue_info_free
snd_seq_queue_info_copy
snd_seq_queue_info_get_queue
snd_seq_queue_info_get_name
snd_seq_queue_info_get_owner
snd_seq_queue_info_get_locked
snd_seq_queue_info_get_flags
snd_seq_queue_info_set_name
snd_seq_queue_info_set_owner
snd_seq_queue_info_set_locked
snd_seq_queue_info_set_flags
snd_seq_create_queue
snd_seq_get_queue_info
snd_seq_set_queue_info
snd_seq_query_named_queue
snd_seq_get_queue_usage
snd_seq_set_queue_usage

/* the queue tempo skew isn't used */
snd_seq_queue_tempo_get_skew
snd_seq_queue_tempo_get_skew_base
snd_seq_queue_tempo_set_skew
snd_seq_queue_tempo_set_skew_base

/* no use */
snd_seq_queue_timer_sizeof
snd_seq_queue_timer_malloc
snd_seq_queue_timer_free
snd_seq_queue_timer_copy
snd_seq_queue_timer_get_queue
snd_seq_queue_timer_get_type
snd_seq_queue_timer_get_id
snd_seq_queue_timer_get_resolution
snd_seq_queue_timer_set_type
snd_seq_queue_timer_set_id
snd_seq_queue_timer_set_resolution
snd_seq_get_queue_timer
snd_seq_set_queue_timer

/* no use */
snd_seq_remove_events_sizeof
snd_seq_remove_events_malloc
snd_seq_remove_events_free
snd_seq_remove_events_copy
snd_seq_remove_events_get_condition
snd_seq_remove_events_get_queue
snd_seq_remove_events_get_time
snd_seq_remove_events_get_dest
snd_seq_remove_events_get_channel
snd_seq_remove_events_get_event_type
snd_seq_remove_events_get_tag
snd_seq_remove_events_set_condition
snd_seq_remove_events_set_queue
snd_seq_remove_events_set_time
snd_seq_remove_events_set_dest
snd_seq_remove_events_set_channel
snd_seq_remove_events_set_event_type
snd_seq_remove_events_set_tag
snd_seq_remove_events

/* superfluous trivial functions */
snd_seq_set_bit
snd_seq_change_bit
snd_seq_get_bit

/* no use */
snd_seq_set_client_event_filter
snd_seq_set_client_pool_output
snd_seq_set_client_pool_output_room
snd_seq_set_client_pool_input
snd_seq_reset_pool_output
snd_seq_reset_pool_input

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Blacklist (Re:  ALSA API as standards)
  2007-11-23 15:25   ` Blacklist (Re: ALSA API as standards) Takashi Iwai
@ 2007-11-26 18:36     ` John Utz
  0 siblings, 0 replies; 7+ messages in thread
From: John Utz @ 2007-11-26 18:36 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

Wow, Takashi!

What a mighty collection of stuff, tnx for taking the time to enumerate
all of this!

On Fri, 23 Nov 2007 16:25:42 +0100
"Takashi Iwai" <tiwai@suse.de> wrote:

> At Fri, 23 Nov 2007 15:54:38 +0100,
> I wrote:
> > 
> > At Wed, 21 Nov 2007 17:31:26 +0100,
> > I wrote:
> > > 
> > > What I'd like to do now are:
> > > 
> > > - create a list of "standard" functions to be passed to LSB
> > > - clean up and actually drop some non-used functions
> > > - remove some functions from export list (in Versions file)
> > > 
> > > I'll try to create a list.  Basically it'll be almost as same as
> > > the list of functions with count > 0, plus some related ones.
> > 
> > OK, here is the white list.  I paste it below at this time.
> > 
> > It doesn't include the new functions regarding TLV and dB level.
> > Also, some functions are not listed intentionally.  They will be
> > listed in the next mail.
> 
> Here it is, the black list.
> 
> These are functions that are not worth to be in the standard list.
> They are never used or shouldn't be used any more.  Some are functions
> / variables that are exported but supposed to be internal-only.
> 
> I think we can mark them deprecated and get rid of the header files in
> future.
> 
> 
> Takashi
> 
> ===
> 
> /* internal only */
> snd_shm_area_create
> snd_shm_area_share
> snd_shm_area_destroy
> 
> /* internal only */
> snd_dlopen
> snd_dlsym
> snd_dlclose
> 
> /* internal only */
> snd_user_file
> snd_dlsym_start
> 
> /* conf.c - no use */
> snd_config_load_override
> snd_config_update_r
> 
> /* internal */
> snd_config_search_alias_hooks
> snd_config_substitute
> 
> /* deprecated */
> snd_names_list
> snd_names_list_free
> 
> /* ctl - no use */
> snd_ctl_open_lconf
> /* no use, and they can be redundant (retrieved from *_get_id()) */
> snd_ctl_event_elem_get_numid
> snd_ctl_event_elem_get_interface
> snd_ctl_event_elem_get_device
> snd_ctl_event_elem_get_subdevice
> snd_ctl_event_elem_get_name
> snd_ctl_event_elem_get_index
> /* ditto */
> snd_ctl_elem_list_get_interface
> snd_ctl_elem_list_get_device
> snd_ctl_elem_list_get_subdevice
> snd_ctl_elem_list_get_index
> 
> /* dimension feature isn't properly used */
> snd_ctl_elem_info_get_dimensions
> snd_ctl_elem_info_get_dimension
> 
> /* no use, redundant */
> snd_ctl_elem_info_get_interface
> snd_ctl_elem_info_get_device
> snd_ctl_elem_info_get_subdevice
> snd_ctl_elem_info_get_index
> snd_ctl_elem_info_set_numid
> /* ditto */
> snd_ctl_elem_info_set_interface
> snd_ctl_elem_info_set_device
> snd_ctl_elem_info_set_subdevice
> snd_ctl_elem_info_set_name
> snd_ctl_elem_info_set_index
> /* ditto */
> snd_ctl_elem_value_get_interface
> snd_ctl_elem_value_get_device
> snd_ctl_elem_value_get_subdevice
> snd_ctl_elem_value_get_index
> /* ditto */
> snd_ctl_elem_value_set_numid
> snd_ctl_elem_value_set_interface
> snd_ctl_elem_value_set_device
> snd_ctl_elem_value_set_subdevice
> snd_ctl_elem_value_set_name
> snd_ctl_elem_value_set_index
> 
> /* a wrong symbol name */
> snd_ctl_elem_set_bytes
> 
> /* no use, redundant */
> snd_hctl_elem_get_numid
> snd_hctl_elem_get_interface
> snd_hctl_elem_get_device
> snd_hctl_elem_get_subdevice
> snd_hctl_elem_get_name
> snd_hctl_elem_get_index
> 
> /* deprecated */
> snd_ctl_set_power_state
> snd_ctl_get_power_state
> 
> /* deprecated */
> snd_sctl_build
> snd_sctl_free
> snd_sctl_install
> snd_sctl_remove
> 
> /* mixer class is never used properly */
> snd_mixer_class_unregister
> snd_mixer_class_register
> snd_mixer_add_elem
> snd_mixer_remove_elem
> snd_mixer_elem_new
> snd_mixer_elem_add
> snd_mixer_elem_remove
> snd_mixer_elem_free
> snd_mixer_elem_info
> snd_mixer_elem_value
> snd_mixer_elem_attach
> snd_mixer_elem_detach
> snd_mixer_elem_empty
> snd_mixer_elem_get_private
> snd_mixer_class_sizeof
> snd_mixer_class_malloc
> snd_mixer_class_free
> snd_mixer_class_copy
> snd_mixer_class_get_mixer
> snd_mixer_class_get_event
> snd_mixer_class_get_private
> snd_mixer_class_get_compare
> snd_mixer_class_set_event
> snd_mixer_class_set_private
> snd_mixer_class_set_private_free
> snd_mixer_class_set_compare
> 
> /* deprecated */
> snd_pcm_set_params
> snd_pcm_get_params
> 
> /* useless parameters, implemented on no driver properly */
> snd_pcm_hw_params_is_batch
> snd_pcm_hw_params_is_block_transfer
> snd_pcm_hw_params_can_overrange
> snd_pcm_hw_params_get_fifo_size
> 
> /* *_set_first() and *_set_last() are almost useless */
> snd_pcm_hw_params_set_access_first
> snd_pcm_hw_params_set_access_last
> snd_pcm_hw_params_set_format_first
> snd_pcm_hw_params_set_format_last
> 
> /* subformat is useless, so far; we have even no proper definition */
> snd_pcm_hw_params_get_subformat
> snd_pcm_hw_params_test_subformat
> snd_pcm_hw_params_set_subformat
> snd_pcm_hw_params_set_subformat_first
> snd_pcm_hw_params_set_subformat_last
> snd_pcm_hw_params_set_subformat_mask
> snd_pcm_hw_params_get_subformat_mask
> 
> /* set_min(), set_max(), set_minmax() are useless, too */
> snd_pcm_hw_params_set_channels_min
> snd_pcm_hw_params_set_channels_max
> snd_pcm_hw_params_set_channels_minmax
> snd_pcm_hw_params_set_channels_first
> snd_pcm_hw_params_set_channels_last
> snd_pcm_hw_params_set_rate_min
> snd_pcm_hw_params_set_rate_max
> snd_pcm_hw_params_set_rate_minmax
> snd_pcm_hw_params_set_rate_first
> snd_pcm_hw_params_set_rate_last
> 
> /* export_buffer feature is never used except for aserver */
> snd_pcm_hw_params_set_export_buffer
> snd_pcm_hw_params_get_export_buffer
> 
> /* min, max */
> snd_pcm_hw_params_set_period_time_min
> snd_pcm_hw_params_set_period_time_max
> snd_pcm_hw_params_set_period_time_minmax
> snd_pcm_hw_params_set_period_time_first
> snd_pcm_hw_params_set_period_time_last
> snd_pcm_hw_params_set_period_size_min
> snd_pcm_hw_params_set_period_size_max
> snd_pcm_hw_params_set_period_size_minmax
> snd_pcm_hw_params_set_period_size_first
> snd_pcm_hw_params_set_period_size_last
> snd_pcm_hw_params_set_period_size_integer
> snd_pcm_hw_params_set_periods_min
> snd_pcm_hw_params_set_periods_max
> snd_pcm_hw_params_set_periods_minmax
> snd_pcm_hw_params_set_periods_first
> snd_pcm_hw_params_set_periods_last
> snd_pcm_hw_params_set_buffer_time_min
> snd_pcm_hw_params_set_buffer_time_max
> snd_pcm_hw_params_set_buffer_time_minmax
> snd_pcm_hw_params_set_buffer_time_first
> snd_pcm_hw_params_set_buffer_time_last
> snd_pcm_hw_params_set_buffer_size_min
> snd_pcm_hw_params_set_buffer_size_max
> snd_pcm_hw_params_set_buffer_size_minmax
> snd_pcm_hw_params_set_buffer_size_first
> snd_pcm_hw_params_set_buffer_size_last
> 
> /* tick_time is never used by any apps */
> snd_pcm_hw_params_get_tick_time
> snd_pcm_hw_params_get_tick_time_min
> snd_pcm_hw_params_get_tick_time_max
> snd_pcm_hw_params_test_tick_time
> snd_pcm_hw_params_set_tick_time
> snd_pcm_hw_params_set_tick_time_min
> snd_pcm_hw_params_set_tick_time_max
> snd_pcm_hw_params_set_tick_time_minmax
> snd_pcm_hw_params_set_tick_time_near
> snd_pcm_hw_params_set_tick_time_first
> snd_pcm_hw_params_set_tick_time_last
> snd_pcm_hw_params_get_min_align
> 
> /* sleep_min is never used by apps (except for aplay as an option) */
> snd_pcm_sw_params_set_sleep_min
> snd_pcm_sw_params_get_sleep_min
> 
> /* xfer_align is also superfluous */
> snd_pcm_sw_params_set_xfer_align
> snd_pcm_sw_params_get_xfer_align
> 
> /* subformat is not defined nor used */
> snd_pcm_subformat_mask_sizeof
> snd_pcm_subformat_mask_malloc
> snd_pcm_subformat_mask_free
> snd_pcm_subformat_mask_copy
> snd_pcm_subformat_mask_none
> snd_pcm_subformat_mask_any
> snd_pcm_subformat_mask_test
> snd_pcm_subformat_mask_empty
> snd_pcm_subformat_mask_set
> snd_pcm_subformat_mask_reset
> snd_pcm_status_get_overrange
> snd_pcm_subformat_name
> snd_pcm_subformat_description
> 
> /* this can be in the whitelist */
> snd_pcm_format_size
> 
> /* should use snd_pcm_format_set_silence() */
> snd_pcm_format_silence
> snd_pcm_format_silence_16
> snd_pcm_format_silence_32
> snd_pcm_format_silence_64
> 
> /* no real use of hook plugin (for apps) */
> snd_pcm_hook_get_pcm
> snd_pcm_hook_get_private
> snd_pcm_hook_set_private
> snd_pcm_hook_add
> snd_pcm_hook_remove
> 
> /* no real use of meter plugin (for apps) */
> snd_pcm_meter_get_bufsize
> snd_pcm_meter_get_channels
> snd_pcm_meter_get_rate
> snd_pcm_meter_get_now
> snd_pcm_meter_get_boundary
> snd_pcm_meter_add_scope
> snd_pcm_meter_search_scope
> snd_pcm_scope_malloc
> snd_pcm_scope_set_ops
> snd_pcm_scope_set_name
> snd_pcm_scope_get_name
> snd_pcm_scope_get_callback_private
> snd_pcm_scope_set_callback_private
> snd_pcm_scope_s16_open
> snd_pcm_scope_s16_get_channel_buffer
> 
> /* unfinished API, deprecated */
> snd_spcm_init
> snd_spcm_init_duplex
> snd_spcm_init_get_params
> 
> /* deprecated */
> snd_pcm_start_mode_name
> snd_pcm_xrun_mode_name
> snd_pcm_sw_params_set_start_mode
> snd_pcm_sw_params_get_start_mode
> snd_pcm_sw_params_set_xrun_mode
> snd_pcm_sw_params_get_xrun_mode
> 
> /* timer_query is never used, so far */
> snd_timer_query_open
> snd_timer_query_open_lconf
> snd_timer_query_close
> snd_timer_query_next_device
> snd_timer_query_info
> snd_timer_query_params
> snd_timer_query_status
> snd_timer_open_lconf
> 
> /* ditto for timer_ginfo */
> snd_timer_ginfo_sizeof
> snd_timer_ginfo_malloc
> snd_timer_ginfo_free
> snd_timer_ginfo_copy
> snd_timer_ginfo_set_tid
> snd_timer_ginfo_get_tid
> snd_timer_ginfo_get_flags
> snd_timer_ginfo_get_card
> snd_timer_ginfo_get_id
> snd_timer_ginfo_get_name
> snd_timer_ginfo_get_resolution
> snd_timer_ginfo_get_resolution_min
> snd_timer_ginfo_get_resolution_max
> snd_timer_ginfo_get_clients
> snd_timer_info_get_ticks
> 
> /* no use */
> snd_seq_open_lconf
> 
> /* the sequencer filters are never used by any apps */
> snd_seq_client_info_get_broadcast_filter
> snd_seq_client_info_get_error_bounce
> snd_seq_client_info_get_event_filter
> snd_seq_client_info_set_broadcast_filter
> snd_seq_client_info_set_error_bounce
> snd_seq_client_info_set_event_filter
> 
> /* pool adjustment has little demand */
> snd_seq_client_pool_sizeof
> snd_seq_client_pool_malloc
> snd_seq_client_pool_free
> snd_seq_client_pool_copy
> snd_seq_client_pool_get_client
> snd_seq_client_pool_get_output_pool
> snd_seq_client_pool_get_input_pool
> snd_seq_client_pool_get_output_room
> snd_seq_client_pool_get_output_free
> snd_seq_client_pool_get_input_free
> snd_seq_client_pool_set_output_pool
> snd_seq_client_pool_set_input_pool
> snd_seq_client_pool_set_output_room
> snd_seq_get_client_pool
> snd_seq_set_client_pool
> 
> /* ditto for queue_info */
> snd_seq_queue_info_sizeof
> snd_seq_queue_info_malloc
> snd_seq_queue_info_free
> snd_seq_queue_info_copy
> snd_seq_queue_info_get_queue
> snd_seq_queue_info_get_name
> snd_seq_queue_info_get_owner
> snd_seq_queue_info_get_locked
> snd_seq_queue_info_get_flags
> snd_seq_queue_info_set_name
> snd_seq_queue_info_set_owner
> snd_seq_queue_info_set_locked
> snd_seq_queue_info_set_flags
> snd_seq_create_queue
> snd_seq_get_queue_info
> snd_seq_set_queue_info
> snd_seq_query_named_queue
> snd_seq_get_queue_usage
> snd_seq_set_queue_usage
> 
> /* the queue tempo skew isn't used */
> snd_seq_queue_tempo_get_skew
> snd_seq_queue_tempo_get_skew_base
> snd_seq_queue_tempo_set_skew
> snd_seq_queue_tempo_set_skew_base
> 
> /* no use */
> snd_seq_queue_timer_sizeof
> snd_seq_queue_timer_malloc
> snd_seq_queue_timer_free
> snd_seq_queue_timer_copy
> snd_seq_queue_timer_get_queue
> snd_seq_queue_timer_get_type
> snd_seq_queue_timer_get_id
> snd_seq_queue_timer_get_resolution
> snd_seq_queue_timer_set_type
> snd_seq_queue_timer_set_id
> snd_seq_queue_timer_set_resolution
> snd_seq_get_queue_timer
> snd_seq_set_queue_timer
> 
> /* no use */
> snd_seq_remove_events_sizeof
> snd_seq_remove_events_malloc
> snd_seq_remove_events_free
> snd_seq_remove_events_copy
> snd_seq_remove_events_get_condition
> snd_seq_remove_events_get_queue
> snd_seq_remove_events_get_time
> snd_seq_remove_events_get_dest
> snd_seq_remove_events_get_channel
> snd_seq_remove_events_get_event_type
> snd_seq_remove_events_get_tag
> snd_seq_remove_events_set_condition
> snd_seq_remove_events_set_queue
> snd_seq_remove_events_set_time
> snd_seq_remove_events_set_dest
> snd_seq_remove_events_set_channel
> snd_seq_remove_events_set_event_type
> snd_seq_remove_events_set_tag
> snd_seq_remove_events
> 
> /* superfluous trivial functions */
> snd_seq_set_bit
> snd_seq_change_bit
> snd_seq_get_bit
> 
> /* no use */
> snd_seq_set_client_event_filter
> snd_seq_set_client_pool_output
> snd_seq_set_client_pool_output_room
> snd_seq_set_client_pool_input
> snd_seq_reset_pool_output
> snd_seq_reset_pool_input
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: ALSA API as standards
  2007-11-23 14:54 ` Takashi Iwai
  2007-11-23 15:25   ` Blacklist (Re: ALSA API as standards) Takashi Iwai
@ 2007-11-29 20:55   ` Lennart Poettering
  2007-11-30  7:34     ` Clemens Ladisch
  1 sibling, 1 reply; 7+ messages in thread
From: Lennart Poettering @ 2007-11-29 20:55 UTC (permalink / raw)
  To: ALSA Development Mailing List

On Fri, 23.11.07 15:54, Takashi Iwai (tiwai@suse.de) wrote:

Just a few random comments:

> /* I/O */
> 
> snd_input_stdio_open
> snd_input_stdio_attach
> snd_input_buffer_open
> snd_input_close
> snd_input_scanf
> snd_input_gets
> snd_input_getc
> snd_input_ungetc
> 
> snd_output_stdio_open
> snd_output_stdio_attach
> snd_output_buffer_open
> snd_output_buffer_string
> snd_output_close
> snd_output_printf
> snd_output_vprintf
> snd_output_puts
> snd_output_putc
> snd_output_flush

May I ask why these are exported at all? The seem to be some kind of
STDOUT/STDIN abstraction, and have no place in a sound API I would
say. Especially not in any "standardized" version of it.

> snd_config
[...]
> snd_config_iterator_entry

Same here, why does parsing config files of ALSA need to be part of
the audio API? I see no need for this.

> snd_pcm_dump
> snd_pcm_dump_hw_setup
> snd_pcm_dump_sw_setup
> snd_pcm_dump_setup
> snd_pcm_hw_params_dump
> snd_pcm_sw_params_dump
> snd_pcm_status_dump

And these? They are not even documented, or am I blind?

Lennart

-- 
Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net         ICQ# 11060553
http://0pointer.net/lennart/           GnuPG 0x1A015CC4

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: ALSA API as standards
  2007-11-29 20:55   ` ALSA API as standards Lennart Poettering
@ 2007-11-30  7:34     ` Clemens Ladisch
  2007-11-30  9:19       ` Takashi Iwai
  0 siblings, 1 reply; 7+ messages in thread
From: Clemens Ladisch @ 2007-11-30  7:34 UTC (permalink / raw)
  To: alsa-devel

Lennart Poettering wrote:
> Just a few random comments:
> 
> > /* I/O */
> > 
> > snd_input_stdio_open
> > snd_input_stdio_attach
> > snd_input_buffer_open
> > snd_input_close
> > snd_input_scanf
> > snd_input_gets
> > snd_input_getc
> > snd_input_ungetc
> > 
> > snd_output_stdio_open
> > snd_output_stdio_attach
> > snd_output_buffer_open
> > snd_output_buffer_string
> > snd_output_close
> > snd_output_printf
> > snd_output_vprintf
> > snd_output_puts
> > snd_output_putc
> > snd_output_flush
> 
> May I ask why these are exported at all? The seem to be some kind of
> STDOUT/STDIN abstraction, and have no place in a sound API I would
> say. Especially not in any "standardized" version of it.

The configuration code uses these functions to read and write .conf
files.

It might be useful for an application to have some private ALSA config
and to let ALSA read it from a file or from a string, but I don't think
this is something that belongs in LSB.

> > snd_pcm_dump
> > snd_pcm_dump_hw_setup
> > snd_pcm_dump_sw_setup
> > snd_pcm_dump_setup
> > snd_pcm_hw_params_dump
> > snd_pcm_sw_params_dump
> > snd_pcm_status_dump
> 
> And these? They are not even documented, or am I blind?

Well, their documentation isn't less useful than that of most other
functions.  ;-(

These functions are very valuable when debugging.  I wouldn't want to
discourage anybody from using them.

If we include these functions, we'll have to include some of the
snd_output_* functions.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: ALSA API as standards
  2007-11-30  7:34     ` Clemens Ladisch
@ 2007-11-30  9:19       ` Takashi Iwai
  0 siblings, 0 replies; 7+ messages in thread
From: Takashi Iwai @ 2007-11-30  9:19 UTC (permalink / raw)
  To: alsa-devel

At Fri, 30 Nov 2007 08:34:00 +0100,
Clemens Ladisch wrote:
> 
> Lennart Poettering wrote:
> > Just a few random comments:
> > 
> > > /* I/O */
> > > 
> > > snd_input_stdio_open
> > > snd_input_stdio_attach
> > > snd_input_buffer_open
> > > snd_input_close
> > > snd_input_scanf
> > > snd_input_gets
> > > snd_input_getc
> > > snd_input_ungetc
> > > 
> > > snd_output_stdio_open
> > > snd_output_stdio_attach
> > > snd_output_buffer_open
> > > snd_output_buffer_string
> > > snd_output_close
> > > snd_output_printf
> > > snd_output_vprintf
> > > snd_output_puts
> > > snd_output_putc
> > > snd_output_flush
> > 
> > May I ask why these are exported at all? The seem to be some kind of
> > STDOUT/STDIN abstraction, and have no place in a sound API I would
> > say. Especially not in any "standardized" version of it.
> 
> The configuration code uses these functions to read and write .conf
> files.
> 
> It might be useful for an application to have some private ALSA config
> and to let ALSA read it from a file or from a string, but I don't think
> this is something that belongs in LSB.

Yeah, some are already used.  So, they need to be listed.
But, some of (directly-) unused functions were already removed from my
new list.

> > > snd_pcm_dump
> > > snd_pcm_dump_hw_setup
> > > snd_pcm_dump_sw_setup
> > > snd_pcm_dump_setup
> > > snd_pcm_hw_params_dump
> > > snd_pcm_sw_params_dump
> > > snd_pcm_status_dump
> > 
> > And these? They are not even documented, or am I blind?
> 
> Well, their documentation isn't less useful than that of most other
> functions.  ;-(
> 
> These functions are very valuable when debugging.  I wouldn't want to
> discourage anybody from using them.

snd_pcm_dump_*() are removed as they aren't used directly.
snd_pcm_dump() remains (it is already used).

The below is the revised version of white list.
The functions with '#' are to drop, and '*' are newly listed (but not
recommended to use).


Takashi

===

/* GLOBAL */

snd_asoundlib_version
snd_lib_error_set_handler
snd_strerror


/* I/O */

snd_input_stdio_open
snd_input_stdio_attach
snd_input_buffer_open
snd_input_close
# snd_input_scanf
# snd_input_gets
# snd_input_getc
# snd_input_ungetc

snd_output_stdio_open
snd_output_stdio_attach
snd_output_buffer_open
snd_output_buffer_string
snd_output_close
# snd_output_printf
# snd_output_vprintf
snd_output_puts
snd_output_putc
# snd_output_flush

/* CONIFG */

snd_config
snd_config_top
snd_config_load
snd_config_save
snd_config_update
snd_config_update_free_global

snd_config_search
snd_config_searchv
# snd_config_search_definition
# snd_config_expand
# snd_config_evaluate

snd_config_add
snd_config_delete
# snd_config_delete_compound_members
snd_config_copy
# snd_config_make
snd_config_make_integer
snd_config_make_integer64
# snd_config_make_real
snd_config_make_string
# snd_config_make_pointer
snd_config_make_compound
snd_config_imake_integer
snd_config_imake_integer64
# snd_config_imake_real
snd_config_imake_string
# snd_config_imake_pointer
snd_config_get_type

# snd_config_set_id
snd_config_set_integer
snd_config_set_integer64
# snd_config_set_real
snd_config_set_string
snd_config_set_ascii
# snd_config_set_pointer
snd_config_get_id
snd_config_get_integer
snd_config_get_integer64
# snd_config_get_real
# snd_config_get_ireal
snd_config_get_string
snd_config_get_ascii
# snd_config_get_pointer
# snd_config_test_id

snd_config_iterator_first
snd_config_iterator_next
snd_config_iterator_end
snd_config_iterator_entry


/* ASYNC */

snd_async_add_handler
snd_async_del_handler
# snd_async_handler_get_fd
# snd_async_handler_get_signo
snd_async_handler_get_callback_private

snd_async_add_ctl_handler
snd_async_handler_get_ctl

snd_async_add_pcm_handler
snd_async_handler_get_pcm

# snd_async_add_timer_handler
# snd_async_handler_get_timer

/* CONTROL / GLOBAL */

snd_card_load
snd_card_next
snd_card_get_index
snd_card_get_name
snd_card_get_longname

snd_device_name_hint
snd_device_name_free_hint
snd_device_name_get_hint

snd_ctl_open
snd_ctl_close
snd_ctl_nonblock
snd_ctl_poll_descriptors_count
snd_ctl_poll_descriptors
# snd_ctl_poll_descriptors_revents
snd_ctl_subscribe_events

snd_ctl_card_info
snd_ctl_elem_list
snd_ctl_elem_info
snd_ctl_elem_read
snd_ctl_elem_write
# snd_ctl_elem_lock
# snd_ctl_elem_unlock

snd_ctl_hwdep_next_device
snd_ctl_hwdep_info
snd_ctl_pcm_next_device
snd_ctl_pcm_info
# snd_ctl_pcm_prefer_subdevice
snd_ctl_rawmidi_next_device
snd_ctl_rawmidi_info
# snd_ctl_rawmidi_prefer_subdevice

snd_ctl_read
# snd_ctl_wait
snd_ctl_name
# snd_ctl_type

snd_ctl_elem_type_name
snd_ctl_elem_iface_name
# snd_ctl_event_type_name

snd_ctl_event_elem_get_mask
snd_ctl_event_elem_get_id

snd_ctl_elem_list_alloc_space
snd_ctl_elem_list_free_space

snd_ctl_elem_id_sizeof
snd_ctl_elem_id_malloc
snd_ctl_elem_id_free
snd_ctl_elem_id_clear
snd_ctl_elem_id_copy
snd_ctl_elem_id_get_numid
snd_ctl_elem_id_get_interface
snd_ctl_elem_id_get_device
snd_ctl_elem_id_get_subdevice
snd_ctl_elem_id_get_name
snd_ctl_elem_id_get_index
snd_ctl_elem_id_set_numid
snd_ctl_elem_id_set_interface
snd_ctl_elem_id_set_device
snd_ctl_elem_id_set_subdevice
snd_ctl_elem_id_set_name
snd_ctl_elem_id_set_index

snd_ctl_card_info_sizeof
snd_ctl_card_info_malloc
snd_ctl_card_info_free
snd_ctl_card_info_clear
snd_ctl_card_info_copy
snd_ctl_card_info_get_id
snd_ctl_card_info_get_driver
snd_ctl_card_info_get_name
snd_ctl_card_info_get_longname
snd_ctl_card_info_get_mixername
snd_ctl_card_info_get_components

snd_ctl_event_sizeof
snd_ctl_event_malloc
snd_ctl_event_free
snd_ctl_event_clear
snd_ctl_event_copy
# snd_ctl_event_get_type

snd_ctl_elem_list_sizeof
snd_ctl_elem_list_malloc
snd_ctl_elem_list_free
snd_ctl_elem_list_clear
snd_ctl_elem_list_copy
snd_ctl_elem_list_set_offset
snd_ctl_elem_list_get_used
snd_ctl_elem_list_get_count
snd_ctl_elem_list_get_id
# snd_ctl_elem_list_get_numid
snd_ctl_elem_list_get_name

snd_ctl_elem_info_sizeof
snd_ctl_elem_info_malloc
snd_ctl_elem_info_free
snd_ctl_elem_info_clear
snd_ctl_elem_info_copy
snd_ctl_elem_info_get_type
snd_ctl_elem_info_is_readable
snd_ctl_elem_info_is_writable
snd_ctl_elem_info_is_volatile
snd_ctl_elem_info_is_inactive
snd_ctl_elem_info_is_locked
# snd_ctl_elem_info_is_owner
snd_ctl_elem_info_is_user
# snd_ctl_elem_info_get_owner
snd_ctl_elem_info_get_count
snd_ctl_elem_info_get_min
snd_ctl_elem_info_get_max
snd_ctl_elem_info_get_step
snd_ctl_elem_info_get_min64
snd_ctl_elem_info_get_max64
snd_ctl_elem_info_get_step64
snd_ctl_elem_info_get_items
snd_ctl_elem_info_set_item
snd_ctl_elem_info_get_item_name
snd_ctl_elem_info_get_id
snd_ctl_elem_info_get_numid
snd_ctl_elem_info_get_name
snd_ctl_elem_info_set_id

snd_ctl_elem_add_integer
# snd_ctl_elem_add_integer64
snd_ctl_elem_add_boolean
snd_ctl_elem_add_iec958
snd_ctl_elem_remove

snd_ctl_elem_value_sizeof
snd_ctl_elem_value_malloc
snd_ctl_elem_value_free
snd_ctl_elem_value_clear
snd_ctl_elem_value_copy
snd_ctl_elem_value_get_id
# snd_ctl_elem_value_get_numid
# snd_ctl_elem_value_get_name
snd_ctl_elem_value_set_id
snd_ctl_elem_value_get_boolean
snd_ctl_elem_value_get_integer
snd_ctl_elem_value_get_integer64
snd_ctl_elem_value_get_enumerated
snd_ctl_elem_value_get_byte
snd_ctl_elem_value_set_boolean
snd_ctl_elem_value_set_integer
snd_ctl_elem_value_set_integer64
snd_ctl_elem_value_set_enumerated
snd_ctl_elem_value_set_byte
# snd_ctl_elem_value_set_bytes
snd_ctl_elem_value_get_bytes
snd_ctl_elem_value_get_iec958
snd_ctl_elem_value_set_iec958


snd_hctl_open
# snd_hctl_open_ctl
snd_hctl_close
# snd_hctl_nonblock
# snd_hctl_poll_descriptors_count
# snd_hctl_poll_descriptors
# snd_hctl_poll_descriptors_revents
# snd_hctl_get_count
# snd_hctl_set_compare

snd_hctl_first_elem
snd_hctl_last_elem
snd_hctl_find_elem
snd_hctl_set_callback
snd_hctl_set_callback_private
snd_hctl_get_callback_private
snd_hctl_load
snd_hctl_free
# snd_hctl_handle_events
# snd_hctl_name
# snd_hctl_wait
# snd_hctl_ctl

snd_hctl_elem_next
snd_hctl_elem_prev
snd_hctl_elem_info
snd_hctl_elem_read
snd_hctl_elem_write

# snd_hctl_elem_get_hctl

snd_hctl_elem_get_id
snd_hctl_elem_set_callback
snd_hctl_elem_get_callback_private
snd_hctl_elem_set_callback_private


/* MIXER */

snd_mixer_open
snd_mixer_close
snd_mixer_first_elem
snd_mixer_last_elem
snd_mixer_handle_events
snd_mixer_attach
# snd_mixer_attach_hctl
snd_mixer_detach
# snd_mixer_detach_hctl
# snd_mixer_get_hctl
snd_mixer_poll_descriptors_count
snd_mixer_poll_descriptors
snd_mixer_poll_descriptors_revents
snd_mixer_load
snd_mixer_free
snd_mixer_wait
# snd_mixer_set_compare
snd_mixer_set_callback
snd_mixer_get_callback_private
snd_mixer_set_callback_private
snd_mixer_get_count

snd_mixer_elem_next
snd_mixer_elem_prev
snd_mixer_elem_set_callback
snd_mixer_elem_get_callback_private
snd_mixer_elem_set_callback_private
snd_mixer_elem_get_type



snd_mixer_selem_channel_name
snd_mixer_selem_register
snd_mixer_selem_get_id
snd_mixer_selem_get_name
snd_mixer_selem_get_index
snd_mixer_find_selem
snd_mixer_selem_is_active
snd_mixer_selem_is_playback_mono
snd_mixer_selem_has_playback_channel
snd_mixer_selem_is_capture_mono
snd_mixer_selem_has_capture_channel
snd_mixer_selem_get_capture_group
snd_mixer_selem_has_common_volume
snd_mixer_selem_has_playback_volume
snd_mixer_selem_has_playback_volume_joined
snd_mixer_selem_has_capture_volume
snd_mixer_selem_has_capture_volume_joined
snd_mixer_selem_has_common_switch
snd_mixer_selem_has_playback_switch
snd_mixer_selem_has_playback_switch_joined
snd_mixer_selem_has_capture_switch
snd_mixer_selem_has_capture_switch_joined
snd_mixer_selem_has_capture_switch_exclusive

snd_mixer_selem_get_playback_volume
snd_mixer_selem_get_capture_volume
snd_mixer_selem_get_playback_switch
snd_mixer_selem_get_capture_switch
snd_mixer_selem_set_playback_volume
snd_mixer_selem_set_capture_volume
snd_mixer_selem_set_playback_volume_all
snd_mixer_selem_set_capture_volume_all
snd_mixer_selem_set_playback_switch
snd_mixer_selem_set_capture_switch
snd_mixer_selem_set_playback_switch_all
snd_mixer_selem_set_capture_switch_all
snd_mixer_selem_get_playback_volume_range
snd_mixer_selem_set_playback_volume_range
snd_mixer_selem_get_capture_volume_range
snd_mixer_selem_set_capture_volume_range

snd_mixer_selem_is_enumerated
snd_mixer_selem_is_enum_playback
snd_mixer_selem_is_enum_capture
snd_mixer_selem_get_enum_items
snd_mixer_selem_get_enum_item_name
snd_mixer_selem_get_enum_item
snd_mixer_selem_set_enum_item

snd_mixer_selem_id_sizeof
snd_mixer_selem_id_malloc
snd_mixer_selem_id_free
snd_mixer_selem_id_copy
snd_mixer_selem_id_get_name
snd_mixer_selem_id_get_index
snd_mixer_selem_id_set_name
snd_mixer_selem_id_set_index

/* HWDEP */

snd_hwdep_open
snd_hwdep_close
snd_hwdep_poll_descriptors
# snd_hwdep_poll_descriptors_revents
# snd_hwdep_nonblock
snd_hwdep_info
snd_hwdep_dsp_status
snd_hwdep_dsp_load
snd_hwdep_ioctl
snd_hwdep_write
snd_hwdep_read

snd_hwdep_info_sizeof
snd_hwdep_info_malloc
snd_hwdep_info_free
snd_hwdep_info_copy
snd_hwdep_info_get_device
snd_hwdep_info_get_card
snd_hwdep_info_get_id
snd_hwdep_info_get_name
snd_hwdep_info_get_iface
snd_hwdep_info_set_device

snd_hwdep_dsp_status_sizeof
snd_hwdep_dsp_status_malloc
snd_hwdep_dsp_status_free
snd_hwdep_dsp_status_copy
snd_hwdep_dsp_status_get_version
snd_hwdep_dsp_status_get_id
snd_hwdep_dsp_status_get_num_dsps
snd_hwdep_dsp_status_get_dsp_loaded
snd_hwdep_dsp_status_get_chip_ready

snd_hwdep_dsp_image_sizeof
snd_hwdep_dsp_image_malloc
snd_hwdep_dsp_image_free
snd_hwdep_dsp_image_copy
snd_hwdep_dsp_image_get_index
snd_hwdep_dsp_image_get_name
snd_hwdep_dsp_image_get_image
snd_hwdep_dsp_image_get_length
snd_hwdep_dsp_image_set_index
snd_hwdep_dsp_image_set_name
snd_hwdep_dsp_image_set_image
snd_hwdep_dsp_image_set_length

/* PCM */

snd_pcm_open
snd_pcm_open_lconf
snd_pcm_close
snd_pcm_name
snd_pcm_type
snd_pcm_stream
snd_pcm_poll_descriptors_count
snd_pcm_poll_descriptors
snd_pcm_poll_descriptors_revents
snd_pcm_nonblock
snd_pcm_info
snd_pcm_hw_params_current
snd_pcm_hw_params
snd_pcm_hw_free
snd_pcm_sw_params_current
snd_pcm_sw_params
snd_pcm_prepare
snd_pcm_reset
snd_pcm_status
snd_pcm_start
snd_pcm_drop
snd_pcm_drain
snd_pcm_pause
snd_pcm_state
snd_pcm_hwsync
snd_pcm_delay
snd_pcm_resume
snd_pcm_avail_update
snd_pcm_rewind
snd_pcm_forward
snd_pcm_writei
snd_pcm_readi
snd_pcm_writen
snd_pcm_readn
snd_pcm_wait
snd_pcm_link
snd_pcm_unlink
snd_pcm_recover


snd_pcm_info_sizeof
snd_pcm_info_malloc
snd_pcm_info_free
snd_pcm_info_copy
snd_pcm_info_get_device
snd_pcm_info_get_subdevice
snd_pcm_info_get_stream
snd_pcm_info_get_card
snd_pcm_info_get_id
snd_pcm_info_get_name
snd_pcm_info_get_subdevice_name
snd_pcm_info_get_class
# snd_pcm_info_get_subclass
snd_pcm_info_get_subdevices_count
snd_pcm_info_get_subdevices_avail
# snd_pcm_info_get_sync
snd_pcm_info_set_device
snd_pcm_info_set_subdevice
snd_pcm_info_set_stream

snd_pcm_hw_params_sizeof
snd_pcm_hw_params_malloc
snd_pcm_hw_params_free
snd_pcm_hw_params_copy
snd_pcm_hw_params_any
snd_pcm_hw_params_can_mmap_sample_resolution
snd_pcm_hw_params_is_double
snd_pcm_hw_params_can_pause
snd_pcm_hw_params_can_resume
snd_pcm_hw_params_is_half_duplex
snd_pcm_hw_params_is_joint_duplex
snd_pcm_hw_params_can_sync_start
snd_pcm_hw_params_get_rate_numden
snd_pcm_hw_params_get_sbits
snd_pcm_hw_params_get_access
snd_pcm_hw_params_test_access
snd_pcm_hw_params_set_access
snd_pcm_hw_params_set_access_mask
snd_pcm_hw_params_get_access_mask
snd_pcm_hw_params_get_format
snd_pcm_hw_params_test_format
snd_pcm_hw_params_set_format
snd_pcm_hw_params_set_format_mask
snd_pcm_hw_params_get_format_mask
snd_pcm_hw_params_get_channels
snd_pcm_hw_params_get_channels_min
snd_pcm_hw_params_get_channels_max
snd_pcm_hw_params_test_channels
snd_pcm_hw_params_set_channels
snd_pcm_hw_params_set_channels_near
snd_pcm_hw_params_get_rate
snd_pcm_hw_params_get_rate_min
snd_pcm_hw_params_get_rate_max
snd_pcm_hw_params_test_rate
snd_pcm_hw_params_set_rate
snd_pcm_hw_params_set_rate_near
snd_pcm_hw_params_set_rate_resample
snd_pcm_hw_params_get_rate_resample
snd_pcm_hw_params_get_period_time
snd_pcm_hw_params_get_period_time_min
snd_pcm_hw_params_get_period_time_max
snd_pcm_hw_params_test_period_time
snd_pcm_hw_params_set_period_time
snd_pcm_hw_params_set_period_time_near
snd_pcm_hw_params_get_period_size
snd_pcm_hw_params_get_period_size_min
snd_pcm_hw_params_get_period_size_max
snd_pcm_hw_params_test_period_size
snd_pcm_hw_params_set_period_size
snd_pcm_hw_params_set_period_size_near
snd_pcm_hw_params_get_periods
snd_pcm_hw_params_get_periods_min
snd_pcm_hw_params_get_periods_max
snd_pcm_hw_params_test_periods
snd_pcm_hw_params_set_periods
snd_pcm_hw_params_set_periods_near
snd_pcm_hw_params_set_periods_integer
snd_pcm_hw_params_get_buffer_time
snd_pcm_hw_params_get_buffer_time_min
snd_pcm_hw_params_get_buffer_time_max
snd_pcm_hw_params_test_buffer_time
snd_pcm_hw_params_set_buffer_time
snd_pcm_hw_params_set_buffer_time_near
snd_pcm_hw_params_get_buffer_size
snd_pcm_hw_params_get_buffer_size_min
snd_pcm_hw_params_get_buffer_size_max
snd_pcm_hw_params_test_buffer_size
snd_pcm_hw_params_set_buffer_size
snd_pcm_hw_params_set_buffer_size_near
* snd_pcm_hw_params_can_overrange
* snd_pcm_hw_params_get_subformat
* snd_pcm_hw_params_get_tick_time
* snd_pcm_hw_params_get_tick_time_max
* snd_pcm_hw_params_get_tick_time_min
* snd_pcm_hw_params_is_batch
* snd_pcm_hw_params_is_block_transfer
* snd_pcm_hw_params_set_periods_min

snd_pcm_sw_params_sizeof
snd_pcm_sw_params_malloc
snd_pcm_sw_params_free
snd_pcm_sw_params_copy
snd_pcm_sw_params_get_boundary
snd_pcm_sw_params_set_tstamp_mode
snd_pcm_sw_params_get_tstamp_mode
snd_pcm_sw_params_set_avail_min
snd_pcm_sw_params_get_avail_min
snd_pcm_sw_params_set_start_threshold
snd_pcm_sw_params_get_start_threshold
snd_pcm_sw_params_set_stop_threshold
snd_pcm_sw_params_get_stop_threshold
snd_pcm_sw_params_set_silence_threshold
snd_pcm_sw_params_get_silence_threshold
snd_pcm_sw_params_set_silence_size
snd_pcm_sw_params_get_silence_size
* snd_pcm_sw_params_set_sleep_min
* snd_pcm_sw_params_set_xfer_align

snd_pcm_access_mask_sizeof
snd_pcm_access_mask_malloc
snd_pcm_access_mask_free
snd_pcm_access_mask_copy
snd_pcm_access_mask_none
snd_pcm_access_mask_any
snd_pcm_access_mask_test
# snd_pcm_access_mask_empty
snd_pcm_access_mask_set
# snd_pcm_access_mask_reset

snd_pcm_format_mask_sizeof
snd_pcm_format_mask_malloc
snd_pcm_format_mask_free
snd_pcm_format_mask_copy
snd_pcm_format_mask_none
snd_pcm_format_mask_any
snd_pcm_format_mask_test
# snd_pcm_format_mask_empty
snd_pcm_format_mask_set
# snd_pcm_format_mask_reset


snd_pcm_status_sizeof
snd_pcm_status_malloc
snd_pcm_status_free
snd_pcm_status_copy
snd_pcm_status_get_state
snd_pcm_status_get_trigger_tstamp
# snd_pcm_status_get_trigger_htstamp
snd_pcm_status_get_tstamp
# snd_pcm_status_get_htstamp
snd_pcm_status_get_delay
snd_pcm_status_get_avail
snd_pcm_status_get_avail_max

snd_pcm_type_name
snd_pcm_stream_name
snd_pcm_access_name
snd_pcm_format_name
snd_pcm_format_description
snd_pcm_format_value
# snd_pcm_tstamp_mode_name
snd_pcm_state_name

snd_pcm_dump
# snd_pcm_dump_hw_setup
# snd_pcm_dump_sw_setup
# snd_pcm_dump_setup
snd_pcm_hw_params_dump
snd_pcm_sw_params_dump
snd_pcm_status_dump

snd_pcm_mmap_begin
snd_pcm_mmap_commit
snd_pcm_mmap_writei
snd_pcm_mmap_readi
snd_pcm_mmap_writen
snd_pcm_mmap_readn

snd_pcm_format_signed
snd_pcm_format_unsigned
snd_pcm_format_linear
snd_pcm_format_float
snd_pcm_format_little_endian
snd_pcm_format_big_endian
snd_pcm_format_cpu_endian
snd_pcm_format_width
snd_pcm_format_physical_width
snd_pcm_format_size
snd_pcm_build_linear_format
snd_pcm_format_set_silence
snd_pcm_bytes_to_frames
snd_pcm_frames_to_bytes
snd_pcm_bytes_to_samples
snd_pcm_samples_to_bytes
snd_pcm_area_silence
snd_pcm_areas_silence
snd_pcm_area_copy
snd_pcm_areas_copy




/* deprecated */

/* RAWMIDI */

snd_rawmidi_open
snd_rawmidi_close
snd_rawmidi_poll_descriptors_count
snd_rawmidi_poll_descriptors
snd_rawmidi_poll_descriptors_revents
snd_rawmidi_nonblock
# snd_rawmidi_name
# snd_rawmidi_type
# snd_rawmidi_stream
snd_rawmidi_drain
snd_rawmidi_drop
snd_rawmidi_write
snd_rawmidi_read

# snd_rawmidi_info
# snd_rawmidi_info_sizeof
# snd_rawmidi_info_malloc
# snd_rawmidi_info_free
# snd_rawmidi_info_copy
# snd_rawmidi_info_get_device
# snd_rawmidi_info_get_subdevice
# snd_rawmidi_info_get_stream
# snd_rawmidi_info_get_card
# snd_rawmidi_info_get_flags
# snd_rawmidi_info_get_id
# snd_rawmidi_info_get_name
# snd_rawmidi_info_get_subdevice_name
# snd_rawmidi_info_get_subdevices_count
# snd_rawmidi_info_get_subdevices_avail
# snd_rawmidi_info_set_device
# snd_rawmidi_info_set_subdevice
# snd_rawmidi_info_set_stream

# snd_rawmidi_params
# snd_rawmidi_params_current
# snd_rawmidi_params_sizeof
# snd_rawmidi_params_malloc
# snd_rawmidi_params_free
# snd_rawmidi_params_copy
# snd_rawmidi_params_set_buffer_size
# snd_rawmidi_params_get_buffer_size
# snd_rawmidi_params_set_avail_min
# snd_rawmidi_params_get_avail_min
# snd_rawmidi_params_set_no_active_sensing
# snd_rawmidi_params_get_no_active_sensing

# snd_rawmidi_status_sizeof
# snd_rawmidi_status_malloc
# snd_rawmidi_status_free
# snd_rawmidi_status_copy
# snd_rawmidi_status
# snd_rawmidi_status_get_tstamp
# snd_rawmidi_status_get_avail
# snd_rawmidi_status_get_xruns


/* TIMER */

snd_timer_open
snd_timer_close

snd_timer_poll_descriptors_count
snd_timer_poll_descriptors
# snd_timer_poll_descriptors_revents
snd_timer_info
snd_timer_params
snd_timer_status
snd_timer_start
snd_timer_stop
snd_timer_continue
snd_timer_read

snd_timer_id_sizeof
snd_timer_id_malloc
snd_timer_id_free
snd_timer_id_copy
snd_timer_id_set_class
snd_timer_id_get_class
snd_timer_id_set_sclass
snd_timer_id_get_sclass
snd_timer_id_set_card
snd_timer_id_get_card
snd_timer_id_set_device
snd_timer_id_get_device
snd_timer_id_set_subdevice
snd_timer_id_get_subdevice


snd_timer_info_sizeof
snd_timer_info_malloc
snd_timer_info_free
snd_timer_info_copy
# snd_timer_info_is_slave
snd_timer_info_get_card
snd_timer_info_get_id
snd_timer_info_get_name
snd_timer_info_get_resolution

# snd_timer_params_sizeof
# snd_timer_params_malloc
# snd_timer_params_free
# snd_timer_params_copy
# snd_timer_params_set_auto_start
# snd_timer_params_get_auto_start
# snd_timer_params_set_exclusive
# snd_timer_params_get_exclusive
# snd_timer_params_set_early_event
# snd_timer_params_get_early_event
# snd_timer_params_set_ticks
# snd_timer_params_get_ticks
# snd_timer_params_set_queue_size
# snd_timer_params_get_queue_size
# snd_timer_params_set_filter
# snd_timer_params_get_filter

# snd_timer_status_sizeof
# snd_timer_status_malloc
# snd_timer_status_free
# snd_timer_status_copy
# snd_timer_status_get_timestamp
# snd_timer_status_get_resolution
# snd_timer_status_get_lost
# snd_timer_status_get_overrun
# snd_timer_status_get_queue


/* SEQUENCER */

snd_seq_open
# snd_seq_name
# snd_seq_type
snd_seq_close
snd_seq_poll_descriptors_count
snd_seq_poll_descriptors
snd_seq_poll_descriptors_revents
snd_seq_nonblock
snd_seq_client_id

snd_seq_get_output_buffer_size
snd_seq_get_input_buffer_size
snd_seq_set_output_buffer_size
snd_seq_set_input_buffer_size

snd_seq_system_info_sizeof
snd_seq_system_info_malloc
snd_seq_system_info_free
snd_seq_system_info_copy
snd_seq_system_info_get_queues
snd_seq_system_info_get_clients
snd_seq_system_info_get_ports
# snd_seq_system_info_get_channels
# snd_seq_system_info_get_cur_clients
# snd_seq_system_info_get_cur_queues
snd_seq_system_info

snd_seq_client_info_sizeof
snd_seq_client_info_malloc
snd_seq_client_info_free
snd_seq_client_info_copy

snd_seq_client_info_get_client
snd_seq_client_info_get_type
snd_seq_client_info_get_name
snd_seq_client_info_get_num_ports
# snd_seq_client_info_get_event_lost

snd_seq_client_info_set_client
snd_seq_client_info_set_name

snd_seq_get_client_info
snd_seq_get_any_client_info
snd_seq_set_client_info
snd_seq_query_next_client

snd_seq_port_info_sizeof
snd_seq_port_info_malloc
snd_seq_port_info_free
snd_seq_port_info_copy

snd_seq_port_info_get_client
snd_seq_port_info_get_port
snd_seq_port_info_get_addr
snd_seq_port_info_get_name
snd_seq_port_info_get_capability
snd_seq_port_info_get_type
# snd_seq_port_info_get_midi_channels
# snd_seq_port_info_get_midi_voices
# snd_seq_port_info_get_synth_voices
# snd_seq_port_info_get_read_use
# snd_seq_port_info_get_write_use
# snd_seq_port_info_get_port_specified
# snd_seq_port_info_get_timestamping
# snd_seq_port_info_get_timestamp_real
# snd_seq_port_info_get_timestamp_queue

snd_seq_port_info_set_client
snd_seq_port_info_set_port
# snd_seq_port_info_set_addr
snd_seq_port_info_set_name
snd_seq_port_info_set_capability
snd_seq_port_info_set_type
# snd_seq_port_info_set_midi_channels
# snd_seq_port_info_set_midi_voices
# snd_seq_port_info_set_synth_voices
snd_seq_port_info_set_port_specified
snd_seq_port_info_set_timestamping
snd_seq_port_info_set_timestamp_real
snd_seq_port_info_set_timestamp_queue

snd_seq_create_port
snd_seq_delete_port
snd_seq_get_port_info
snd_seq_get_any_port_info
snd_seq_set_port_info
snd_seq_query_next_port

snd_seq_port_subscribe_sizeof
snd_seq_port_subscribe_malloc
snd_seq_port_subscribe_free
snd_seq_port_subscribe_copy

snd_seq_port_subscribe_get_sender
snd_seq_port_subscribe_get_dest
snd_seq_port_subscribe_get_queue
snd_seq_port_subscribe_get_exclusive
snd_seq_port_subscribe_get_time_update
snd_seq_port_subscribe_get_time_real

snd_seq_port_subscribe_set_sender
snd_seq_port_subscribe_set_dest
snd_seq_port_subscribe_set_queue
snd_seq_port_subscribe_set_exclusive
snd_seq_port_subscribe_set_time_update
snd_seq_port_subscribe_set_time_real

snd_seq_get_port_subscription
snd_seq_subscribe_port
snd_seq_unsubscribe_port

snd_seq_query_subscribe_sizeof
snd_seq_query_subscribe_malloc
snd_seq_query_subscribe_free
snd_seq_query_subscribe_copy
# snd_seq_query_subscribe_get_client
# snd_seq_query_subscribe_get_port
snd_seq_query_subscribe_get_root
# snd_seq_query_subscribe_get_type
snd_seq_query_subscribe_get_index
# snd_seq_query_subscribe_get_num_subs
snd_seq_query_subscribe_get_addr
snd_seq_query_subscribe_get_queue
snd_seq_query_subscribe_get_exclusive
snd_seq_query_subscribe_get_time_update
snd_seq_query_subscribe_get_time_real

# snd_seq_query_subscribe_set_client
# snd_seq_query_subscribe_set_port
snd_seq_query_subscribe_set_root
snd_seq_query_subscribe_set_type
snd_seq_query_subscribe_set_index
snd_seq_query_port_subscribers

snd_seq_alloc_named_queue
snd_seq_alloc_queue
snd_seq_free_queue

snd_seq_queue_status_sizeof
snd_seq_queue_status_malloc
snd_seq_queue_status_free
snd_seq_queue_status_copy
# snd_seq_queue_status_get_queue
# snd_seq_queue_status_get_events
snd_seq_queue_status_get_tick_time
snd_seq_queue_status_get_real_time
# snd_seq_queue_status_get_status
snd_seq_get_queue_status

snd_seq_queue_tempo_sizeof
snd_seq_queue_tempo_malloc
snd_seq_queue_tempo_free
snd_seq_queue_tempo_copy
# snd_seq_queue_tempo_get_queue
snd_seq_queue_tempo_get_tempo
snd_seq_queue_tempo_get_ppq
snd_seq_queue_tempo_set_tempo
snd_seq_queue_tempo_set_ppq
snd_seq_get_queue_tempo
snd_seq_set_queue_tempo

snd_seq_free_event
snd_seq_event_length
snd_seq_event_output
#snd_seq_event_output_buffer
snd_seq_event_output_direct
snd_seq_event_input
snd_seq_event_input_pending
snd_seq_drain_output
# snd_seq_event_output_pending
# snd_seq_extract_output
snd_seq_drop_output
snd_seq_drop_output_buffer
# snd_seq_drop_input
# snd_seq_drop_input_buffer

snd_seq_event_types

snd_seq_control_queue
snd_seq_create_simple_port
snd_seq_delete_simple_port
snd_seq_connect_from
snd_seq_connect_to
snd_seq_disconnect_from
snd_seq_disconnect_to
snd_seq_set_client_name
snd_seq_sync_output_queue

snd_seq_parse_address

snd_midi_event_new
# snd_midi_event_resize_buffer
snd_midi_event_free
snd_midi_event_init
snd_midi_event_reset_encode
snd_midi_event_reset_decode
# snd_midi_event_no_status
snd_midi_event_encode
snd_midi_event_encode_byte
snd_midi_event_decode

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-11-30 10:07 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-21 16:31 ALSA API as standards Takashi Iwai
2007-11-23 14:54 ` Takashi Iwai
2007-11-23 15:25   ` Blacklist (Re: ALSA API as standards) Takashi Iwai
2007-11-26 18:36     ` John Utz
2007-11-29 20:55   ` ALSA API as standards Lennart Poettering
2007-11-30  7:34     ` Clemens Ladisch
2007-11-30  9:19       ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.