MCPcopy Create free account
hub / github.com/MusicPlayerDaemon/MPD / MakeWaveHeader

Function MakeWaveHeader

src/encoder/plugins/WaveEncoderPlugin.cxx:50–80  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

48static_assert(sizeof(WaveHeader) == 44);
49
50static WaveHeader
51MakeWaveHeader(int channels, int bits,
52 int freq, int block_size) noexcept
53{
54 WaveHeader header{};
55
56 int data_size = 0x0FFFFFFF;
57
58 /* constants */
59 memcpy(header.file_header.id, "RIFF", 4);
60 memcpy(header.file_header.format, "WAVE", 4);
61 memcpy(header.fmt_header.id, "fmt ", 4);
62 memcpy(header.data_header.id, "data", 4);
63
64 /* wave format */
65 header.fmt.tag = ToLE16(RiffFmtChunk::TAG_PCM);
66 header.fmt.channels = ToLE16(channels);
67 header.fmt.bits_per_sample = ToLE16(bits);
68 header.fmt.sample_rate = ToLE32(freq);
69 header.fmt.block_align = ToLE16(block_size);
70 header.fmt.byte_rate = ToLE32(freq * block_size);
71
72 /* chunk sizes (fake data length) */
73 header.fmt_header.size = ToLE32(sizeof(header.fmt));
74 header.data_header.size = ToLE32(data_size);
75 header.file_header.size = ToLE32(4 +
76 sizeof(header.fmt_header) + sizeof(header.fmt) +
77 sizeof(header.data_header) + data_size);
78
79 return header;
80}
81
82static PreparedEncoder *
83wave_encoder_init([[maybe_unused]] const ConfigBlock &block)

Callers 1

WaveEncoderMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected