⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 g711.c

📁 在SPI 平台优化好的G.711代码,保证好用
💻 C
📖 第 1 页 / 共 5 页
字号:

#line 194 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
typedef 
#line 203 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
enum  {
    
#line 196 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
TAG_NONE=0,
    TAG_XML_HEADER,
    TAG_COMMENT,
    TAG_OPEN,
    TAG_CLOSE,
    TAG_SINGLE,
    TAG_MAX
} E_TAG_TYPE;

typedef 
#line 211 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
struct S_XML_ATTRIBUTE {
    
#line 207 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
int line;
    char name[257];
    char value[257];
    struct S_XML_ATTRIBUTE *next;
} S_XML_ATTRIBUTE;

typedef 
#line 220 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
struct S_XML_TAG {
    
#line 215 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
E_TAG_TYPE type;
    int line;
    char name[257];
    char *data;
    struct S_XML_ATTRIBUTE *attributes;
} S_XML_TAG;

typedef 
#line 228 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
struct S_XML_BLOCK {
    
#line 224 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
struct S_XML_TAG start_tag;
    struct S_XML_TAG end_tag;
    struct S_XML_BLOCK *sub_blocks;
    struct S_XML_BLOCK *next;
} S_XML_BLOCK;

S_XML_BLOCK *read_xml(char *filename);
void dump_xml(S_XML_BLOCK *xml, int level);
void free_xml(S_XML_BLOCK *xml);

#line 240 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
typedef 
#line 245 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
enum  {
    
#line 242 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
PERF_STATE_INIT=0,
    PERF_STATE_START,
    PERF_STATE_STOP
} E_SPI_PERF_STATE_T;


typedef 
#line 263 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
struct SPI_PERF_T {
    
#line 250 "c:/spi_rapidev/tools/bin/../include/spi_support.h"
char name[41];
    E_SPI_PERF_STATE_T state;
    

unsigned int total_cnt;
    unsigned int hits;
    unsigned int max_cnt;
    

unsigned int prev_time;
    unsigned int elapsed_time;
    
unsigned int marker_id;
} SPI_PERF_T;

extern unsigned int cpu_count_get(void );
extern void spi_perf_start(SPI_PERF_T *p_perf);
extern void spi_perf_stop(SPI_PERF_T *p_perf);
extern void spi_perf_init(SPI_PERF_T *p_perf, char *name);
extern void spi_perf_add(SPI_PERF_T *p_perf_dst, SPI_PERF_T *p_perf_src);
extern void spi_perf_print(SPI_PERF_T *p_perf, int print_header);
extern void spi_perf_print_clocks();
extern void spi_perf_wait(float seconds);
extern float spi_perf_get_run_time(SPI_PERF_T *p_perf);
extern float spi_perf_get_cumulative_run_time(SPI_PERF_T *p_perf);

#line 35 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
typedef 

struct SPI_VEC8I_S {
    
#line 36 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
signed int lanes[16];
} SPI_VEC8I_T;

typedef 

struct SPI_VEC8U_S {
    
#line 40 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
unsigned int lanes[16];
} SPI_VEC8U_T;

typedef 

struct SPI_VEC16I_S {
    
#line 44 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
signed int lanes[16];
} SPI_VEC16I_T;

typedef 

struct SPI_VEC16U_S {
    
#line 48 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
unsigned int lanes[16];
} SPI_VEC16U_T;

typedef 

struct SPI_VECI_S {
    
#line 52 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
signed int lanes[16];
} SPI_VECI_T;

typedef 

struct SPI_VECU_S {
    
#line 56 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
unsigned int lanes[16];
} SPI_VECU_T;

#line 69 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
typedef 
#line 76 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
enum  {
    
#line 71 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
SCALAR_NONE=0,
    SCALAR_IN,
    SCALAR_OUT,
    SCALAR_IO,
    SCALAR_TYPE_MAX
} SPI_SCALAR_TYPE_E;


typedef 
#line 92 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
enum  {
    
#line 81 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
STREAM_NONE=0,
    STREAM_SEQ_IN,
    STREAM_SEQ_OUT,
    STREAM_COND_IN,
    STREAM_COND_OUT,
    STREAM_ARRAY_IN,
    STREAM_ARRAY_OUT,
    STREAM_ARRAY_IO,
    STREAM_LOAD,
    STREAM_STORE,
    STREAM_TYPE_MAX
} SPI_STREAM_TYPE_E;

