diff --git a/Userland/Libraries/LibAudio/SampleFormats.cpp b/Userland/Libraries/LibAudio/SampleFormats.cpp index d45507df135..73e2a4d2f55 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 9f160d55b30..bccb20d7565 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); }