pcm/Dsd{16,32}: move the conversion loop to a separate function
This commit is contained in:
parent
ca8451cdbc
commit
96d74e77eb
@ -39,6 +39,18 @@ Dsd8To16Sample(const uint8_t *src, unsigned channels) noexcept
|
|||||||
return Construct16(src[0], src[channels]);
|
return Construct16(src[0], src[channels]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
Dsd8To16(uint16_t *dest, const uint8_t *src,
|
||||||
|
size_t out_frames, unsigned channels) noexcept
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < out_frames; ++i) {
|
||||||
|
for (size_t c = 0; c < channels; ++c)
|
||||||
|
*dest++ = Dsd8To16Sample(src++, channels);
|
||||||
|
|
||||||
|
src += channels;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ConstBuffer<uint16_t>
|
ConstBuffer<uint16_t>
|
||||||
Dsd8To16(PcmBuffer &buffer, unsigned channels,
|
Dsd8To16(PcmBuffer &buffer, unsigned channels,
|
||||||
ConstBuffer<uint8_t> _src) noexcept
|
ConstBuffer<uint8_t> _src) noexcept
|
||||||
@ -48,15 +60,8 @@ Dsd8To16(PcmBuffer &buffer, unsigned channels,
|
|||||||
const size_t out_samples = out_frames * channels;
|
const size_t out_samples = out_frames * channels;
|
||||||
|
|
||||||
const uint8_t *src = _src.data;
|
const uint8_t *src = _src.data;
|
||||||
uint16_t *const dest0 = buffer.GetT<uint16_t>(out_samples);
|
const auto dest = buffer.GetT<uint16_t>(out_samples);
|
||||||
uint16_t *dest = dest0;
|
Dsd8To16(dest, src, out_frames, channels);
|
||||||
|
|
||||||
for (size_t i = 0; i < out_frames; ++i) {
|
return {dest, out_samples};
|
||||||
for (size_t c = 0; c < channels; ++c)
|
|
||||||
*dest++ = Dsd8To16Sample(src++, channels);
|
|
||||||
|
|
||||||
src += channels;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {dest0, out_samples};
|
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,18 @@ Dsd8To32Sample(const uint8_t *src, unsigned channels) noexcept
|
|||||||
src[2 * channels], src[3 * channels]);
|
src[2 * channels], src[3 * channels]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
Dsd8To32(uint32_t *dest, const uint8_t *src,
|
||||||
|
size_t out_frames, unsigned channels) noexcept
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < out_frames; ++i) {
|
||||||
|
for (size_t c = 0; c < channels; ++c)
|
||||||
|
*dest++ = Dsd8To32Sample(src++, channels);
|
||||||
|
|
||||||
|
src += 3 * channels;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ConstBuffer<uint32_t>
|
ConstBuffer<uint32_t>
|
||||||
Dsd8To32(PcmBuffer &buffer, unsigned channels,
|
Dsd8To32(PcmBuffer &buffer, unsigned channels,
|
||||||
ConstBuffer<uint8_t> _src) noexcept
|
ConstBuffer<uint8_t> _src) noexcept
|
||||||
@ -50,15 +62,8 @@ Dsd8To32(PcmBuffer &buffer, unsigned channels,
|
|||||||
const size_t out_samples = out_frames * channels;
|
const size_t out_samples = out_frames * channels;
|
||||||
|
|
||||||
const uint8_t *src = _src.data;
|
const uint8_t *src = _src.data;
|
||||||
uint32_t *const dest0 = buffer.GetT<uint32_t>(out_samples);
|
const auto dest = buffer.GetT<uint32_t>(out_samples);
|
||||||
uint32_t *dest = dest0;
|
Dsd8To32(dest, src, out_frames, channels);
|
||||||
|
|
||||||
for (size_t i = 0; i < out_frames; ++i) {
|
return {dest, out_samples};
|
||||||
for (size_t c = 0; c < channels; ++c)
|
|
||||||
*dest++ = Dsd8To32Sample(src++, channels);
|
|
||||||
|
|
||||||
src += 3 * channels;
|
|
||||||
}
|
|
||||||
|
|
||||||
return {dest0, out_samples};
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user