libsf3
Loading...
Searching...
No Matches
sf3_audio.h
Go to the documentation of this file.
1#ifndef __SF3_AUDIO__
2#define __SF3_AUDIO__
3#include "sf3_core.h"
4
6#define SF3_FORMAT_ID_AUDIO 0x02
7
33
38 struct sf3_identifier identifier;
40 uint32_t samplerate;
42 uint8_t channels;
45 uint8_t format;
47 uint64_t frame_count;
51 char samples[];
52};
53
56 return audio->format & 0x0F;
57}
58
60SF3_INLINE int sf3_audio_frame_size(const struct sf3_audio *audio){
61 return (audio->format & 0x0F) * audio->channels;
62}
63
66 return audio->frame_count * audio->channels;
67}
68
70SF3_INLINE float sf3_audio_duration(const struct sf3_audio *audio){
71 return ((double)audio->frame_count) / audio->samplerate;
72}
73
76 switch(format){
77 case SF3_SAMPLE_ALAW: return "A-law";
78 case SF3_SAMPLE_INT16: return "int16";
79 case SF3_SAMPLE_INT32: return "int32";
80 case SF3_SAMPLE_INT64: return "int64";
81 case SF3_SAMPLE_ULAW: return "u-law";
82 case SF3_SAMPLE_UINT16: return "uint16";
83 case SF3_SAMPLE_UINT32: return "uint32";
84 case SF3_SAMPLE_UINT64: return "uint64";
85 case SF3_SAMPLE_FLOAT16: return "float2";
86 case SF3_SAMPLE_FLOAT32: return "float4";
87 case SF3_SAMPLE_FLOAT64: return "float8";
88 default: return "Unknown";
89 }
90}
91
93SF3_EXPORT size_t sf3_audio_size(const struct sf3_audio *audio){
94 return sizeof(struct sf3_audio)
96}
97#endif
sf3_audio_format
The possible audio sample formats.
Definition sf3_audio.h:9
@ SF3_SAMPLE_FLOAT64
The audio is stored as 64-bit IEEE double-precision floats.
Definition sf3_audio.h:31
@ SF3_SAMPLE_UINT16
The audio is stored as 16-bit unsigned PCM.
Definition sf3_audio.h:21
@ SF3_SAMPLE_INT32
The audio is stored as 32-bit signed PCM.
Definition sf3_audio.h:15
@ SF3_SAMPLE_ALAW
The audio is stored as bytes encoded in the "A-law" scheme.
Definition sf3_audio.h:11
@ SF3_SAMPLE_FLOAT16
The audio is stored as 16-bit IEEE half-precision floats.
Definition sf3_audio.h:27
@ SF3_SAMPLE_UINT64
The audio is stored as 64-bit unsigned PCM.
Definition sf3_audio.h:25
@ SF3_SAMPLE_INT64
The audio is stored as 64-bit signed PCM.
Definition sf3_audio.h:17
@ SF3_SAMPLE_INT16
The audio is stored as 16-bit signed PCM.
Definition sf3_audio.h:13
@ SF3_SAMPLE_FLOAT32
The audio is stored as 32-bit IEEE single-precision floats.
Definition sf3_audio.h:29
@ SF3_SAMPLE_UINT32
The audio is stored as 32-bit unsigned PCM.
Definition sf3_audio.h:23
@ SF3_SAMPLE_ULAW
The audio is stored as bytes encoded in the "u-law" scheme.
Definition sf3_audio.h:19
SF3_INLINE int sf3_audio_frame_size(const struct sf3_audio *audio)
Returns the number of bytes per audio frame.
Definition sf3_audio.h:60
SF3_INLINE float sf3_audio_duration(const struct sf3_audio *audio)
Returns the duration of the audio data in seconds.
Definition sf3_audio.h:70
SF3_INLINE int sf3_audio_sample_count(const struct sf3_audio *audio)
Returns the total number of samples of audio stored.
Definition sf3_audio.h:65
SF3_EXPORT size_t sf3_audio_size(const struct sf3_audio *audio)
Computes the size of the audio file in bytes.
Definition sf3_audio.h:93
SF3_INLINE int sf3_audio_sample_size(const struct sf3_audio *audio)
Returns the number of bytes per audio sample.
Definition sf3_audio.h:55
#define SF3_INLINE
Definition sf3_core.h:16
#define SF3_EXPORT
Definition sf3_core.h:13
#define SF3_PACK
Definition sf3_core.h:9
uint32_t samplerate
The samplerate of the audio in Hertz.
Definition sf3_audio.h:40
uint8_t channels
The number of audio channels per audio frame.
Definition sf3_audio.h:42
uint64_t frame_count
The total number of audio frames stored.
Definition sf3_audio.h:47
uint8_t format
Definition sf3_audio.h:45
The basic header structure of every SF3 file.
Definition sf3_core.h:70