72 {
76
77 std::vector<std::remove_pointer_t<samplePtr>> sampleData;
78 sampleData.resize(dataSize);
79
80 const size_t samplesRead =
Block.
Block->GetSamples(
82
83
84
85
87
89 {
90 constexpr size_t conversionSamplesCount = 4096;
91
92 const int16_t* int16Data = reinterpret_cast<const int16_t*>(sampleData.data());
93 std::vector<int32_t> buffer;
94 buffer.resize(conversionSamplesCount);
95
96 for (size_t firstSample = 0; firstSample < samplesRead;
97 firstSample += conversionSamplesCount)
98 {
99 const auto samplesThisRun =
100 std::min(conversionSamplesCount, samplesRead - firstSample);
101
102 for (size_t i = 0; i < samplesThisRun; ++i)
103 buffer[i] =
104 (static_cast<int32_t>(int16Data[firstSample + i]) * 65536) >>
105 16;
106
107 WavpackPackSamples(
Context, buffer.data(), samplesThisRun);
108 }
109 }
110 else
111 {
112 const void* data = sampleData.data();
113 WavpackPackSamples(
114 Context,
static_cast<int32_t*
>(
const_cast<void*
>(data)),
115 samplesRead);
116 }
117
119
121 }
Positions or offsets within audio files need a wide type.
std::vector< uint8_t > CompressedData