summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/wavfile_source_impl.cc
diff options
context:
space:
mode:
authorMarcus Müller <mmueller@gnuradio.org>2019-08-07 21:45:12 +0200
committerMarcus Müller <marcus@hostalia.de>2019-08-09 23:04:28 +0200
commitf7bbf2c1d8d780294f3e016aff239ca35eb6516e (patch)
treee09ab6112e02b2215b2d59ac24d3d6ea2edac745 /gr-blocks/lib/wavfile_source_impl.cc
parent78431dc6941e3acc67c858277dfe4a0ed583643c (diff)
Tree: clang-format without the include sorting
Diffstat (limited to 'gr-blocks/lib/wavfile_source_impl.cc')
-rw-r--r--gr-blocks/lib/wavfile_source_impl.cc231
1 files changed, 115 insertions, 116 deletions
diff --git a/gr-blocks/lib/wavfile_source_impl.cc b/gr-blocks/lib/wavfile_source_impl.cc
index 7538792d1c..b1950f2deb 100644
--- a/gr-blocks/lib/wavfile_source_impl.cc
+++ b/gr-blocks/lib/wavfile_source_impl.cc
@@ -36,139 +36,138 @@
#include <io.h>
#endif
#ifdef O_BINARY
-#define OUR_O_BINARY O_BINARY
+#define OUR_O_BINARY O_BINARY
#else
-#define OUR_O_BINARY 0
+#define OUR_O_BINARY 0
#endif
// should be handled via configure
#ifdef O_LARGEFILE
-#define OUR_O_LARGEFILE O_LARGEFILE
+#define OUR_O_LARGEFILE O_LARGEFILE
#else
-#define OUR_O_LARGEFILE 0
+#define OUR_O_LARGEFILE 0
#endif
namespace gr {
- namespace blocks {
+namespace blocks {
+
+wavfile_source::sptr wavfile_source::make(const char* filename, bool repeat)
+{
+ return gnuradio::get_initial_sptr(new wavfile_source_impl(filename, repeat));
+}
+
+wavfile_source_impl::wavfile_source_impl(const char* filename, bool repeat)
+ : sync_block("wavfile_source",
+ io_signature::make(0, 0, 0),
+ io_signature::make(1, 2, sizeof(float))),
+ d_fp(NULL),
+ d_repeat(repeat),
+ d_sample_rate(1),
+ d_nchans(1),
+ d_bytes_per_sample(2),
+ d_first_sample_pos(0),
+ d_samples_per_chan(0),
+ d_sample_idx(0)
+{
+ // we use "open" to use to the O_LARGEFILE flag
+
+ int fd;
+ if ((fd = open(filename, O_RDONLY | OUR_O_LARGEFILE | OUR_O_BINARY)) < 0) {
+ perror(filename);
+ throw std::runtime_error("can't open file");
+ }
- wavfile_source::sptr
- wavfile_source::make(const char *filename, bool repeat)
- {
- return gnuradio::get_initial_sptr
- (new wavfile_source_impl(filename, repeat));
+ if ((d_fp = fdopen(fd, "rb")) == NULL) {
+ perror(filename);
+ throw std::runtime_error("can't open file");
}
- wavfile_source_impl::wavfile_source_impl (const char *filename, bool repeat)
- : sync_block("wavfile_source",
- io_signature::make(0, 0, 0),
- io_signature::make(1, 2, sizeof(float))),
- d_fp(NULL), d_repeat(repeat),
- d_sample_rate(1), d_nchans(1), d_bytes_per_sample(2), d_first_sample_pos(0),
- d_samples_per_chan(0), d_sample_idx(0)
- {
- // we use "open" to use to the O_LARGEFILE flag
-
- int fd;
- if((fd = open (filename, O_RDONLY | OUR_O_LARGEFILE | OUR_O_BINARY)) < 0) {
- perror(filename);
- throw std::runtime_error("can't open file");
- }
-
- if((d_fp = fdopen(fd, "rb")) == NULL) {
- perror(filename);
- throw std::runtime_error("can't open file");
- }
-
- // Scan headers, check file validity
- if(!wavheader_parse(d_fp,
- d_sample_rate,
- d_nchans,
- d_bytes_per_sample,
- d_first_sample_pos,
- d_samples_per_chan)) {
- throw std::runtime_error("is not a valid wav file");
- }
-
- if(d_samples_per_chan == 0) {
- throw std::runtime_error("WAV file does not contain any samples");
- }
-
- if(d_bytes_per_sample == 1) {
- d_normalize_fac = 128;
- d_normalize_shift = 1;
- }
- else {
- d_normalize_fac = 0x7FFF;
- d_normalize_shift = 0;
- }
-
- // Re-set the output signature
- set_output_signature(io_signature::make(1, d_nchans, sizeof(float)));
+ // Scan headers, check file validity
+ if (!wavheader_parse(d_fp,
+ d_sample_rate,
+ d_nchans,
+ d_bytes_per_sample,
+ d_first_sample_pos,
+ d_samples_per_chan)) {
+ throw std::runtime_error("is not a valid wav file");
}
- wavfile_source_impl::~wavfile_source_impl ()
- {
- fclose(d_fp);
+ if (d_samples_per_chan == 0) {
+ throw std::runtime_error("WAV file does not contain any samples");
}
- float
- wavfile_source_impl::convert_to_float(short int sample)
- {
- float sample_out = (float)sample;
- sample_out /= d_normalize_fac;
- sample_out -= d_normalize_shift;
- return sample_out;
+ if (d_bytes_per_sample == 1) {
+ d_normalize_fac = 128;
+ d_normalize_shift = 1;
+ } else {
+ d_normalize_fac = 0x7FFF;
+ d_normalize_shift = 0;
}
- int
- wavfile_source_impl::work(int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
- {
- float **out = (float**)&output_items[0];
- int n_out_chans = output_items.size();
-
- int i;
- short sample;
-
- for(i = 0; i < noutput_items; i++) {
- if(d_sample_idx >= d_samples_per_chan) {
- if(!d_repeat) {
- // if nothing was read at all, say we're done.
- return i ? i : -1;
- }
-
- if(fseek (d_fp, d_first_sample_pos, SEEK_SET) == -1) {
- fprintf(stderr, "[%s] fseek failed\n", __FILE__);
- exit(-1);
- }
-
- d_sample_idx = 0;
- }
-
- for(int chan = 0; chan < d_nchans; chan++) {
- sample = wav_read_sample(d_fp, d_bytes_per_sample);
-
- if(chan < n_out_chans) {
- out[chan][i] = convert_to_float(sample);
- }
- }
-
- d_sample_idx++;
-
- // OK, EOF is not necessarily an error. But we're not going to
- // deal with handling corrupt wav files, so if they give us any
- // trouble they won't be processed. Serves them bloody right.
- if(feof(d_fp) || ferror(d_fp)) {
- if(i == 0) {
- fprintf(stderr, "[%s] WAV file has corrupted header or i/o error\n", __FILE__);
- return -1;
- }
- return i;
- }
- }
-
- return noutput_items;
+ // Re-set the output signature
+ set_output_signature(io_signature::make(1, d_nchans, sizeof(float)));
+}
+
+wavfile_source_impl::~wavfile_source_impl() { fclose(d_fp); }
+
+float wavfile_source_impl::convert_to_float(short int sample)
+{
+ float sample_out = (float)sample;
+ sample_out /= d_normalize_fac;
+ sample_out -= d_normalize_shift;
+ return sample_out;
+}
+
+int wavfile_source_impl::work(int noutput_items,
+ gr_vector_const_void_star& input_items,
+ gr_vector_void_star& output_items)
+{
+ float** out = (float**)&output_items[0];
+ int n_out_chans = output_items.size();
+
+ int i;
+ short sample;
+
+ for (i = 0; i < noutput_items; i++) {
+ if (d_sample_idx >= d_samples_per_chan) {
+ if (!d_repeat) {
+ // if nothing was read at all, say we're done.
+ return i ? i : -1;
+ }
+
+ if (fseek(d_fp, d_first_sample_pos, SEEK_SET) == -1) {
+ fprintf(stderr, "[%s] fseek failed\n", __FILE__);
+ exit(-1);
+ }
+
+ d_sample_idx = 0;
+ }
+
+ for (int chan = 0; chan < d_nchans; chan++) {
+ sample = wav_read_sample(d_fp, d_bytes_per_sample);
+
+ if (chan < n_out_chans) {
+ out[chan][i] = convert_to_float(sample);
+ }
+ }
+
+ d_sample_idx++;
+
+ // OK, EOF is not necessarily an error. But we're not going to
+ // deal with handling corrupt wav files, so if they give us any
+ // trouble they won't be processed. Serves them bloody right.
+ if (feof(d_fp) || ferror(d_fp)) {
+ if (i == 0) {
+ fprintf(stderr,
+ "[%s] WAV file has corrupted header or i/o error\n",
+ __FILE__);
+ return -1;
+ }
+ return i;
+ }
}
- } /* namespace blocks */
+ return noutput_items;
+}
+
+} /* namespace blocks */
} /* namespace gr */