*/
+#include "audio_analysis.h"
+#include "dcpomatic_assert.h"
+#include "cross.h"
+#include <boost/filesystem.hpp>
#include <stdint.h>
#include <cmath>
#include <cassert>
#include <cstdio>
-#include <boost/filesystem.hpp>
-#include "audio_analysis.h"
-#include "cross.h"
+#include <iostream>
using std::ostream;
using std::istream;
AudioPoint::AudioPoint (FILE* f)
{
for (int i = 0; i < COUNT; ++i) {
- fscanf (f, "%f", &_data[i]);
+ int n = fscanf (f, "%f", &_data[i]);
+ if (n != 1) {
+ _data[i] = 0;
+ }
}
}
{
FILE* f = fopen_boost (filename, "r");
- int channels;
+ int channels = 0;
fscanf (f, "%d", &channels);
_data.resize (channels);
for (int i = 0; i < channels; ++i) {
int points;
fscanf (f, "%d", &points);
+ if (feof (f)) {
+ fclose (f);
+ return;
+ }
+
for (int j = 0; j < points; ++j) {
_data[i].push_back (AudioPoint (f));
+ if (feof (f)) {
+ fclose (f);
+ return;
+ }
}
}
+
+ fclose (f);
}
void
AudioAnalysis::add_point (int c, AudioPoint const & p)
{
- assert (c < channels ());
+ DCPOMATIC_ASSERT (c < channels ());
_data[c].push_back (p);
}
AudioPoint
AudioAnalysis::get_point (int c, int p) const
{
- assert (p < points (c));
+ DCPOMATIC_ASSERT (p < points (c));
return _data[c][p];
}
int
AudioAnalysis::points (int c) const
{
- assert (c < channels ());
+ DCPOMATIC_ASSERT (c < channels ());
return _data[c].size ();
}