GithubHelp home page GithubHelp logo

laysent / silk-sdk Goto Github PK

View Code? Open in Web Editor NEW
29.0 3.0 7.0 646 KB

node-gyp version of Silk Speech Codec, able to decode/encode audio from/to silk format (widely used by Tencent apps, such as WeChat/WeiXin, QQ)

License: MIT License

C 80.74% Python 0.34% JavaScript 0.45% Assembly 11.76% C++ 4.73% Objective-C 1.98%
silk silk-v3

silk-sdk's Issues

传参问题请教

您好!您的例子非常详细,感谢。有个地方不太明白,调用nodejs接口的时候,传递的参数是文件路径,但是接口内部貌似认为该参数是数据流,二者好像不太匹配?

比如解码的接口:
silk-sdk decode [input] [output]
where input is the name of input file and output is the name of output file.
但Decode_Entry()内部调用Decode()时,传入的应该是buffer(我的理解是直接的数据,而非文件路径):
return Decode(env, buffer, bufferLength, quiet ? 1 : 0, (float)loss_prob, API_Fs_Hz);

或者,在Decode_Entry()内部,这两部处理会对文件进行隐含的读取数据操纵吗?
status = napi_get_cb_info(env, info, &argc, args, NULL, NULL);
status = napi_get_buffer_info(env, args[0], &buffer, &bufferLength);
我的理解好像不会自动读取文件的数据,不知道哪里理解有误,望指教。

node-gyp build failed