#line 98 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
typedef 
#line 129 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
struct SPI_STREAM_COMMON_S {
    
#line 100 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
char name[65];
    int location;
    int end;
    int record_size;
    int record_count;
    int record_count_prev;
    int lrf_length;
    char *lrf;
    int slot;
    struct SPI_STREAM_S *next;
    struct SPI_STREAM_S *prev;
    int print_col;
    unsigned int modified;
    int record_count_sdr;
    int record_count_sdr_scrf_id;
    int sdr;
    int sdr_offset;
    int sdr_length;
    int sdr_scrf_id;
    int ok_to_reuse;
    int last_sdr;
    int mar;
    int mar_scrf_id;
    char *auto_inc_base;
    struct SPI_STREAM_S *overlap_begin;
    struct SPI_STREAM_S *overlap_end;
    int last_dma_cache_index;
    int must_wait;
    SPI_STREAM_TYPE_E load_type;
} SPI_STREAM_COMMON_T;

typedef 
#line 140 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
struct SPI_STREAM_S {
    
#line 133 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
int offset;
    int length;
    SPI_STREAM_TYPE_E type;
    int position;
    int word_position;
    int word_count;
    SPI_STREAM_COMMON_T *common;
} SPI_STREAM_T;

typedef unsigned int SPI_UCODE_T;

typedef 
#line 153 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
struct {
    
#line 146 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
int uc_reg;
    int sdr;
    int sdr_offset;
    int sdr_length;
    int sdr_location;
    int sdr_scrf_id;
    SPI_STREAM_T *str;
} SPI_STREAM_ARG_T;

typedef 
#line 161 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
struct {
    
#line 157 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
int uc_reg;
    SPI_SCALAR_TYPE_E type;
    void *value;
    int size;
} SPI_SCALAR_ARG_T;

typedef 
#line 185 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
struct SPI_KERNEL_S {
    
#line 165 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
char *name;
    SPI_UCODE_T *ucode;
    int ucode_location;
    int stream_arg_count;
    SPI_STREAM_ARG_T *stream_args;
    int scalar_arg_count;
    SPI_SCALAR_ARG_T *scalar_args;
    int sdrs[8];
    int next_reg;
    int sdr_count;
    int load_slot;
    unsigned int clustop_dep;
    int clustop_slot;
    int next_stream;
    int next_scalar;
    int arg_count;
    SPI_PERF_T dpu_timer;
    int uar;
    int uar_scrf_id;
    int ucode_offset;
} SPI_KERNEL_T;

#line 192 "c:/spi_rapidev/tools/bin/../include/spi_runtime.h"
void _spi_set_arch(char *arch);
void _spi_set_lanes(int lanes);
int _spi_get_lanes(void );
void _spi_set_lrf_size_per_lane(int bytes);
int _spi_get_lrf_size_per_lane(void );
void _spi_barrier(void );
void _spi_cond_read(SPI_STREAM_T *str, char *data, int *do_read);
void _spi_cond_write(SPI_STREAM_T *str, char *data, int *do_write);
int _spi_count(SPI_STREAM_T *str);
int _spi_eos(SPI_STREAM_T *str);
void _spi_array_read(SPI_STREAM_T *str, char *data, int *index);
void _spi_array_write(SPI_STREAM_T *str, char *data, int *index);
void _spi_read(SPI_STREAM_T *str, char *data);
void _spi_write(SPI_STREAM_T *str, char *data);
int _spi_load(SPI_STREAM_T *str, int str_offset, int str_length, void *data, int offset, int count, int group, int stride, int transpose, SPI_STREAM_T *indexes, int index_offset, int index_length);
int _spi_store(SPI_STREAM_T *str, int str_offset, int str_length, void *data, int offset, int count, int group, int stride, int transpose, SPI_STREAM_T *indexes, int index_offset, int index_length);
int _spi_open(SPI_STREAM_T *str, char *name, int record_size, int lrf_size, int location);
void _spi_close(SPI_STREAM_T *str);


void _spi_close_all();

int _spi_check_lrf_allocation(void );
void _spi_print_lrf_allocation(void );
int _spi_lrf_allocated();
void _spi_kernel_begin(SPI_KERNEL_T *kern);
void _spi_kernel_load(SPI_KERNEL_T *kern, int location);


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -