librfn
An ad-hoc utility library
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
include
librfn
wavheader.h
Go to the documentation of this file.
1
/*
2
* wavheader.h
3
*
4
* Part of librfn (a general utility library from redfelineninja.org.uk)
5
*
6
* Copyright (C) 2012-2014 Daniel Thompson <daniel@redfelineninja.org.uk>
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU Lesser General Public License as published
10
* by the Free Software Foundation; either version 3 of the License, or
11
* (at your option) any later version.
12
*/
13
14
#ifndef RF_WAVHEADER_H_
15
#define RF_WAVHEADER_H_
16
17
#include <stdint.h>
18
#include <stdlib.h>
19
28
typedef
struct
rf_wavheader
{
29
uint8_t
chunk_id
[4];
30
uint32_t
chunk_size
;
31
uint8_t
format
[4];
32
33
uint8_t
fmt_chunk_id
[4];
34
uint32_t
fmt_chunk_size
;
35
uint16_t
audio_format
;
36
uint16_t
num_channels
;
37
uint32_t
sample_rate
;
38
uint32_t
byte_rate
;
39
uint16_t
block_align
;
40
uint16_t
bits_per_sample
;
41
uint16_t
cb_size
;
// not present in PCM
42
uint16_t
valid_bits_per_sample
;
// not present in PCM
43
uint32_t
channel_mask
;
// not present in PCM
44
uint8_t
sub_format
[16];
// not present in PCM
45
46
uint8_t
fact_chunk_id
[4];
// not present in PCM
47
uint32_t
fact_chunk_size
;
// not present in PCM
48
uint32_t
sample_length
;
// not present in PCM
49
50
uint8_t
data_chunk_id
[4];
51
uint32_t
data_chunk_size
;
52
}
rf_wavheader_t
;
53
54
typedef
enum
{
55
RF_WAVHEADER_UNKNOWN
= -1,
56
RF_WAVHEADER_S16LE
,
57
RF_WAVHEADER_S32LE
,
58
RF_WAVHEADER_FLOAT
59
}
rf_wavheader_format_t
;
60
61
#define RF_WAVHEADER_MIN_SIZE 44
62
63
int
rf_wavheader_decode
(
const
uint8_t *p,
unsigned
int
sz,
rf_wavheader_t
*wh);
64
int
rf_wavheader_encode
(
rf_wavheader_t
*wh, uint8_t *p,
unsigned
int
sz);
65
rf_wavheader_format_t
rf_wavheader_get_format
(
rf_wavheader_t
*wh);
66
void
rf_wavheader_init
(
rf_wavheader_t
*wh,
int
sfreq,
int
num_channels,
67
rf_wavheader_format_t
format);
68
void
rf_wavheader_set_num_frames
(
rf_wavheader_t
*wh,
unsigned
int
num_frames);
69
char
*
rf_wavheader_tostring
(
rf_wavheader_t
*wh);
70
int
rf_wavheader_validate
(
rf_wavheader_t
*wh);
71
73
#endif // RF_WAVHEADER_H_
rf_wavheader::data_chunk_size
uint32_t data_chunk_size
Definition:
wavheader.h:51
rf_wavheader_t
struct rf_wavheader rf_wavheader_t
rf_wavheader::channel_mask
uint32_t channel_mask
Definition:
wavheader.h:43
rf_wavheader::byte_rate
uint32_t byte_rate
Definition:
wavheader.h:38
rf_wavheader::block_align
uint16_t block_align
Definition:
wavheader.h:39
rf_wavheader::sample_rate
uint32_t sample_rate
Definition:
wavheader.h:37
rf_wavheader_set_num_frames
void rf_wavheader_set_num_frames(rf_wavheader_t *wh, unsigned int num_frames)
Definition:
wavheader.c:184
rf_wavheader_decode
int rf_wavheader_decode(const uint8_t *p, unsigned int sz, rf_wavheader_t *wh)
Definition:
wavheader.c:29
RF_WAVHEADER_UNKNOWN
Definition:
wavheader.h:55
rf_wavheader_tostring
char * rf_wavheader_tostring(rf_wavheader_t *wh)
Definition:
wavheader.c:211
rf_wavheader::sample_length
uint32_t sample_length
Definition:
wavheader.h:48
rf_wavheader::sub_format
uint8_t sub_format[16]
Definition:
wavheader.h:44
rf_wavheader::valid_bits_per_sample
uint16_t valid_bits_per_sample
Definition:
wavheader.h:42
rf_wavheader::fmt_chunk_size
uint32_t fmt_chunk_size
Definition:
wavheader.h:34
rf_wavheader::fact_chunk_size
uint32_t fact_chunk_size
Definition:
wavheader.h:47
rf_wavheader_init
void rf_wavheader_init(rf_wavheader_t *wh, int sfreq, int num_channels, rf_wavheader_format_t format)
Definition:
wavheader.c:154
rf_wavheader_get_format
rf_wavheader_format_t rf_wavheader_get_format(rf_wavheader_t *wh)
Definition:
wavheader.c:135
rf_wavheader::fmt_chunk_id
uint8_t fmt_chunk_id[4]
Definition:
wavheader.h:33
rf_wavheader::chunk_id
uint8_t chunk_id[4]
Definition:
wavheader.h:29
rf_wavheader_format_t
rf_wavheader_format_t
Definition:
wavheader.h:54
rf_wavheader::data_chunk_id
uint8_t data_chunk_id[4]
Definition:
wavheader.h:50
rf_wavheader::format
uint8_t format[4]
Definition:
wavheader.h:31
rf_wavheader::fact_chunk_id
uint8_t fact_chunk_id[4]
Definition:
wavheader.h:46
rf_wavheader_encode
int rf_wavheader_encode(rf_wavheader_t *wh, uint8_t *p, unsigned int sz)
Definition:
wavheader.c:90
RF_WAVHEADER_S32LE
Definition:
wavheader.h:57
RF_WAVHEADER_FLOAT
Definition:
wavheader.h:58
RF_WAVHEADER_S16LE
Definition:
wavheader.h:56
rf_wavheader
Definition:
wavheader.h:28
rf_wavheader::audio_format
uint16_t audio_format
Definition:
wavheader.h:35
rf_wavheader::bits_per_sample
uint16_t bits_per_sample
Definition:
wavheader.h:40
rf_wavheader::chunk_size
uint32_t chunk_size
Definition:
wavheader.h:30
rf_wavheader::num_channels
uint16_t num_channels
Definition:
wavheader.h:36
rf_wavheader_validate
int rf_wavheader_validate(rf_wavheader_t *wh)
Definition:
wavheader.c:220
rf_wavheader::cb_size
uint16_t cb_size
Definition:
wavheader.h:41
Generated on Sat Feb 6 2016 21:25:32 for librfn by
1.8.10