.../[email protected]/node_modules/silk-sdk install$ node-gyp rebuild
│ gyp info it worked if it ends with ok
│ gyp info using [email protected]
│ gyp info using [email protected] | linux | x64
│ gyp info find Python using Python version 3.10.9 found at "/usr/bin/python3"
│ gyp info spawn /usr/bin/python3
│ gyp info spawn args [
│ gyp info spawn args '/usr/lib/node_modules/pnpm/dist/node_modules/node-gyp/gyp/gyp_
│ gyp info spawn args 'binding.gyp',
│ gyp info spawn args '-f',
│ gyp info spawn args 'make',
│ gyp info spawn args '-I',
│ gyp info spawn args '/home/im20a0/Icalingua-plus-plus/node_modules/.pnpm/silk-sdk@0
│ gyp info spawn args '-I',
│ gyp info spawn args '/usr/lib/node_modules/pnpm/dist/node_modules/node-gyp/addon.gy
│ gyp info spawn args '-I',
│ gyp info spawn args '/home/im20a0/.cache/node-gyp/18.14.2/include/node/common.gypi'
│ gyp info spawn args '-Dlibrary=shared_library',
│ gyp info spawn args '-Dvisibility=default',
│ gyp info spawn args '-Dnode_root_dir=/home/im20a0/.cache/node-gyp/18.14.2',
│ gyp info spawn args '-Dnode_gyp_dir=/usr/lib/node_modules/pnpm/dist/node_modules/no
│ gyp info spawn args '-Dnode_lib_file=/home/im20a0/.cache/node-gyp/18.14.2/<(target_
│ gyp info spawn args '-Dmodule_root_dir=/home/im20a0/Icalingua-plus-plus/node_module
│ gyp info spawn args '-Dnode_engine=v8',
│ gyp info spawn args '--depth=.',
│ gyp info spawn args '--no-parallel',
│ gyp info spawn args '--generator-output',
│ gyp info spawn args 'build',
│ gyp info spawn args '-Goutput_dir=.'
│ gyp info spawn args ]
│ gyp info spawn make
│ gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
│ make: Entering directory '/home/im20a0/Icalingua-plus-plus/node_modules/.pnpm/silk-sd
│ CC(target) Release/obj.target/silk/api/main.o
│ CC(target) Release/obj.target/silk/api/Decoder.o
│ ../api/Decoder.c: In function ‘Decode’:
│ ../api/Decoder.c:436:40: warning: ‘nBytesPerPacket’ may be used uninitialized [-Wmayb
│ 436 | totBytes += nBytesPerPacket[ i + 1 ];
│ | ~~~~~~~~~~~~~~~^~~~~~~~~
│ ../api/Decoder.c:127:15: note: ‘nBytesPerPacket’ declared here
│ 127 | SKP_int16 nBytesPerPacket[ DECODER_MAX_LBRR_DELAY + 1 ], totBytes;
│ | ^~~~~~~~~~~~~~~
│ CC(target) Release/obj.target/silk/api/Encoder.o
│ CC(target) Release/obj.target/silk/api/signalCompare.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_A2NLSF.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_ana_filt_bank_1.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_apply_sine_window.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_array_maxabs.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_autocorr.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_biquad.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_biquad_alt.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_burg_modified.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_bwexpander.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_bwexpander_32.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_CNG.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_code_signs.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_control_audio_bandwidth.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_control_codec_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_corrMatrix_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_create_init_destroy.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_decoder_set_fs.o
│ In file included from ../src/SKP_Silk_main.h:31,
│ from ../src/SKP_Silk_decoder_set_fs.c:28:
│ ../src/SKP_Silk_decoder_set_fs.c: In function ‘SKP_Silk_decoder_set_fs’:
│ ../src/SKP_Silk_SigProc_FIX.h:507:44: warning: ‘memset’ used with length equal to num
│ 507 | #define SKP_memset(a, b, c) memset((a), (b), (c)) /* Dest,
│ | ^~~~~~
│ ../src/SKP_Silk_decoder_set_fs.c:51:9: note: in expansion of macro ‘SKP_memset’
│ 51 | SKP_memset( psDec->outBuf, 0, MAX_FRAME_LENGTH * sizeof( SKP_in
│ | ^~~~~~~~~~
│ CC(target) Release/obj.target/silk/src/SKP_Silk_decode_core.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_decode_frame.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_decode_parameters.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_decode_pitch.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_decode_pulses.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_dec_API.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_detect_SWB_input.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_div_oabi.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_encode_frame_FIX.o
│ ../src/SKP_Silk_encode_frame_FIX.c: In function ‘SKP_Silk_LBRR_encode_FIX’:
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: warning: ‘SKP_Silk_NSQ_del_dec’ reading 64
│ 336 | SKP_Silk_NSQ_del_dec( &psEnc->sCmn, &psEncCtrl->sCmn, &psEnc-
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 337 | psEncCtrl->sCmn.NLSFInterpCoef_Q2, psEncCtrl->PredCoef_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 338 | psEncCtrl->AR2_Q13, psEncCtrl->HarmShapeGain_Q14, psEncCt
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 339 | psEncCtrl->Gains_Q16, psEncCtrl->Lambda_Q10, psEncCtrl->L
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 7 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 8 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 9 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 10 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 11 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 12 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 13 of type ‘con
│ In file included from ../src/SKP_Silk_structs_FIX.h:32,
│ from ../src/SKP_Silk_main_FIX.h:33,
│ from ../src/SKP_Silk_encode_frame_FIX.c:28:
│ ../src/SKP_Silk_main.h:213:6: note: in a call to function ‘SKP_Silk_NSQ_del_dec’
│ 213 | void SKP_Silk_NSQ_del_dec(
│ | ^~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: warning: ‘SKP_Silk_NSQ’ reading 64 bytes f
│ 341 | SKP_Silk_NSQ( &psEnc->sCmn, &psEncCtrl->sCmn, &psEnc->sCmn.sN
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 342 | psEncCtrl->sCmn.NLSFInterpCoef_Q2, psEncCtrl->PredCoef_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 343 | psEncCtrl->AR2_Q13, psEncCtrl->HarmShapeGain_Q14, psEncCt
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 344 | psEncCtrl->Gains_Q16, psEncCtrl->Lambda_Q10, psEncCtrl->L
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 7 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 8 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 9 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 10 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 11 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 12 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 13 of type ‘con
│ ../src/SKP_Silk_main.h:194:6: note: in a call to function ‘SKP_Silk_NSQ’
│ 194 | void SKP_Silk_NSQ(
│ | ^~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c: In function ‘SKP_Silk_encode_frame_FIX’:
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: warning: ‘SKP_Silk_NSQ_del_dec’ reading 64
│ 122 | SKP_Silk_NSQ_del_dec( &psEnc->sCmn, &sEncCtrl.sCmn, &psEnc->sCmn.sNSQ
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 123 | psEnc->sCmn.q, sEncCtrl.sCmn.NLSFInterpCoef_Q2,
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 124 | sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 125 | sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncC
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 126 | sEncCtrl.LTP_scale_Q14 );
│ | ~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 7 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 8 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 9 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 10 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 11 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 12 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 13 of type ‘cons
│ ../src/SKP_Silk_main.h:213:6: note: in a call to function ‘SKP_Silk_NSQ_del_dec’
│ 213 | void SKP_Silk_NSQ_del_dec(
│ | ^~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: warning: ‘SKP_Silk_NSQ’ reading 64 bytes fr
│ 128 | SKP_Silk_NSQ( &psEnc->sCmn, &sEncCtrl.sCmn, &psEnc->sCmn.sNSQ, xfw,
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 129 | psEnc->sCmn.q, sEncCtrl.sCmn.NLSFInterpCoef_Q2,
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 130 | sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 131 | sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncC
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 132 | sEncCtrl.LTP_scale_Q14 );
│ | ~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 7 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 8 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 9 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 10 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 11 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 12 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 13 of type ‘cons
│ ../src/SKP_Silk_main.h:194:6: note: in a call to function ‘SKP_Silk_NSQ’
│ 194 | void SKP_Silk_NSQ(
│ | ^~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c: In function ‘SKP_Silk_LBRR_encode_FIX’:
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: warning: ‘SKP_Silk_NSQ_del_dec’ reading 64
│ 336 | SKP_Silk_NSQ_del_dec( &psEnc->sCmn, &psEncCtrl->sCmn, &psEnc-
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 337 | psEncCtrl->sCmn.NLSFInterpCoef_Q2, psEncCtrl->PredCoef_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 338 | psEncCtrl->AR2_Q13, psEncCtrl->HarmShapeGain_Q14, psEncCt
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 339 | psEncCtrl->Gains_Q16, psEncCtrl->Lambda_Q10, psEncCtrl->L
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 7 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 8 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 9 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 10 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 11 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 12 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 13 of type ‘con
│ ../src/SKP_Silk_main.h:213:6: note: in a call to function ‘SKP_Silk_NSQ_del_dec’
│ 213 | void SKP_Silk_NSQ_del_dec(
│ | ^~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: warning: ‘SKP_Silk_NSQ’ reading 64 bytes f
│ 341 | SKP_Silk_NSQ( &psEnc->sCmn, &psEncCtrl->sCmn, &psEnc->sCmn.sN
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 342 | psEncCtrl->sCmn.NLSFInterpCoef_Q2, psEncCtrl->PredCoef_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 343 | psEncCtrl->AR2_Q13, psEncCtrl->HarmShapeGain_Q14, psEncCt
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 344 | psEncCtrl->Gains_Q16, psEncCtrl->Lambda_Q10, psEncCtrl->L
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 7 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 8 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 9 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 10 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 11 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 12 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 13 of type ‘con
│ ../src/SKP_Silk_main.h:194:6: note: in a call to function ‘SKP_Silk_NSQ’
│ 194 | void SKP_Silk_NSQ(
│ | ^~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: warning: ‘SKP_Silk_NSQ_del_dec’ reading 64
│ 336 | SKP_Silk_NSQ_del_dec( &psEnc->sCmn, &psEncCtrl->sCmn, &psEnc-
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 337 | psEncCtrl->sCmn.NLSFInterpCoef_Q2, psEncCtrl->PredCoef_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 338 | psEncCtrl->AR2_Q13, psEncCtrl->HarmShapeGain_Q14, psEncCt
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 339 | psEncCtrl->Gains_Q16, psEncCtrl->Lambda_Q10, psEncCtrl->L
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 7 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 8 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 9 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 10 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 11 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 12 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:336:17: note: referencing argument 13 of type ‘con
│ ../src/SKP_Silk_main.h:213:6: note: in a call to function ‘SKP_Silk_NSQ_del_dec’
│ 213 | void SKP_Silk_NSQ_del_dec(
│ | ^~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: warning: ‘SKP_Silk_NSQ’ reading 64 bytes f
│ 341 | SKP_Silk_NSQ( &psEnc->sCmn, &psEncCtrl->sCmn, &psEnc->sCmn.sN
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 342 | psEncCtrl->sCmn.NLSFInterpCoef_Q2, psEncCtrl->PredCoef_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 343 | psEncCtrl->AR2_Q13, psEncCtrl->HarmShapeGain_Q14, psEncCt
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 344 | psEncCtrl->Gains_Q16, psEncCtrl->Lambda_Q10, psEncCtrl->L
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 7 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 8 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 9 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 10 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 11 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 12 of type ‘con
│ ../src/SKP_Silk_encode_frame_FIX.c:341:17: note: referencing argument 13 of type ‘con
│ ../src/SKP_Silk_main.h:194:6: note: in a call to function ‘SKP_Silk_NSQ’
│ 194 | void SKP_Silk_NSQ(
│ | ^~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c: In function ‘SKP_Silk_encode_frame_FIX’:
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: warning: ‘SKP_Silk_NSQ_del_dec’ reading 64
│ 122 | SKP_Silk_NSQ_del_dec( &psEnc->sCmn, &sEncCtrl.sCmn, &psEnc->sCmn.sNSQ
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 123 | psEnc->sCmn.q, sEncCtrl.sCmn.NLSFInterpCoef_Q2,
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 124 | sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 125 | sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncC
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 126 | sEncCtrl.LTP_scale_Q14 );
│ | ~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 7 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 8 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 9 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 10 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 11 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 12 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 13 of type ‘cons
│ ../src/SKP_Silk_main.h:213:6: note: in a call to function ‘SKP_Silk_NSQ_del_dec’
│ 213 | void SKP_Silk_NSQ_del_dec(
│ | ^~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: warning: ‘SKP_Silk_NSQ’ reading 64 bytes fr
│ 128 | SKP_Silk_NSQ( &psEnc->sCmn, &sEncCtrl.sCmn, &psEnc->sCmn.sNSQ, xfw,
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 129 | psEnc->sCmn.q, sEncCtrl.sCmn.NLSFInterpCoef_Q2,
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 130 | sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 131 | sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncC
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 132 | sEncCtrl.LTP_scale_Q14 );
│ | ~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 7 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 8 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 9 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 10 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 11 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 12 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 13 of type ‘cons
│ ../src/SKP_Silk_main.h:194:6: note: in a call to function ‘SKP_Silk_NSQ’
│ 194 | void SKP_Silk_NSQ(
│ | ^~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: warning: ‘SKP_Silk_NSQ_del_dec’ reading 64
│ 122 | SKP_Silk_NSQ_del_dec( &psEnc->sCmn, &sEncCtrl.sCmn, &psEnc->sCmn.sNSQ
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 123 | psEnc->sCmn.q, sEncCtrl.sCmn.NLSFInterpCoef_Q2,
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 124 | sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 125 | sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncC
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 126 | sEncCtrl.LTP_scale_Q14 );
│ | ~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 7 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 8 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 9 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 10 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 11 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 12 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:122:9: note: referencing argument 13 of type ‘cons
│ ../src/SKP_Silk_main.h:213:6: note: in a call to function ‘SKP_Silk_NSQ_del_dec’
│ 213 | void SKP_Silk_NSQ_del_dec(
│ | ^~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: warning: ‘SKP_Silk_NSQ’ reading 64 bytes fr
│ 128 | SKP_Silk_NSQ( &psEnc->sCmn, &sEncCtrl.sCmn, &psEnc->sCmn.sNSQ, xfw,
│ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 129 | psEnc->sCmn.q, sEncCtrl.sCmn.NLSFInterpCoef_Q2,
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 130 | sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q1
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 131 | sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncC
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ 132 | sEncCtrl.LTP_scale_Q14 );
│ | ~~~~~~~~~~~~~~~~~~~~~~~~
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 7 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 8 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 9 of type ‘const
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 10 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 11 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 12 of type ‘cons
│ ../src/SKP_Silk_encode_frame_FIX.c:128:9: note: referencing argument 13 of type ‘cons
│ ../src/SKP_Silk_main.h:194:6: note: in a call to function ‘SKP_Silk_NSQ’
│ 194 | void SKP_Silk_NSQ(
│ | ^~~~~~~~~~~~
│ CC(target) Release/obj.target/silk/src/SKP_Silk_encode_parameters.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_encode_pulses.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_enc_API.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_find_LPC_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_find_LTP_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_find_pitch_lags_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_find_pred_coefs_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_gain_quant.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_HP_variable_cutoff_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_init_encoder_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_inner_prod_aligned.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_interpolate.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_k2a.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_k2a_Q16.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_LBRR_reset.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_lin2log.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_log2lin.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_LPC_inv_pred_gain.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_LPC_synthesis_filter.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_LPC_synthesis_order16.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_LP_variable_cutoff.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_LSF_cos_table.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_LTP_analysis_filter_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_LTP_scale_ctrl_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_MA.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NLSF2A.o
│ In function ‘SKP_Silk_NLSF2A_find_poly’,
│ inlined from ‘SKP_Silk_NLSF2A’ at ../src/SKP_Silk_NLSF2A.c:102:5:
│ ../src/SKP_Silk_NLSF2A.c:47:19: warning: ‘cos_LSF_Q20’ may be used uninitialized [-Wm
│ 47 | out[1] = -cLSF[0];
│ | ~~~~^~~
│ ../src/SKP_Silk_NLSF2A.c: In function ‘SKP_Silk_NLSF2A’:
│ ../src/SKP_Silk_NLSF2A.c:66:15: note: ‘cos_LSF_Q20’ declared here
│ 66 | SKP_int32 cos_LSF_Q20[SKP_Silk_MAX_ORDER_LPC];
│ | ^~~~~~~~~~~
│ In function ‘SKP_Silk_NLSF2A_find_poly’,
│ inlined from ‘SKP_Silk_NLSF2A’ at ../src/SKP_Silk_NLSF2A.c:103:5:
│ ../src/SKP_Silk_NLSF2A.c:47:19: warning: ‘cos_LSF_Q20’ may be used uninitialized [-Wm
│ 47 | out[1] = -cLSF[0];
│ | ~~~~^~~
│ ../src/SKP_Silk_NLSF2A.c: In function ‘SKP_Silk_NLSF2A’:
│ ../src/SKP_Silk_NLSF2A.c:66:15: note: ‘cos_LSF_Q20’ declared here
│ 66 | SKP_int32 cos_LSF_Q20[SKP_Silk_MAX_ORDER_LPC];
│ | ^~~~~~~~~~~
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NLSF2A_stable.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NLSF_MSVQ_decode.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NLSF_MSVQ_encode_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NLSF_stabilize.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NLSF_VQ_rate_distortion_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NLSF_VQ_sum_error_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NLSF_VQ_weights_laroia.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_noise_shape_analysis_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NSQ.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_NSQ_del_dec.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_pitch_analysis_core.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_pitch_est_tables.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_PLC.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_prefilter_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_process_gains_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_process_NLSFs_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_quant_LTP_gains_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_range_coder.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_regularize_correlations_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_down2.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_down2_3.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_down3.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_private_AR2.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_private_ARMA4.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_private_copy.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_private_down4.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_private_down_FIR.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_private_IIR_FIR.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_private_up2_HQ.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_private_up4.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_rom.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_resampler_up2.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_residual_energy16_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_residual_energy_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_scale_copy_vector16.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_scale_vector.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_schur.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_schur64.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_shell_coder.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_sigm_Q15.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_solve_LS_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_sort.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_sum_sqr_shift.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_gain.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_LTP.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_NLSF_CB0_10.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_NLSF_CB0_16.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_NLSF_CB1_10.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_NLSF_CB1_16.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_other.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_pitch_lag.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_pulses_per_block.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_sign.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_tables_type_offset.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_VAD.o
│ ../src/SKP_Silk_VAD.c:70:1: warning: ‘static’ is not at beginning of declaration [-Wo
│ 70 | const static SKP_int32 tiltWeights[ VAD_N_BANDS ] = { 30000, 6000, -12000, -1
│ | ^~~~~
│ CC(target) Release/obj.target/silk/src/SKP_Silk_VQ_nearest_neighbor_FIX.o
│ CC(target) Release/obj.target/silk/src/SKP_Silk_warped_autocorrelation_FIX.o
│ SOLINK_MODULE(target) Release/obj.target/silk.node
│ make: g++: No such file or directory
│ make: *** [silk.target.mk:256: Release/obj.target/silk.node] Error 127
│ make: Leaving directory '/home/im20a0/Icalingua-plus-plus/node_modules/.pnpm/silk-sdk
│ gyp ERR! build error
│ gyp ERR! stack Error: make failed with exit code: 2
│ gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/pnpm/dist/node_modul
│ gyp ERR! stack at ChildProcess.emit (node:events:513:28)
│ gyp ERR! stack at ChildProcess.handle.onexit (node:internal/child_process:291:12
│ gyp ERR! System Linux 6.1.0-1-amd64
│ gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/pnpm/dist/node_modules/node-g
│ gyp ERR! cwd /home/im20a0/Icalingua-plus-plus/node_modules/.pnpm/[email protected]/node

│ gyp ERR! node -v v18.14.2
│ gyp ERR! node-gyp -v v9.3.1
│ gyp ERR! not ok
└─ Failed in 20.8s at /home/im20a0/Icalingua-plus-plus/node_modules/.pnpm/[email protected]/node_modules/silk-sdk

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.