Chrispy
High-performance multichannel ADC sampling and audio recording.
Loading...
Searching...
No Matches
WavHeader.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <limits.h>
4
#include <stdint.h>
5
6
#include "
Adc.h
"
7
8
using
adc::BitResolution
;
9
10
#define U8_BITS CHAR_BIT
11
#define U16_BITS (2 * U8_BITS)
12
20
struct
WavHeader
{
24
const
char
chunk_id
[4] = {
'R'
,
'I'
,
'F'
,
'F'
};
29
uint32_t
chunk_size
= 36;
33
const
char
format
[4] = {
'W'
,
'A'
,
'V'
,
'E'
};
37
const
char
subchunk_id
[4] = {
'f'
,
'm'
,
't'
,
' '
};
41
const
uint32_t
subchunk_size
= 16;
45
const
uint16_t
audio_format
= 1;
52
const
uint16_t
num_channels
= 1;
56
uint32_t
sample_rate
= 0;
62
uint32_t
byte_rate
= 0;
68
uint16_t
block_align
= 2;
73
uint16_t
bits_per_sample
;
77
const
char
sub_chunk_2_id
[4] = {
'd'
,
'a'
,
't'
,
'a'
};
83
uint32_t
sub_chunk_2_size
= 0;
84
92
void
fill
(BitResolution res, uint32_t file_size, uint32_t
sample_rate
);
93
};
Adc.h
adc::BitResolution
BitResolution
Supported bit resolutions for ADC sampling.
Definition
Adc.h:13
WavHeader
Header of a standard PCM WAV file.
Definition
WavHeader.h:20
WavHeader::bits_per_sample
uint16_t bits_per_sample
Number of bits per sample.
Definition
WavHeader.h:73
WavHeader::subchunk_id
const char subchunk_id[4]
Subchunk ID (always "fmt ").
Definition
WavHeader.h:37
WavHeader::chunk_size
uint32_t chunk_size
Size of (entire file in bytes - 8 bytes) or (data size + 36) Gets rewritten after data is fully writt...
Definition
WavHeader.h:29
WavHeader::block_align
uint16_t block_align
Byte alignment of each sample.
Definition
WavHeader.h:68
WavHeader::format
const char format[4]
Format identifier (always "WAVE").
Definition
WavHeader.h:33
WavHeader::audio_format
const uint16_t audio_format
Audio format code (PCM = 1).
Definition
WavHeader.h:45
WavHeader::byte_rate
uint32_t byte_rate
Byte rate.
Definition
WavHeader.h:62
WavHeader::chunk_id
const char chunk_id[4]
RIFF chunk identifier ("RIFF").
Definition
WavHeader.h:24
WavHeader::sub_chunk_2_size
uint32_t sub_chunk_2_size
Size of data chunk.
Definition
WavHeader.h:83
WavHeader::subchunk_size
const uint32_t subchunk_size
Size of the "fmt " subchunk (always 16).
Definition
WavHeader.h:41
WavHeader::sample_rate
uint32_t sample_rate
Sampling rate in hertz (samples per second).
Definition
WavHeader.h:56
WavHeader::num_channels
const uint16_t num_channels
Number of channels.
Definition
WavHeader.h:52
WavHeader::fill
void fill(BitResolution res, uint32_t file_size, uint32_t sample_rate)
Fill in WAV header fields once all details are known.
Definition
WavHeader.cpp:3
WavHeader::sub_chunk_2_id
const char sub_chunk_2_id[4]
Subchunk 2 ID.
Definition
WavHeader.h:77
runner
work
chrispy
chrispy
src
WavHeader.h
Generated by
1.9.8