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

Method WaveEncoder

src/encoder/plugins/WaveEncoderPlugin.cxx:88–127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

86}
87
88WaveEncoder::WaveEncoder(AudioFormat &audio_format) noexcept
89 :Encoder(false)
90{
91 assert(audio_format.IsValid());
92
93 switch (audio_format.format) {
94 case SampleFormat::S8:
95 bits = 8;
96 break;
97
98 case SampleFormat::S16:
99 bits = 16;
100 break;
101
102 case SampleFormat::S24_P32:
103 bits = 24;
104 break;
105
106 case SampleFormat::S32:
107 bits = 32;
108 break;
109
110 default:
111 audio_format.format = SampleFormat::S16;
112 bits = 16;
113 break;
114 }
115
116 auto range = buffer.Write();
117 assert(range.size() >= sizeof(WaveHeader));
118 auto *header = (WaveHeader *)(void *)range.data();
119
120 /* create PCM wave header in initial buffer */
121 *header = MakeWaveHeader(audio_format.channels,
122 bits,
123 audio_format.sample_rate,
124 (bits / 8) * audio_format.channels);
125
126 buffer.Append(sizeof(*header));
127}
128
129static size_t
130pcm16_to_wave(uint16_t *dst16, const uint16_t *src16, size_t length)

Callers

nothing calls this directly

Calls 4

MakeWaveHeaderFunction · 0.85
IsValidMethod · 0.45
WriteMethod · 0.45
AppendMethod · 0.45

Tested by

no test coverage detected