int ret = INFERENCE_ENGINE_ERROR_NONE;
- // TODO. Below is test code, should we allocate new buffer for every inference?
- if (mOutputDataHandle == NULL) {
- ret = ml_tensors_data_create(mOutputInfoHandle, &mOutputDataHandle);
- if (ret != ML_ERROR_NONE) {
- LOGE("Failed to request ml_tensors_data_create(%d).", ret);
- return INFERENCE_ENGINE_ERROR_INVALID_OPERATION;
- }
+ // In runtime, output tensor info can be updated.
+ // So make sure to destroy previous handle. I.e., face recognition framework.
+ if (mOutputDataHandle) {
+ ml_tensors_data_destroy(mOutputDataHandle);
+ mOutputDataHandle = NULL;
+ }
+
+ ret = ml_tensors_data_create(mOutputInfoHandle, &mOutputDataHandle);
+ if (ret != ML_ERROR_NONE) {
+ LOGE("Failed to request ml_tensors_data_create(%d).", ret);
+ return INFERENCE_ENGINE_ERROR_INVALID_OPERATION;
}
// TODO. Cache tensor info and reduce function call in UpdateTensorsInfo()