├── FILELIST ├── README.md ├── libviperfx_x64_linux.so ├── viperfx_intf.c └── viperfx_intf.h /FILELIST: -------------------------------------------------------------------------------- 1 | libviperfx_x64_linux.so -- x86_64 Linux, libc.so.6 2 | 3 | TO BE UPDATED. 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # viperfx_core_binary 2 | 这里将会发布适配各种操作系统和平台的ViPER音效核心,以闭源二进制的方式存在。
3 | 你可以参照使用示例来使用ViPER音效核心。在使用这里的文件时,请务必接受下述内容:
4 | 1、本仓库里的内容为不开源内容,绝对禁止以GPL协议来使用。
5 | 2、本仓库里的内容绝对禁止用在商业用途,包括相关联的广告用途、品牌用途等。
6 | 3、使用后,请在软件醒目位置标示“蝰蛇声学”的版权。
7 | 4、当你对本仓库的内容以任何形式重分发时,请携带这里所述的所有内容,确保使用者或接收者明确这些条款。
8 |
9 | 当前支持的操作系统和平台:
10 | x86_64 Linux,libc.so.6
11 | 待增加...
12 | 参考使用实例:
13 | gst-plugin-viperfx, https://github.com/vipersaudio/gst-plugin-viperfx
14 |
15 |
16 | This repository contains the ViPER FX core which supports various operating systems and platforms.
17 | Please be sure to read the following terms when using the ViPER FX core:
18 | 1.The ViPER FX cores are all in formed of binary, so MUST NOT use it under GPL license.
19 | 2.The ViPER FX cores are all restrict disallowed in commercial use (exclude nonprofit charities).
20 | 3.Please add a copyright information ("Copyright (C) 2010-2017 ViPER ACOUSTICS") of the ViPER FX core in your software when you use it.
21 | 4.When you redistribute the contents of this repository in any form, please bring all of the contents described here to ensure that the users or recipients specify these terms.
22 |
23 | Currently supported operating systems and platforms:
24 | x86_64 Linux,libc.so.6
25 | TO BE ADDED.
26 | Reference examples:
27 | gst-plugin-viperfx, https://github.com/vipersaudio/gst-plugin-viperfx
28 | -------------------------------------------------------------------------------- /libviperfx_x64_linux.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vipersaudio/viperfx_core_binary/6f7d0da725affe854f083baf5d90c70e172e4488/libviperfx_x64_linux.so -------------------------------------------------------------------------------- /viperfx_intf.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "viperfx_intf.h" 5 | 6 | int viperfx_command_set_px4_vx4x1 (viperfx_interface * intf, 7 | int32_t param, int32_t value) 8 | { 9 | int32_t cmd_data[3]; 10 | cmd_data[0] = param; 11 | cmd_data[1] = sizeof(int32_t); 12 | cmd_data[2] = value; 13 | 14 | return (!intf->command (intf, COMMAND_CODE_SET, 15 | sizeof(cmd_data), cmd_data, NULL, NULL)); 16 | } 17 | 18 | int viperfx_command_set_px4_vx4x2 (viperfx_interface * intf, 19 | int32_t param, int32_t value_l, int32_t value_h) 20 | { 21 | int32_t cmd_data[4]; 22 | cmd_data[0] = param; 23 | cmd_data[1] = sizeof(int32_t) << 1; 24 | cmd_data[2] = value_l; 25 | cmd_data[3] = value_h; 26 | 27 | return (!intf->command (intf, COMMAND_CODE_SET, 28 | sizeof(cmd_data), cmd_data, NULL, NULL)); 29 | } 30 | 31 | int viperfx_command_set_px4_vx4x3 (viperfx_interface * intf, 32 | int32_t param, int32_t value_l, int32_t value_h, int32_t value_e) 33 | { 34 | int32_t cmd_data[5]; 35 | cmd_data[0] = param; 36 | cmd_data[1] = sizeof(int32_t) * 3; 37 | cmd_data[2] = value_l; 38 | cmd_data[3] = value_h; 39 | cmd_data[4] = value_e; 40 | 41 | return (!intf->command (intf, COMMAND_CODE_SET, 42 | sizeof(cmd_data), cmd_data, NULL, NULL)); 43 | } 44 | 45 | int viperfx_command_set_ir_path (viperfx_interface * intf, 46 | const char * pathname) 47 | { 48 | char cmd_data[4 + 256]; 49 | int32_t * cmd_data_int = (int32_t *)cmd_data; 50 | int32_t pathlen = (int32_t) strlen(pathname); 51 | 52 | if (pathlen >= 256) 53 | return FALSE; 54 | 55 | memset (cmd_data, 0, sizeof(cmd_data)); 56 | cmd_data_int[0] = PARAM_HPFX_CONV_UPDATEKERNEL; 57 | cmd_data_int[1] = 256; 58 | cmd_data_int[2] = pathlen; 59 | memcpy (&cmd_data_int[3], 60 | pathname, pathlen); 61 | 62 | return (!intf->command (intf, COMMAND_CODE_SET, 63 | sizeof(cmd_data), cmd_data, NULL, NULL)); 64 | } 65 | -------------------------------------------------------------------------------- /viperfx_intf.h: -------------------------------------------------------------------------------- 1 | #ifndef _VIPERFX_INTF_H 2 | #define _VIPERFX_INTF_H 3 | 4 | #include 5 | 6 | #ifndef TRUE 7 | #define TRUE 1 8 | #endif 9 | #ifndef FALSE 10 | #define FALSE 0 11 | #endif 12 | 13 | #define VIPERFX_LOAD(xfilename) (dlopen(xfilename,RTLD_NOW)) 14 | #define VIPERFX_UNLOAD(xhandle) (dlclose(xhandle)) 15 | #define VIPERFX_ENTRYPOINT(xhandle) \ 16 | ((fn_viperfx_ep)(dlsym(xhandle,"viperfx_create_instance"))) 17 | 18 | #ifdef __cplusplus 19 | extern "C" { 20 | #endif 21 | 22 | enum 23 | { 24 | COMMAND_CODE_GET = 0x01, 25 | COMMAND_CODE_SET, 26 | }; 27 | 28 | enum 29 | { 30 | PARAM_GET_STATUS_BEGIN = 0x08000, 31 | PARAM_GET_DRIVER_VERSION, 32 | PARAM_GET_NEONENABLED, 33 | PARAM_GET_ENABLED, 34 | PARAM_GET_DRVCANWORK, 35 | PARAM_GET_EFFECT_TYPE, 36 | PARAM_GET_SAMPLINGRATE, 37 | PARAM_GET_CONVKNLID, 38 | PARAM_GET_STATUS_END 39 | }; 40 | 41 | enum 42 | { 43 | PARAM_SET_STATUS_BEGIN = 0x09000, 44 | PARAM_SET_RESET_STATUS, 45 | PARAM_SET_SAMPLINGRATE, 46 | PARAM_SET_DOPROCESS_STATUS, 47 | PARAM_SET_STATUS_END 48 | }; 49 | 50 | enum 51 | { 52 | PARAM_PROCESSUNIT_FX_BEGIN = 0x10000, 53 | 54 | PARAM_FX_TYPE_SWITCH, 55 | PARAM_HPFX_CONV_PROCESS_ENABLED, 56 | PARAM_HPFX_CONV_UPDATEKERNEL, 57 | /*****************************************/ 58 | // Please use PARAM_HPFX_CONV_UPDATEKERNEL instead 59 | PARAM_HPFX_CONV_PREPAREBUFFER, 60 | PARAM_HPFX_CONV_SETBUFFER, 61 | PARAM_HPFX_CONV_COMMITBUFFER, 62 | /*****************************************/ 63 | PARAM_HPFX_CONV_CROSSCHANNEL, 64 | PARAM_HPFX_VHE_PROCESS_ENABLED, 65 | PARAM_HPFX_VHE_EFFECT_LEVEL, 66 | PARAM_HPFX_VDDC_PROCESS_ENABLED, 67 | PARAM_HPFX_VDDC_COEFFS, 68 | PARAM_HPFX_VSE_PROCESS_ENABLED, 69 | PARAM_HPFX_VSE_REFERENCE_BARK, 70 | PARAM_HPFX_VSE_BARK_RECONSTRUCT, 71 | PARAM_HPFX_FIREQ_PROCESS_ENABLED, 72 | PARAM_HPFX_FIREQ_BANDLEVEL, 73 | PARAM_HPFX_COLM_PROCESS_ENABLED, 74 | PARAM_HPFX_COLM_WIDENING, 75 | PARAM_HPFX_COLM_MIDIMAGE, 76 | PARAM_HPFX_COLM_DEPTH, 77 | PARAM_HPFX_DIFFSURR_PROCESS_ENABLED, 78 | PARAM_HPFX_DIFFSURR_DELAYTIME, 79 | PARAM_HPFX_REVB_PROCESS_ENABLED, 80 | PARAM_HPFX_REVB_ROOMSIZE, 81 | PARAM_HPFX_REVB_WIDTH, 82 | PARAM_HPFX_REVB_DAMP, 83 | PARAM_HPFX_REVB_WET, 84 | PARAM_HPFX_REVB_DRY, 85 | PARAM_HPFX_AGC_PROCESS_ENABLED, 86 | PARAM_HPFX_AGC_RATIO, 87 | PARAM_HPFX_AGC_VOLUME, 88 | PARAM_HPFX_AGC_MAXSCALER, 89 | PARAM_HPFX_DYNSYS_PROCESS_ENABLED, 90 | PARAM_HPFX_DYNSYS_XCOEFFS, 91 | PARAM_HPFX_DYNSYS_YCOEFFS, 92 | PARAM_HPFX_DYNSYS_SIDEGAIN, 93 | PARAM_HPFX_DYNSYS_BASSGAIN, 94 | PARAM_HPFX_VIPERBASS_PROCESS_ENABLED, 95 | PARAM_HPFX_VIPERBASS_MODE, 96 | PARAM_HPFX_VIPERBASS_SPEAKER, 97 | PARAM_HPFX_VIPERBASS_BASSGAIN, 98 | PARAM_HPFX_VIPERCLARITY_PROCESS_ENABLED, 99 | PARAM_HPFX_VIPERCLARITY_MODE, 100 | PARAM_HPFX_VIPERCLARITY_CLARITY, 101 | PARAM_HPFX_CURE_PROCESS_ENABLED, 102 | PARAM_HPFX_CURE_CROSSFEED, 103 | PARAM_HPFX_TUBE_PROCESS_ENABLED, 104 | PARAM_HPFX_ANALOGX_PROCESS_ENABLED, 105 | PARAM_HPFX_ANALOGX_MODE, 106 | PARAM_HPFX_OUTPUT_VOLUME, 107 | PARAM_HPFX_OUTPUT_PAN, 108 | PARAM_HPFX_LIMITER_THRESHOLD, 109 | PARAM_SPKFX_CONV_PROCESS_ENABLED, 110 | PARAM_SPKFX_CONV_UPDATEKERNEL, 111 | PARAM_SPKFX_CONV_PREPAREBUFFER, 112 | PARAM_SPKFX_CONV_SETBUFFER, 113 | PARAM_SPKFX_CONV_COMMITBUFFER, 114 | PARAM_SPKFX_CONV_CROSSCHANNEL, 115 | PARAM_SPKFX_FIREQ_PROCESS_ENABLED, 116 | PARAM_SPKFX_FIREQ_BANDLEVEL, 117 | PARAM_SPKFX_REVB_PROCESS_ENABLED, 118 | PARAM_SPKFX_REVB_ROOMSIZE, 119 | PARAM_SPKFX_REVB_WIDTH, 120 | PARAM_SPKFX_REVB_DAMP, 121 | PARAM_SPKFX_REVB_WET, 122 | PARAM_SPKFX_REVB_DRY, 123 | PARAM_SPKFX_AGC_PROCESS_ENABLED, 124 | PARAM_SPKFX_AGC_RATIO, 125 | PARAM_SPKFX_AGC_VOLUME, 126 | PARAM_SPKFX_AGC_MAXSCALER, 127 | PARAM_SPKFX_OUTPUT_VOLUME, 128 | PARAM_SPKFX_LIMITER_THRESHOLD, 129 | PARAM_HPFX_FETCOMP_PROCESS_ENABLED, 130 | PARAM_HPFX_FETCOMP_THRESHOLD, 131 | PARAM_HPFX_FETCOMP_RATIO, 132 | PARAM_HPFX_FETCOMP_KNEEWIDTH, 133 | PARAM_HPFX_FETCOMP_AUTOKNEE_ENABLED, 134 | PARAM_HPFX_FETCOMP_GAIN, 135 | PARAM_HPFX_FETCOMP_AUTOGAIN_ENABLED, 136 | PARAM_HPFX_FETCOMP_ATTACK, 137 | PARAM_HPFX_FETCOMP_AUTOATTACK_ENABLED, 138 | PARAM_HPFX_FETCOMP_RELEASE, 139 | PARAM_HPFX_FETCOMP_AUTORELEASE_ENABLED, 140 | PARAM_HPFX_FETCOMP_META_KNEEMULTI, 141 | PARAM_HPFX_FETCOMP_META_MAXATTACK, 142 | PARAM_HPFX_FETCOMP_META_MAXRELEASE, 143 | PARAM_HPFX_FETCOMP_META_CREST, 144 | PARAM_HPFX_FETCOMP_META_ADAPT, 145 | PARAM_HPFX_FETCOMP_META_NOCLIP_ENABLED, 146 | PARAM_SPKFX_FETCOMP_PROCESS_ENABLED, 147 | PARAM_SPKFX_FETCOMP_THRESHOLD, 148 | PARAM_SPKFX_FETCOMP_RATIO, 149 | PARAM_SPKFX_FETCOMP_KNEEWIDTH, 150 | PARAM_SPKFX_FETCOMP_AUTOKNEE_ENABLED, 151 | PARAM_SPKFX_FETCOMP_GAIN, 152 | PARAM_SPKFX_FETCOMP_AUTOGAIN_ENABLED, 153 | PARAM_SPKFX_FETCOMP_ATTACK, 154 | PARAM_SPKFX_FETCOMP_AUTOATTACK_ENABLED, 155 | PARAM_SPKFX_FETCOMP_RELEASE, 156 | PARAM_SPKFX_FETCOMP_AUTORELEASE_ENABLED, 157 | PARAM_SPKFX_FETCOMP_META_KNEEMULTI, 158 | PARAM_SPKFX_FETCOMP_META_MAXATTACK, 159 | PARAM_SPKFX_FETCOMP_META_MAXRELEASE, 160 | PARAM_SPKFX_FETCOMP_META_CREST, 161 | PARAM_SPKFX_FETCOMP_META_ADAPT, 162 | PARAM_SPKFX_FETCOMP_META_NOCLIP_ENABLED, 163 | 164 | PARAM_PROCESSUNIT_FX_END 165 | }; 166 | 167 | enum 168 | { 169 | ViPER_FX_TYPE_NONE = 0, 170 | 171 | ViPER_FX_TYPE_HEADPHONE = 1, 172 | ViPER_FX_TYPE_SPEAKER = 2, 173 | 174 | ViPER_FX_TYPE_COUNT 175 | }; 176 | 177 | typedef struct _viperfx_interface { 178 | int32_t (*set_samplerate) ( 179 | struct _viperfx_interface * __this, int32_t sample_rate); 180 | 181 | int32_t (*set_channels) ( 182 | struct _viperfx_interface * __this, int32_t channels); 183 | 184 | void (*reset) (struct _viperfx_interface * __this); 185 | 186 | int32_t (*command) (struct _viperfx_interface * __this, 187 | uint32_t cmd_code, uint32_t cmd_size, void * cmd_data, 188 | uint32_t * reply_size, void * reply_data); 189 | 190 | void (*process) (struct _viperfx_interface * __this, 191 | int16_t * pcm_buffer, int32_t frame_count); 192 | 193 | void (*release) (struct _viperfx_interface * __this); 194 | 195 | void * private_data; 196 | } viperfx_interface; 197 | 198 | typedef viperfx_interface* (*fn_viperfx_ep)(void); 199 | 200 | int viperfx_command_set_px4_vx4x1 (viperfx_interface * intf, 201 | int32_t param, int32_t value); 202 | int viperfx_command_set_px4_vx4x2 (viperfx_interface * intf, 203 | int32_t param, int32_t value_l, int32_t value_h); 204 | int viperfx_command_set_px4_vx4x3 (viperfx_interface * intf, 205 | int32_t param, int32_t value_l, int32_t value_h, int32_t value_e); 206 | int viperfx_command_set_ir_path (viperfx_interface * intf, 207 | const char * pathname); 208 | 209 | #ifdef __cplusplus 210 | } 211 | #endif 212 | 213 | #endif 214 | --------------------------------------------------------------------------------