blob: 17a2ef79665d2778b1cf3400e495cbbc38ac18aa [file] [log] [blame]
/*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause-Clear
*/
#ifndef CUSTOM_VA_INTERFACE_H
#define CUSTOM_VA_INTERFACE_H
#include "VoiceUIInterface.h"
#include "SoundTriggerEngine.h"
class CustomVAInterface: public VoiceUIInterface {
public:
CustomVAInterface(std::shared_ptr<VUIStreamConfig> sm_cfg);
~CustomVAInterface();
static int32_t ParseSoundModel(std::shared_ptr<VUIStreamConfig> sm_cfg,
struct pal_st_sound_model *sound_model,
st_module_type_t &first_stage_type,
std::vector<sm_pair_t> &model_list);
int32_t ParseRecognitionConfig(Stream *s,
struct pal_st_recognition_config *config) override;
void GetWakeupConfigs(Stream *s,
void **config, uint32_t *size) override;
void GetBufferingConfigs(Stream *s,
uint32_t *hist_duration,
uint32_t *preroll_duration) override;
void GetSecondStageConfLevels(Stream *s,
listen_model_indicator_enum type,
uint32_t *level) override;
void SetSecondStageDetLevels(Stream *s,
listen_model_indicator_enum type,
uint32_t level) override;
int32_t ParseDetectionPayload(void *event, uint32_t size) override;
Stream* GetDetectedStream() override;
void* GetDetectionEventInfo() override;
int32_t GenerateCallbackEvent(Stream *s,
struct pal_st_recognition_event **event,
uint32_t *event_size, bool detection) override;
void ProcessLab(void *data, uint32_t size) {}
void UpdateFTRTData(void *data, uint32_t size) {}
bool IsQCWakeUpConfigUsed() { return use_qc_wakeup_config_; }
protected:
int32_t ParseOpaqueConfLevels(struct sound_model_info *info,
void *opaque_conf_levels,
uint32_t version,
uint8_t **out_conf_levels,
uint32_t *out_num_conf_levels);
int32_t FillConfLevels(struct sound_model_info *info,
struct pal_st_recognition_config *config,
uint8_t **out_conf_levels,
uint32_t *out_num_conf_levels);
int32_t FillOpaqueConfLevels(uint32_t model_id,
const void *sm_levels_generic,
uint8_t **out_payload,
uint32_t *out_payload_size,
uint32_t version);
int32_t ParseDetectionPayloadPDK(void *event_data);
int32_t ParseDetectionPayloadGMM(void *event_data);
void UpdateKeywordIndex(uint64_t kwd_start_timestamp,
uint64_t kwd_end_timestamp,
uint64_t ftrt_start_timestamp);
void PackEventConfLevels(struct sound_model_info *sm_info,
uint8_t *opaque_data);
void FillCallbackConfLevels(struct sound_model_info *sm_info,
uint8_t *opaque_data,
uint32_t det_keyword_id,
uint32_t best_conf_level);
void CheckAndSetDetectionConfLevels(Stream *s);
bool use_qc_wakeup_config_ = false;
uint32_t conf_levels_intf_version_;
st_confidence_levels_info *st_conf_levels_;
st_confidence_levels_info_v2 *st_conf_levels_v2_;
struct detection_event_info detection_event_info_;
struct detection_event_info_pdk detection_event_info_multi_model_;
uint32_t det_model_id_;
uint8_t *custom_event_;
uint32_t custom_event_size_;
};
#endif