| /* 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_DSP_H_ |
| #define CRAS_DSP_H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include "cras_dsp_pipeline.h" |
| |
| struct cras_dsp_context; |
| |
| /* Starts the dsp subsystem. It starts a thread internally to load the |
| * plugins. This should be called before other functions. |
| * Args: |
| * filename - The ini file where the dsp plugin graph should be read from. |
| */ |
| void cras_dsp_init(const char *filename); |
| |
| /* Stops the dsp subsystem. */ |
| void cras_dsp_stop(); |
| |
| /* Creates a dsp context. The context holds a pipeline and its |
| * parameters. To use the pipeline in the context, first use |
| * cras_dsp_load_pipeline() to load it and then use |
| * cras_dsp_get_pipeline() to lock it for access. |
| * Args: |
| * sample_rate - The sampling rate of the pipeline. |
| * purpose - The purpose of the pipeline, "playback" or "capture". |
| * Returns: |
| * A pointer to the dsp context. |
| */ |
| struct cras_dsp_context *cras_dsp_context_new(int sample_rate, |
| const char *purpose); |
| |
| /* Frees a dsp context. */ |
| void cras_dsp_context_free(struct cras_dsp_context *ctx); |
| |
| /* Sets a configuration string variable in the context. */ |
| void cras_dsp_set_variable_string(struct cras_dsp_context *ctx, const char *key, |
| const char *value); |
| |
| /* Sets a configuration boolean variable in the context. */ |
| void cras_dsp_set_variable_boolean(struct cras_dsp_context *ctx, |
| const char *key, char value); |
| |
| /* Loads the pipeline to the context. This should be called again when |
| * new values of configuration variables may change the plugin |
| * graph. The actual loading happens in another thread to avoid |
| * blocking the audio thread. */ |
| void cras_dsp_load_pipeline(struct cras_dsp_context *ctx); |
| |
| /* Loads a mock pipeline of source directly connects to sink, of given |
| * number of channels. |
| */ |
| void cras_dsp_load_mock_pipeline(struct cras_dsp_context *ctx, |
| unsigned int num_channels); |
| |
| /* Locks the pipeline in the context for access. Returns NULL if the |
| * pipeline is still being loaded or cannot be loaded. */ |
| struct pipeline *cras_dsp_get_pipeline(struct cras_dsp_context *ctx); |
| |
| /* Releases the pipeline in the context. This must be called in pair |
| * with cras_dsp_get_pipeline() once the client finishes using the |
| * pipeline. This should be called in the same thread as |
| * cras_dsp_get_pipeline() was called. */ |
| void cras_dsp_put_pipeline(struct cras_dsp_context *ctx); |
| |
| /* Re-reads the ini file and reloads all pipelines in the system. */ |
| void cras_dsp_reload_ini(); |
| |
| /* Dump current dsp information to syslog. */ |
| void cras_dsp_dump_info(); |
| |
| /* Number of channels output. */ |
| unsigned int cras_dsp_num_output_channels(const struct cras_dsp_context *ctx); |
| |
| /* Number of channels input. */ |
| unsigned int cras_dsp_num_input_channels(const struct cras_dsp_context *ctx); |
| |
| #ifdef __cplusplus |
| } /* extern "C" */ |
| #endif |
| |
| #endif /* CRAS_DSP_H_ */ |