GNU Radio 3.6.5.1 C++ API
wavfile_sink_impl.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2008,2009,2013 Free Software Foundation, Inc.
4
*
5
* This file is part of GNU Radio
6
*
7
* GNU Radio is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 3, or (at your option)
10
* any later version.
11
*
12
* GNU Radio is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with GNU Radio; see the file COPYING. If not, write to
19
* the Free Software Foundation, Inc., 51 Franklin Street,
20
* Boston, MA 02110-1301, USA.
21
*/
22
23
#ifndef INCLUDED_GR_WAVFILE_SINK_IMPL_H
24
#define INCLUDED_GR_WAVFILE_SINK_IMPL_H
25
26
#include <
blocks/wavfile_sink.h
>
27
#include <
gr_file_sink_base.h
>
28
29
namespace
gr {
30
namespace
blocks {
31
32
class
wavfile_sink_impl
:
public
wavfile_sink
33
{
34
private
:
35
unsigned
d_sample_rate;
36
int
d_nchans;
37
unsigned
d_sample_count;
38
int
d_bytes_per_sample;
39
int
d_bytes_per_sample_new;
40
int
d_max_sample_val;
41
int
d_min_sample_val;
42
int
d_normalize_shift;
43
int
d_normalize_fac;
44
45
FILE *d_fp;
46
FILE *d_new_fp;
47
bool
d_updated;
48
boost::mutex
d_mutex;
49
50
/*!
51
* \brief Convert a sample value within [-1;+1] to a corresponding
52
* short integer value
53
*/
54
short
convert_to_short(
float
sample);
55
56
/*!
57
* \brief If any file changes have occurred, update now. This is called
58
* internally by work() and thus doesn't usually need to be called by
59
* hand.
60
*/
61
void
do_update();
62
63
/*!
64
* \brief Writes information to the WAV header which is not available
65
* a-priori (chunk size etc.) and closes the file. Not thread-safe and
66
* assumes d_fp is a valid file pointer, should thus only be called by
67
* other methods.
68
*/
69
void
close_wav();
70
71
public
:
72
wavfile_sink_impl
(
const
char
*filename,
73
int
n_channels,
74
unsigned
int
sample_rate
,
75
int
bits_per_sample
);
76
~wavfile_sink_impl
();
77
78
bool
open
(
const
char
* filename);
79
void
close
();
80
81
void
set_sample_rate
(
unsigned
int
sample_rate);
82
void
set_bits_per_sample
(
int
bits_per_sample);
83
84
int
bits_per_sample
();
85
unsigned
int
sample_rate
();
86
87
int
work
(
int
noutput_items,
88
gr_vector_const_void_star
&input_items,
89
gr_vector_void_star
&output_items);
90
};
91
92
}
/* namespace blocks */
93
}
/* namespace gr */
94
95
#endif
/* INCLUDED_GR_WAVFILE_SINK_IMPL_H */
gr-blocks
lib
wavfile_sink_impl.h
Generated on Mon Aug 19 2013 15:37:32 for GNU Radio 3.6.5.1 C++ API by
1.8.1.2