summaryrefslogtreecommitdiff
path: root/cras/src/server/cras_alsa_mixer.h
diff options
context:
space:
mode:
Diffstat (limited to 'cras/src/server/cras_alsa_mixer.h')
-rw-r--r--cras/src/server/cras_alsa_mixer.h235
1 files changed, 0 insertions, 235 deletions
diff --git a/cras/src/server/cras_alsa_mixer.h b/cras/src/server/cras_alsa_mixer.h
deleted file mode 100644
index 878fbe54..00000000
--- a/cras/src/server/cras_alsa_mixer.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef _CRAS_ALSA_MIXER_H
-#define _CRAS_ALSA_MIXER_H
-
-#include "cras_types.h"
-
-/* cras_alsa_mixer represents the alsa mixer interface for an alsa card. It
- * houses the volume and mute controls as well as playback switches for
- * headphones and mic.
- */
-
-struct mixer_control;
-struct cras_alsa_mixer;
-struct cras_volume_curve;
-struct cras_card_config;
-struct mixer_name;
-struct ucm_section;
-
-/* Creates a cras_alsa_mixer instance for the given alsa device.
- * Args:
- * card_name - Name of the card to open a mixer for. This is an alsa name of
- * the form "hw:X" where X ranges from 0 to 31 inclusive.
- * Returns:
- * A pointer to the newly created cras_alsa_mixer which must later be freed
- * by calling cras_alsa_mixer_destroy. The control in the mixer is not added
- * yet.
- */
-struct cras_alsa_mixer *cras_alsa_mixer_create(const char *card_name);
-
-/* Adds controls to a cras_alsa_mixer from the given UCM section.
- * Args:
- * cmix - A pointer to cras_alsa_mixer.
- * section - A UCM section.
- * Returns:
- * 0 on success. Negative error code otherwise.
- */
-int cras_alsa_mixer_add_controls_in_section(struct cras_alsa_mixer *cmix,
- struct ucm_section *section);
-
-/* Adds main volume controls to a cras_alsa_mixer from the given list of mixer
- * names of main volume controls.
- * Args:
- * cmix - A pointer to cras_alsa_mixer.
- * mixer_names - A list of mixer names from the given UCM MainVolumeNames.
- * Returns:
- * 0 on success. Negative error code otherwise.
- */
-int cras_alsa_mixer_add_main_volume_control_by_name(
- struct cras_alsa_mixer *cmix, struct mixer_name *mixer_names);
-
-/* Adds controls to a cras_alsa_mixer instance by name matching.
- * Args:
- * cmix - A pointer to cras_alsa_mixer.
- * extra_controls - A list array of extra mixer control names, always added.
- * coupled_controls - A list of coupled mixer control names.
- * Returns:
- * 0 on success. Other error code if error happens.
- */
-int cras_alsa_mixer_add_controls_by_name_matching(
- struct cras_alsa_mixer *cmix, struct mixer_name *extra_controls,
- struct mixer_name *coupled_controls);
-
-/* Destroys a cras_alsa_mixer that was returned from cras_alsa_mixer_create.
- * Args:
- * cras_mixer - The cras_alsa_mixer pointer returned from
- * cras_alsa_mixer_create.
- */
-void cras_alsa_mixer_destroy(struct cras_alsa_mixer *cras_mixer);
-
-/* Returns if the mixer has any main volume control. */
-int cras_alsa_mixer_has_main_volume(const struct cras_alsa_mixer *cras_mixer);
-
-/* Returns if the mixer control supports volume adjust. */
-int cras_alsa_mixer_has_volume(const struct mixer_control *mixer_control);
-
-/* Sets the output volume for the device associated with this mixer.
- * Args:
- * cras_mixer - The mixer to set the volume on.
- * dBFS - The volume level as dB * 100. dB is a normally a negative quantity
- * specifying how much to attenuate.
- * mixer_output - The mixer output to set if not all attenuation can be
- * obtained from the main controls. Can be null.
- */
-void cras_alsa_mixer_set_dBFS(struct cras_alsa_mixer *cras_mixer, long dBFS,
- struct mixer_control *mixer_output);
-
-/* Gets the volume range of the mixer in dB.
- * Args:
- * cras_mixer - The mixer to get the volume range.
- */
-long cras_alsa_mixer_get_dB_range(struct cras_alsa_mixer *cras_mixer);
-
-/* Gets the volume range of the mixer output in dB.
- * Args:
- * mixer_output - The mixer output to get the volume range.
- */
-long cras_alsa_mixer_get_output_dB_range(struct mixer_control *mixer_output);
-
-/* Sets the capture gain for the device associated with this mixer.
- * Args:
- * cras_mixer - The mixer to set the volume on.
- * dBFS - The capture gain level as dB * 100. dB can be a positive or a
- * negative quantity specifying how much gain or attenuation to apply.
- * mixer_input - The specific mixer control for input node, can be null.
- */
-void cras_alsa_mixer_set_capture_dBFS(struct cras_alsa_mixer *cras_mixer,
- long dBFS,
- struct mixer_control *mixer_input);
-
-/* Gets the minimum allowed setting for capture gain.
- * Args:
- * cmix - The mixer to set the capture gain on.
- * mixer_input - The additional input mixer control, mainly specified
- * in ucm config. Can be null.
- * Returns:
- * The minimum allowed capture gain in dBFS * 100.
- */
-long cras_alsa_mixer_get_minimum_capture_gain(
- struct cras_alsa_mixer *cmix, struct mixer_control *mixer_input);
-
-/* Gets the maximum allowed setting for capture gain.
- * Args:
- * cmix - The mixer to set the capture gain on.
- * mixer_input - The additional input mixer control, mainly specified
- * in ucm config. Can be null.
- * Returns:
- * The maximum allowed capture gain in dBFS * 100.
- */
-long cras_alsa_mixer_get_maximum_capture_gain(
- struct cras_alsa_mixer *cmix, struct mixer_control *mixer_input);
-
-/* Sets the playback switch for the device.
- * Args:
- * cras_mixer - Mixer to set the playback switch.
- * muted - 1 if muted, 0 if not.
- * mixer_output - The output specific mixer control to mute/unmute. Pass NULL
- * to skip it.
- */
-void cras_alsa_mixer_set_mute(struct cras_alsa_mixer *cras_mixer, int muted,
- struct mixer_control *mixer_output);
-
-/* Sets the capture switch for the device.
- * Args:
- * cras_mixer - Mixer to set the volume in.
- * muted - 1 if muted, 0 if not.
- * mixer_input - The mixer input to mute if no card mute.
- */
-void cras_alsa_mixer_set_capture_mute(struct cras_alsa_mixer *cras_mixer,
- int muted,
- struct mixer_control *mixer_input);
-
-/* Invokes the provided callback once for each output (input).
- * The callback will be provided with a reference to the control
- * that can be queried to see what the control supports.
- * Args:
- * cras_mixer - Mixer to set the volume in.
- * cb - Function to call for each output (input).
- * cb_arg - Argument to pass to cb.
- */
-typedef void (*cras_alsa_mixer_control_callback)(struct mixer_control *control,
- void *arg);
-void cras_alsa_mixer_list_outputs(struct cras_alsa_mixer *cras_mixer,
- cras_alsa_mixer_control_callback cb,
- void *cb_arg);
-
-void cras_alsa_mixer_list_inputs(struct cras_alsa_mixer *cras_mixer,
- cras_alsa_mixer_control_callback cb,
- void *cb_arg);
-
-/* Gets the name of a given control. */
-const char *
-cras_alsa_mixer_get_control_name(const struct mixer_control *control);
-
-/* Returns the mixer control matching the given direction and name.
- * Args:
- * cras_mixer - Mixer to search for a control.
- * dir - Control's direction (OUTPUT or INPUT).
- * name - Name to search for.
- * create_missing - When non-zero, attempt to create a new control with
- * the given name.
- * Returns:
- * A pointer to the matching mixer control, or NULL if none found.
- */
-struct mixer_control *
-cras_alsa_mixer_get_control_matching_name(struct cras_alsa_mixer *cras_mixer,
- enum CRAS_STREAM_DIRECTION dir,
- const char *name, int create_missing);
-
-/* Returns the mixer control associated with the given section.
- * The control is the one that matches 'mixer_name', or if that is not defined
- * then it will be the control matching 'section->name', based on the
- * coupled mixer controls.
- * Args:
- * cras_mixer - Mixer to search for a control.
- * section - Associated UCM section.
- * Returns:
- * A pointer to the associated mixer control, or NULL if none found.
- */
-struct mixer_control *
-cras_alsa_mixer_get_control_for_section(struct cras_alsa_mixer *cras_mixer,
- const struct ucm_section *section);
-
-/* Finds the output that matches the given string. Used to match Jacks to Mixer
- * elements.
- * Args:
- * cras_mixer - Mixer to search for a control.
- * name - The name to match against the controls.
- * Returns:
- * A pointer to the output with a mixer control that matches "name".
- */
-struct mixer_control *
-cras_alsa_mixer_get_output_matching_name(struct cras_alsa_mixer *cras_mixer,
- const char *name);
-
-/* Finds the mixer control for that matches the control name of input control
- * name specified in ucm config.
- * Args:
- * cras_mixer - Mixer to search for a control.
- * name - Name of the control to search for.
- * Returns:
- * A pointer to the input with a mixer control that matches "name".
- */
-struct mixer_control *
-cras_alsa_mixer_get_input_matching_name(struct cras_alsa_mixer *cras_mixer,
- const char *name);
-
-/* Sets the given output active or inactive. */
-int cras_alsa_mixer_set_output_active_state(struct mixer_control *output,
- int active);
-
-#endif /* _CRAS_ALSA_MIXER_H */