19{
20 uint8_t head;
21 uint8_t SamplingRate;
22 uint32_t TimeInfo;
23
24 unsigned int ChannelMask() const
25 {
26 const static uint8_t mask = 0x60;
27 return (mask & head) >> 5;
28 }
29
30 unsigned int Amplitude() const
31 {
32 const static uint8_t mask = 0x18;
33 return (mask & head) >> 3;
34 }
35
36 bool Mark() const
37 {
38 const static uint8_t mask = 0x80;
39 return mask & head;
40 }
41
42 unsigned int amplitude() const
43 {
44 switch (Amplitude())
45 {
46 case 1: return 16;
47 case 2: return 24;
48 }
49 return 12;
50 }
51
52 unsigned int timeInfo() const
53 {
54 return ntohl(TimeInfo);
55 }
56
57 double samplingRate() const
58 {
59 const static double conv_factor = 1e6 / 128;
60 return SamplingRate * conv_factor;
61 }
62
63 unsigned int audioWordSize() const
64 {
65 unsigned int sample_size_bit = amplitude();
66
67 if (!ChannelMask())
68 sample_size_bit <<= 1;
69
70 const unsigned int size_bit = sample_size_bit + 8;
71
73
74
75 }
76
77};
static unsigned int roundUpPow2(unsigned int n, unsigned int multiple)