From 7bb128e1edf242b390f73edf401a5e0086ebc283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Fri, 30 Jun 2023 20:07:18 +0200 Subject: [PATCH] LibAudio: Add integer sample format-specific support This allows us to better handle specifically integer sample formats. --- Userland/Libraries/LibAudio/SampleFormats.cpp | 21 +++++++++++++++++++ Userland/Libraries/LibAudio/SampleFormats.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/Userland/Libraries/LibAudio/SampleFormats.cpp b/Userland/Libraries/LibAudio/SampleFormats.cpp index d45507df13..73e2a4d2f5 100644 --- a/Userland/Libraries/LibAudio/SampleFormats.cpp +++ b/Userland/Libraries/LibAudio/SampleFormats.cpp @@ -27,6 +27,27 @@ u16 pcm_bits_per_sample(PcmSampleFormat format) } } +bool is_integer_format(PcmSampleFormat format) +{ + return format == PcmSampleFormat::Uint8 || format == PcmSampleFormat::Int16 || format == PcmSampleFormat::Int24 || format == PcmSampleFormat::Int32; +} + +Optional integer_sample_format_for(u16 bits_per_sample) +{ + switch (bits_per_sample) { + case 8: + return PcmSampleFormat::Uint8; + case 16: + return PcmSampleFormat::Int16; + case 24: + return PcmSampleFormat::Int24; + case 32: + return PcmSampleFormat::Int32; + default: + return {}; + } +} + DeprecatedString sample_format_name(PcmSampleFormat format) { bool is_float = format == PcmSampleFormat::Float32 || format == PcmSampleFormat::Float64; diff --git a/Userland/Libraries/LibAudio/SampleFormats.h b/Userland/Libraries/LibAudio/SampleFormats.h index 9f160d55b3..bccb20d756 100644 --- a/Userland/Libraries/LibAudio/SampleFormats.h +++ b/Userland/Libraries/LibAudio/SampleFormats.h @@ -23,5 +23,7 @@ enum class PcmSampleFormat : u8 { // Most of the read code only cares about how many bits to read or write u16 pcm_bits_per_sample(PcmSampleFormat format); +bool is_integer_format(PcmSampleFormat format); +Optional integer_sample_format_for(u16 bits_per_sample); DeprecatedString sample_format_name(PcmSampleFormat format); }