Mercurial > hg > m4-sa
diff runner/BinaryFeatureWriter.cpp @ 69:0ef80ae6493c
Sonic Annotator correctly reports the number of bytes written to a feature file even if it's less than expected.
author | gyorgyf |
---|---|
date | Fri, 24 Feb 2012 12:32:39 +0000 |
parents | 5e432835d7e1 |
children |
line wrap: on
line diff
--- a/runner/BinaryFeatureWriter.cpp Fri Feb 24 11:23:06 2012 +0000 +++ b/runner/BinaryFeatureWriter.cpp Fri Feb 24 12:32:39 2012 +0000 @@ -236,7 +236,8 @@ if (binary->newtransform) { binary->newtransform = false; output_binCount = output.binCount; - feature_count = 0; + feature_count = 0; + element_count = 0; binary->transform = &transform; ofs << endl << "{" @@ -284,8 +285,10 @@ // write the feature data feature_count += featureList.size(); for (size_t i = 0; i < featureList.size(); ++i) { - for (size_t j = 0; j < featureList[i].values.size(); ++j) + for (size_t j = 0; j < featureList[i].values.size(); ++j) { ofs.write( (const char*) &featureList[i].values[j], sizeof(featureList[i].values[j]) ); + element_count++; + } } // ofs << endl; @@ -328,7 +331,13 @@ ofs << ",\"feature_count\":" << feature_count << ",\"data_size\":" - << feature_count * output_binCount * sizeof(float); - ofs.seekp(t); + // << feature_count * output_binCount * sizeof(float); + << element_count * sizeof(float); + ofs.seekp(t); + if (element_count != feature_count * output_binCount) + cerr << "ERROR: The number of feature values written is different from the expected value given by the output bin count and the number of features returned by the plugin. \n" + << "Otput bin count: " << output_binCount << ", Feature count: " << feature_count << ", Expected elements: " << feature_count * output_binCount + << ", Written elements: " << element_count << ", Resulting float32 data size: " << element_count * sizeof(float) << " bytes." + << endl; // FileFeatureWriter::finish(); }