Expose deallocation functions in NodeJS binding
This commit is contained in:
parent
f397006436
commit
41e6daaff2
@ -100,7 +100,7 @@ After following the above build and installation instructions, the Node.JS bindi
|
|||||||
|
|
||||||
```
|
```
|
||||||
cd native_client/javascript
|
cd native_client/javascript
|
||||||
make package
|
make build
|
||||||
make npm-pack
|
make npm-pack
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const Fs = require('fs');
|
const Fs = require('fs');
|
||||||
@ -69,6 +68,7 @@ function metadataToString(metadata) {
|
|||||||
for (var i = 0; i < metadata.num_items; ++i) {
|
for (var i = 0; i < metadata.num_items; ++i) {
|
||||||
retval += metadata.items[i].character;
|
retval += metadata.items[i].character;
|
||||||
}
|
}
|
||||||
|
Ds.FreeMetadata(metadata);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,5 +135,6 @@ audioStream.on('finish', () => {
|
|||||||
}
|
}
|
||||||
const inference_stop = process.hrtime(inference_start);
|
const inference_stop = process.hrtime(inference_start);
|
||||||
console.error('Inference took %ds for %ds audio file.', totalTime(inference_stop), audioLength.toPrecision(4));
|
console.error('Inference took %ds for %ds audio file.', totalTime(inference_stop), audioLength.toPrecision(4));
|
||||||
|
Ds.DestroyModel(model);
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
|
@ -28,7 +28,6 @@ using namespace node;
|
|||||||
|
|
||||||
// make sure the string returned by SpeechToText is freed
|
// make sure the string returned by SpeechToText is freed
|
||||||
%typemap(newfree) char* "DS_FreeString($1);";
|
%typemap(newfree) char* "DS_FreeString($1);";
|
||||||
%typemap(newfree) Metadata* "DS_FreeMetadata($1);";
|
|
||||||
|
|
||||||
%newobject DS_SpeechToText;
|
%newobject DS_SpeechToText;
|
||||||
%newobject DS_IntermediateDecode;
|
%newobject DS_IntermediateDecode;
|
||||||
@ -61,19 +60,8 @@ using namespace node;
|
|||||||
%append_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*1_descriptor, 0));
|
%append_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*1_descriptor, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
// extend ModelState with a destructor so that DestroyModel will be called
|
|
||||||
// when the JavaScript object gets finalized.
|
|
||||||
%nodefaultctor ModelState;
|
%nodefaultctor ModelState;
|
||||||
%nodefaultdtor ModelState;
|
%nodefaultdtor ModelState;
|
||||||
|
|
||||||
struct ModelState {};
|
|
||||||
|
|
||||||
%extend ModelState {
|
|
||||||
~ModelState() {
|
|
||||||
DS_DestroyModel($self);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
%nodefaultdtor Metadata;
|
%nodefaultdtor Metadata;
|
||||||
%nodefaultctor Metadata;
|
%nodefaultctor Metadata;
|
||||||
%nodefaultctor MetadataItem;
|
%nodefaultctor MetadataItem;
|
||||||
@ -94,9 +82,6 @@ struct ModelState {};
|
|||||||
v8::Handle<v8::Value> result = SWIGV8_ARRAY_NEW();
|
v8::Handle<v8::Value> result = SWIGV8_ARRAY_NEW();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
~Metadata() {
|
|
||||||
DS_FreeMetadata($self);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
%rename ("%(strip:[DS_])s") "";
|
%rename ("%(strip:[DS_])s") "";
|
||||||
|
@ -75,7 +75,13 @@ Model.prototype.finishStreamWithMetadata = function() {
|
|||||||
return binding.FinishStreamWithMetadata.apply(null, arguments);
|
return binding.FinishStreamWithMetadata.apply(null, arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function DestroyModel(model) {
|
||||||
|
return binding.DestroyModel(model._impl);
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
Model: Model,
|
Model: Model,
|
||||||
printVersions: binding.PrintVersions
|
printVersions: binding.PrintVersions,
|
||||||
|
DestroyModel: DestroyModel,
|
||||||
|
FreeMetadata: binding.FreeMetadata
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user