diff --git a/Userland/Libraries/LibAudio/FlacLoader.cpp b/Userland/Libraries/LibAudio/FlacLoader.cpp index 1ac3f62cf7..134bd6755d 100644 --- a/Userland/Libraries/LibAudio/FlacLoader.cpp +++ b/Userland/Libraries/LibAudio/FlacLoader.cpp @@ -621,10 +621,17 @@ Vector FlacLoaderPlugin::parse_subframe(FlacSubframeHeader& subframe_header return resampler.resample(samples); } -// Decode a subframe that isn't actually encoded -Vector FlacLoaderPlugin::decode_verbatim([[maybe_unused]] FlacSubframeHeader& subframe, [[maybe_unused]] InputBitStream& bit_input) +// Decode a subframe that isn't actually encoded, usually seen in random data +Vector FlacLoaderPlugin::decode_verbatim(FlacSubframeHeader& subframe, InputBitStream& bit_input) { - TODO(); + Vector decoded; + decoded.ensure_capacity(m_current_frame->sample_count); + + for (size_t i = 0; i < m_current_frame->sample_count; ++i) { + decoded.unchecked_append(sign_extend(bit_input.read_bits_big_endian(subframe.bits_per_sample - subframe.wasted_bits_per_sample), subframe.bits_per_sample - subframe.wasted_bits_per_sample)); + } + + return decoded; } // Decode a subframe encoded with a custom linear predictor coding, i.e. the subframe provides the polynomial order and coefficients