/* * Copyright (c) 2021 Huawei Device Co., Ltd. * * HDF is dual licensed: you can use it either under the terms of * the GPL, or the BSD license, at your option. * See the LICENSE file in the root of this repository for complete details. */ #ifndef AUDIO_DSP_IF_H #define AUDIO_DSP_IF_H #include "audio_host.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* __cplusplus */ /** * @brief Defines Dsp device name and data. * * @since 1.0 * @version 1.0 */ struct DspDevice { const char *devDspName; /**< Dsp device name */ struct DspData *devData; /**< Dsp module private data */ struct HdfDeviceObject *device; /**< HDF device */ struct DListHead list; /**< Dsp list */ }; /** * @brief Defines Dsp operation function set. * * @since 1.0 * @version 1.0 */ struct AudioDspOps { /** * @brief Defines Dsp device start up function. * * @param audioCard Indicates a audio card device. * @param dsp Indicates a dsp device. * * @return Returns 0 if Dsp device start up success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Startup)(const struct AudioCard *audioCard, const struct DspDevice *dsp); /** * @brief Defines Dsp device hardware param function. * * @param audioCard Indicates a audio card device. * @param param Indicates pcm params set. * * @return Returns 0 if dsp param set success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*HwParams)(const struct AudioCard *audioCard, const struct AudioPcmHwParams *param); /** * @brief Defines Dsp device trigger function. * * @param audioCard Indicates a audio card device. * @param dsp Indicates a dsp device. * * @return Returns 0 if dsp device trigger success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Trigger)(struct AudioCard *audioCard, int, struct DspDevice *dsp); }; /** * @brief Defines Dsp host in audio driver. * * @since 1.0 * @version 1.0 */ struct DspHost { struct IDeviceIoService service; /**< Services provided by dsp */ struct HdfDeviceObject *device; /**< HDF device */ void *priv; /**< Dsp private data interface */ }; /** * @brief Defines dsp private data. * * @since 1.0 * @version 1.0 */ struct DspData { const char *drvDspName; /**< Dsp driver name */ /** * @brief Defines Dsp device init. * * @param dsp Indicates a Dsp device. * * @return Returns 0 if dsp device init success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*DspInit)(const struct DspDevice *dsp); /** * @brief Defines Dsp device msgs read. * * @param dsp Indicates a dsp device. * @param msgs Indicates transfer msgs data. * @param len Indicates msgs length. * * @return Returns 0 if dsp device read msgs success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Read)(const struct DspDevice *dsp, const void *msgs, const uint32_t len); /** * @brief Defines Dsp device msgs write. * * @param dsp Indicates a dsp device. * @param msgs Indicates transfer msgs data. * @param len Indicates msgs length. * * @return Returns 0 if dsp device write msgs success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Write)(const struct DspDevice *dsp, const void *msgs, const uint32_t len); /** * @brief Defines Dsp device decode. * * @param audioCard Indicates a audio card. * @param buf Indicates decode pcm buffer data. * @param dsp Indicates a dsp device. * * @return Returns 0 if Dsp device decode success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Decode)(const struct AudioCard *audioCard, const uint8_t *buf, const struct DspDevice *dsp); /** * @brief Defines Dsp device encode. * * @param audioCard audioCard Indicates a audio card. * @param buf Indicates encode pcm buffer data. * @param dsp Indicates a dsp device. * * @return Returns 0 if Dsp device encode success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Encode)(const struct AudioCard *audioCard, const uint8_t *buf, const struct DspDevice *dsp); /** * @brief Defines Dsp device equalizer. * * @param audioCard audioCard Indicates a audio card. * @param buf Indicates equalizer pcm buffer data. * @param dsp Indicates a dsp device. * * @return Returns 0 if Dsp device equalizer success; returns a non-zero value otherwise. * * @since 1.0 * @version 1.0 */ int32_t (*Equalizer)(const struct AudioCard *audioCard, const uint8_t *buf, const struct DspDevice *dsp); }; #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif