Add basic change for v1453
Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/include/ql_v2/ql_audio_pcm.h b/mbtk/include/ql_v2/ql_audio_pcm.h
new file mode 100755
index 0000000..0ee2941
--- /dev/null
+++ b/mbtk/include/ql_v2/ql_audio_pcm.h
@@ -0,0 +1,525 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @file ql_audio_pcm.h
+ @brief playback or capture API
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+ EDIT HISTORY
+ This section contains comments describing changes made to the file.
+ Notice that changes are listed in reverse chronological order.
+ $Header: $
+ when who what, where, why
+ -------- --- ----------------------------------------------------------
+ 2021-11-03 dameng.lin Created .
+-------------------------------------------------------------------------------------------------*/
+
+#ifndef __QL_AUDIO_PCM_H
+#define __QL_AUDIO_PCM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+
+typedef int ql_audio_handle_t;
+
+
+typedef enum QL_AUDIO_STREAM_FORMAT_ENUM
+{
+ QL_AUDIO_STREAM_FORMAT_PCM = 1, /**< PCM*/
+ QL_AUDIO_STREAM_FORMAT_MP3, /**< MP3*/
+ QL_AUDIO_STREAM_FORMAT_AMR, /**< AMR*/
+ QL_AUDIO_STREAM_FORMAT_AMRNB, /**< AMR-NB*/
+ QL_AUDIO_STREAM_FORMAT_AMRWB, /**< AMR-WB*/
+}QL_AUDIO_STREAM_FORMAT_E;
+
+
+/**The structure of PCM configuration parameters*/
+typedef struct ql_audio_pcm_config_struct
+{
+ /** Each sound card maintains a hardware buffer to store audio data. The hardware
+ * buffer is divided into several periods. The sound card uses period as a unit to transmit data,
+ * and one period stores some data frames.period_size sets the size of periods in hardware buffer.
+ * When period_size is set to 0,it means that the period size is calculated by the bottom layer to
+ * obtain a default value. If period_size is not 0, the recommended value is 128–960. The larger the
+ * perod_size is, the larger the kernel overhead is
+ */
+ uint32_t period_size;
+ /** period_count indicates the count of period that the data occupies, when the application reads data
+ * from or writes data to the hardware buffer.The size of the data that the application reads from or
+ * writes to the hardware buffer every time equals period_count multiplied by period_size. The hardware
+ * buffer has a maximum of 8 periods by default. The recommended value of period_count is 1–3.
+ */
+ uint32_t period_count;
+ uint32_t num_channels; /**< Number of channels. 1 Mono 2 Stereo*/
+ uint32_t sample_rate; /**< Sampling rate. A PCM interface supports 8000 and 16000,and an I2s interface supports 48000.Unit:Hz*/
+ uint32_t pcm_format; /**< PCM data format.Presently supports 2 only,which means 16-bit little endian format*/
+} ql_audio_pcm_config_t;
+
+#define QL_AUDIO_INVALID_HANDLE ((ql_audio_handle_t)(void *)NULL)
+
+typedef enum
+{
+ QL_AUDIO_STREAM_DIRECTION_PLAYBACK = 0,
+ QL_AUDIO_STREAM_DIRECTION_CAPTURE,
+ QL_AUDIO_STREAM_DIRECTION_MAX
+}QL_AUDIO_STREAM_DIRECTION_E;
+
+
+/**The enumeration of the front end PCM device types*/
+typedef enum QL_AUDIO_FE_PCM_DEV_ENUM
+{
+ QL_AUDIO_FE_PCM_DEV_MIN = -1,
+ QL_AUDIO_FE_PCM_DEV_MULTIMEDIA1 = 0, /**< The first PCM device available for general-purpose audio playback and capturing.*/
+ QL_AUDIO_FE_PCM_DEV_MULTIMEDIA2 = 1, /**< The sencond PCM device available for general-purpose audio playback and capturing.*/
+ QL_AUDIO_FE_PCM_DEV_MULTIMEDIA3 = 2, /**< The third PCM device available for general-purpose audio playback and capturing.*/
+ QL_AUDIO_FE_PCM_DEV_MAX
+} QL_AUDIO_FE_PCM_DEV_E;
+
+
+
+typedef enum QL_AUDIO_BE_DAI_ENUM
+{
+ QL_AUDIO_BE_DAI_MIN = -1,
+ QL_AUDIO_BE_DAI_PLAYBACK_PRI_PCM = 0, /**< Play back audio to the first PCM interface.*/
+ QL_AUDIO_BE_DAI_PLAYBACK_VOICE_TX, /**< play back audio to the voice call uplink*/
+ QL_AUDIO_BE_DAI_CAPTURE_PRI_PCM, /**< Capture audio from the first PCM interface*/
+ QL_AUDIO_BE_DAI_CAPTURE_VOICE_UL, /**< Capture voice stream from voice call uplink*/
+ QL_AUDIO_BE_DAI_CAPTURE_VOICE_DL, /**< Capture voice stream from voice call downlink*/
+ QL_AUDIO_BE_DAI_MAX
+}QL_AUDIO_BE_DAI_E;
+
+#define QL_AUDIO_BE_DAI_MASK_PLAYBACK_PRI_PCM (1 << QL_AUDIO_BE_DAI_PLAYBACK_PRI_PCM)
+#define QL_AUDIO_BE_DAI_MASK_PLAYBACK_VOICE_TX (1 << QL_AUDIO_BE_DAI_PLAYBACK_VOICE_TX)
+#define QL_AUDIO_BE_DAI_MASK_CAPTURE_PRI_PCM (1 << QL_AUDIO_BE_DAI_CAPTURE_PRI_PCM)
+#define QL_AUDIO_BE_DAI_MASK_CAPTURE_VOICE_UL (1 << QL_AUDIO_BE_DAI_CAPTURE_VOICE_UL)
+#define QL_AUDIO_BE_DAI_MASK_CAPTURE_VOICE_DL (1 << QL_AUDIO_BE_DAI_CAPTURE_VOICE_DL)
+
+/**The enumeration of audio playback state*/
+typedef enum QL_AUDIO_PLAYBACK_STATE_ENUM
+{
+ QL_AUDIO_PLAYBACK_STATE_CLOSE = 0, /**< Close*/
+ QL_AUDIO_PLAYBACK_STATE_OPEN, /**< Open*/
+ QL_AUDIO_PLAYBACK_STATE_PREPARE, /**< Ready*/
+ QL_AUDIO_PLAYBACK_STATE_PLAYING, /**< Playing*/
+ QL_AUDIO_PLAYBACK_STATE_FINISHED, /**< Finished*/
+ QL_AUDIO_PLAYBACK_STATE_PAUSE, /**< Pause*/
+ QL_AUDIO_PLAYBACK_STATE_ERROR, /**< Error*/
+} QL_AUDIO_PLAYBACK_STATE_E;
+
+/**The enumeration of audio capture state*/
+typedef enum QL_AUDIO_CAPTURE_STATE_ENUM
+{
+ QL_AUDIO_CAPTURE_STATE_CLOSE = 0, /**< Close*/
+ QL_AUDIO_CAPTURE_STATE_OPEN, /**< Open*/
+ QL_AUDIO_CAPTURE_STATE_PREPARE, /**< Prepare*/
+ QL_AUDIO_CAPTURE_STATE_CAPTURING, /**< Capturing*/
+ QL_AUDIO_CAPTURE_STATE_FINISHED, /**< Finished*/
+ QL_AUDIO_CAPTURE_STATE_PAUSE, /**< Pause*/
+ QL_AUDIO_CAPTURE_STATE_ERROR, /**< Error*/
+} QL_AUDIO_CAPTURE_STATE_E;
+
+
+#define QL_AUDIO_PLAYBACK_NONBLOCK 0
+#define QL_AUDIO_PLAYBACK_BLOCK 1
+
+
+/**
+ @brief The audio capturing state callback function
+ @param handle Recording handle,which is the return value of ql_audio_capture_open().
+ @param params Parameters carried by the callback function
+ @param state The current audio capturing state.
+*/
+typedef int (*ql_audio_capture_state_cb_f)(ql_audio_handle_t handle, void *params, QL_AUDIO_CAPTURE_STATE_E state);
+
+/**
+ @brief The playback state callback function
+ @param handle Playback handle, which is the return value of ql_audio_playback_open().
+ @param params Parameters carried by the callback function.
+ @param state The current playback state.
+*/
+typedef int (*ql_audio_playback_state_cb_f)(ql_audio_handle_t handle, void *params, QL_AUDIO_PLAYBACK_STATE_E state);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function opens the audio context for playback.
+
+ @param[in] fe_pcm_dev Front end PCM device type. defined by QL_AUDIO_FE_PCM_DEV_E
+ @param[in] be_dai_mask Backend digit audio interface mask, support follow:
+ QL_AUDIO_BE_DAI_MASK_PLAYBACK_PRI_PCM Play back audio to the 1 st PCM interface
+ QL_AUDIO_BE_DAI_MASK_PLAYBACK_SEC_PCM Play back audio to the 2 nd PCM interface
+ QL_AUDIO_BE_DAI_MASK_PLAYBACK_PRI_I2S Play back audio to the 1 st I2S interface
+ QL_AUDIO_BE_DAI_MASK_PLAYBACK_SEC_I2S Play back audio to the 2 nd I2S interface
+ QL_AUDIO_BE_DAI_MASK_PLAYBACK_VOICE_TX Play back audio to the voice call uplink
+
+ @retval A_valid_handle Successful execution.
+ @retval QL_AUDIO_INVALID_HANDLE Failed execution.Invalid handle
+ */
+/*-----------------------------------------------------------------------------------------------*/
+ql_audio_handle_t ql_audio_playback_open(QL_AUDIO_FE_PCM_DEV_E fe_pcm_dev, uint32_t be_dai_mask);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function prepares for audio file playback.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+ @param[in] file_name The name of the file to be played back.
+ @param[in] pcm_config Pcm config, including sample rate, channel nums,
+ defined by ql_audio_pcm_config_t. Generally, it is NULL.
+ @param[in] playback_state_cb Callback function to report the current playback state
+ The states defined by QL_AUDIO_PLAYBACK_STATE_E
+ @param[in] params Parameters carried by the callback function.
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval QL_ERR_INVALID_STATE Failed execution. Invalid state.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @note Before calling this function, call ql_audio_playback_open() first to obtain a handle.
+ If an audio file is expected to be played back, call this function first to prepare for
+ the playback and then ql_audio_playback_play() to start playback.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_file_prepare(ql_audio_handle_t handle,
+ const char *file_name,
+ ql_audio_pcm_config_t *pcm_config,
+ ql_audio_playback_state_cb_f playback_state_cb,
+ void *params);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function prepares for audio stream playback.
+
+ @param[in] handle The API ql_audio_playback_open return results
+ @param[in] pcm_config Pcm config, including sample rate, channel nums,
+ defined by ql_audio_pcm_config_t. If it is NULL, the API use defaule value.
+ @param[in] playback_state_cb Callback function to report the current playback state.
+ @param[in] params Parameters carried by the callback function.
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval QL_ERR_INVALID_STATE Failed execution. Invalid state.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @note Before calling this function, call ql_audio_playback_open() first to obtain a handle.
+ If an audio stream is expected to be played back, call this function first to prepare
+ for the audio stream playback and then ql_audio_playback_push_stream() to start playback.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_stream_prepare(ql_audio_handle_t handle,
+ ql_audio_pcm_config_t *pcm_config,
+ ql_audio_playback_state_cb_f playback_state_cb,
+ void *params);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function starts playback of the audio data.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval QL_ERR_INVALID_STATE Failed execution. Invalid state.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @note Before calling this function, call ql_audio_playback_file_prepare() first to prepare the audio file
+ to be played back, otherwise the audio data cannot be played back successfully.This function also supports
+ playback of audio stream data. In this case, call ql_audio_playback_stream_prepare() first to prepare
+ the audio stream to be played back, then this function to start playback, and finally
+ ql_audio_playback_push_stream() to play back the audio stream in buffer.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_play(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function plays back the audio stream in buffer.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+ @param[in] stream_buf The buffer that stores the audio stream to be played back.
+ @param[in] buf_size The size of the audio stream to be played back. Unit: Byte.
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval QL_ERR_INVALID_STATE Failed execution. Invalid state.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_push_stream(ql_audio_handle_t handle, void *stream_buf, uint32_t buf_size);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function pauses the audio playback.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_pause(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function resumes the audio playback.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_resume(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function stops the audio playback.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_stop(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function closes the audio context for playback.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @Note After an audio playback ends, you must call this function to close the audio context,
+ otherwise subsequent call of ql_audio_playback_open() will fail.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_close(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function gets the audio playback state.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+ @param[out] playback_state the current audio playback state, defined by QL_AUDIO_PLAYBACK_STATE_E
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_get_state(ql_audio_handle_t handle, QL_AUDIO_PLAYBACK_STATE_E *playback_state);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function sets the block flag for audio playback.
+
+ @param[in] handle The handle returned by ql_audio_playback_open().
+ @param[in] flags block flag, including QL_AUDIO_PLAYBACK_NONBLOCK and QL_AUDIO_PLAYBACK_BLOCK
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval QL_ERR_INVALID_ARG Illegal argument.
+ @retval QL_ERR_INVALID_STATE Failed execution. Invalid state.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @note Call this function as per the function call sequence below, to make sure the audio playback can be blocked successfully.
+ 1) ql_audio_playback_open()
+ 2) ql_audio_playback_set_block_flag()
+ 3) ql_audio_playback_file_prepare()
+ 4) ql_audio_playback_play()
+ If the audio playback is blocked successfully by calling ql_audio_playback_set_block_flag(), then
+ 1) If you dial a call or there is an incoming call during the audio playback, the playback will pause;
+ after the call is hung up, the playback resumes automatically.
+ 2) During a voice call, no function can be used to realize audio playback. In this case,
+ the call of ql_auido_palyback_file_prepare() will fail, which means audio files cannot be played back.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_playback_set_block_flag(ql_audio_handle_t handle, uint8_t flags);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function opens the audio context for capturing.
+
+ @param[in] fe_pcm_dev Front end PCM device type.
+ @param[in] be_dai_mask Back end DAI mask,support follow:
+ QL_AUDIO_BE_DAI_MASK_CAPTURE_PRI_PCM
+ QL_AUDIO_BE_DAI_MASK_CAPTURE_VOICE_UL
+ QL_AUDIO_BE_DAI_MASK_CAPTURE_VOICE_DL
+
+@retval A_valid_handle Successful execution
+@retval QL_AUDIO_INVALID_HANDLE Failed execution.Invalid handle
+ */
+/*-----------------------------------------------------------------------------------------------*/
+ql_audio_handle_t ql_audio_capture_open(QL_AUDIO_FE_PCM_DEV_E fe_pcm_dev, uint32_t be_dai_mask);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function prepares for audio file capturing.
+
+ @param[in] handle The handle returned by ql_audio_capture_open().
+ @param[in] file_name The name of the audio file to be captured.
+ @param[in] type The format of the audio data in the audio file.
+ @param[in] pcm_config Pcm config, including sample rate, channel nums,
+ defined by ql_audio_pcm_config_t, If it is NULL, the API use defaule value
+ @param[in] capture_state_cb Callback function to report the current audio capturing state.
+ @param[in] params Parameters carried by the callback function.
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval QL_ERR_INVALID_STATE Failed execution. Invalid state.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @note Before calling this function, call ql_audio_capture_open() first to obtain a handle.
+ If an audio file is expected to be captured, call this function first to prepare for the audio file
+ capturing and then ql_audio_capture_record() to start capturing.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_capture_file_prepare(ql_audio_handle_t handle,
+ const char *file_name,
+ QL_AUDIO_STREAM_FORMAT_E type,
+ ql_audio_pcm_config_t *pcm_config,
+ ql_audio_capture_state_cb_f capture_state_cb,
+ void *params);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function prepares for audio stream capturing.
+
+ @param[in] handle This function prepares for audio stream capturing.
+ @param[in] pcm_config PCM configuration parameters.
+ @param[in] capture_state_cb Callback function to report the current audio capturing state.
+ @param[in] params Parameters carried by the callback function.
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval QL_ERR_INVALID_STATE Failed execution. Invalid state.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @note Before calling this function, call ql_audio_capture_open() first to obtain a handle.
+ If an audio stream is expected to be captured, call this function first to prepare for
+ the audio stream capturing and then ql_audio_capture_push_stream() to start capturing.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_capture_stream_prepare(ql_audio_handle_t handle,
+ ql_audio_pcm_config_t *pcm_config,
+ ql_audio_capture_state_cb_f capture_state_cb,
+ void *params);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function starts to capture the audio data.
+
+ @param[in] handle The handle returned by ql_audio_capture_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval QL_ERR_INVALID_STATE Failed execution. Invalid state.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @note Before calling this function, call ql_audio_capture_file_prepare() first to prepare the audio
+ file to be captured, otherwise the audio data cannot be captured successfully.This function also
+ supports capturing of audio stream data. In this case, call ql_audio_capture_stream_prepare()
+ first to prepare the audio stream to be captured, then this function to start capturing,
+ and finally ql_audio_capture_pull_stream() to capture the audio stream in buffer.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_capture_record(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function captures the audio stream data to the buffer.
+
+ @param[in] handle The handle returned by ql_audio_capture_open().
+ @param[out] stream_buf The buffer that stores the audio stream data to be captured.
+ @param[in] buf_size Buffer size. Unit: Byte.
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_capture_pull_stream(ql_audio_handle_t handle, void *stream_buf, uint32_t buf_size);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function pauses the audio capturing.
+
+ @param[in] handle The handle returned by ql_audio_capture_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_capture_pause(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function resumes the audio capturing.
+
+ @param[in] handle The handle returned by ql_audio_capture_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_capture_resume(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function stops the audio capturing.
+
+ @param[in] handle The handle returned by ql_audio_capture_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+
+ @note Calling this function will stop audio capturing regardless of whether the capturing is in
+ progress or paused,and the capturing cannot be resumed after it is stopped.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_capture_stop(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function closes the audio context for capturing.
+
+ @param[in] handle The handle returned by ql_audio_capture_open().
+
+ @retval QL_ERR_OK Successful execution.
+ @retval QL_ERR_INVALID_HANDLE Failed execution. Invalid handle.
+ @retval Others Failed execution. See ql_type.h for error codes.
+ @note After audio capturing ends, you must call this function to close the audio context,
+ otherwise subsequent call of ql_audio_capture_open() will fail.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_audio_capture_close(ql_audio_handle_t handle);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+ @brief This function gets the current audio capturing state.
+
+ @param[in] handle The handle returned by ql_audio_capture_open().
+ @param[out] capture_state The current audio capturing state.
+ */
+/*-----------------------------------------------------------------------------------------------*/
+void ql_audio_capture_get_state(ql_audio_handle_t handle, QL_AUDIO_CAPTURE_STATE_E *capture_state);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
+