xref: /aosp_15_r20/external/libopus/dnn/pitchdnn.h (revision a58d3d2adb790c104798cd88c8a3aff4fa8b82cc)
1*a58d3d2aSXin Li #ifndef PITCHDNN_H
2*a58d3d2aSXin Li #define PITCHDNN_H
3*a58d3d2aSXin Li 
4*a58d3d2aSXin Li 
5*a58d3d2aSXin Li typedef struct PitchDNN PitchDNN;
6*a58d3d2aSXin Li 
7*a58d3d2aSXin Li #include "pitchdnn_data.h"
8*a58d3d2aSXin Li 
9*a58d3d2aSXin Li #define PITCH_MIN_PERIOD 32
10*a58d3d2aSXin Li #define PITCH_MAX_PERIOD 256
11*a58d3d2aSXin Li 
12*a58d3d2aSXin Li #define NB_XCORR_FEATURES (PITCH_MAX_PERIOD-PITCH_MIN_PERIOD)
13*a58d3d2aSXin Li 
14*a58d3d2aSXin Li 
15*a58d3d2aSXin Li typedef struct {
16*a58d3d2aSXin Li   PitchDNN model;
17*a58d3d2aSXin Li   float gru_state[GRU_1_STATE_SIZE];
18*a58d3d2aSXin Li   float xcorr_mem1[(NB_XCORR_FEATURES + 2)*2];
19*a58d3d2aSXin Li   float xcorr_mem2[(NB_XCORR_FEATURES + 2)*2*8];
20*a58d3d2aSXin Li   float xcorr_mem3[(NB_XCORR_FEATURES + 2)*2*8];
21*a58d3d2aSXin Li } PitchDNNState;
22*a58d3d2aSXin Li 
23*a58d3d2aSXin Li 
24*a58d3d2aSXin Li void pitchdnn_init(PitchDNNState *st);
25*a58d3d2aSXin Li int pitchdnn_load_model(PitchDNNState *st, const void *data, int len);
26*a58d3d2aSXin Li 
27*a58d3d2aSXin Li float compute_pitchdnn(
28*a58d3d2aSXin Li     PitchDNNState *st,
29*a58d3d2aSXin Li     const float *if_features,
30*a58d3d2aSXin Li     const float *xcorr_features,
31*a58d3d2aSXin Li     int arch
32*a58d3d2aSXin Li     );
33*a58d3d2aSXin Li 
34*a58d3d2aSXin Li #endif
35