diff options
author | Marcus Müller <mmueller@gnuradio.org> | 2019-08-07 21:45:12 +0200 |
---|---|---|
committer | Marcus Müller <marcus@hostalia.de> | 2019-08-09 23:04:28 +0200 |
commit | f7bbf2c1d8d780294f3e016aff239ca35eb6516e (patch) | |
tree | e09ab6112e02b2215b2d59ac24d3d6ea2edac745 /gr-blocks/lib/wavfile_source_impl.cc | |
parent | 78431dc6941e3acc67c858277dfe4a0ed583643c (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.cc | 231 |
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 */ |