summaryrefslogtreecommitdiff
path: root/shared-module/audiocore/__init__.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared-module/audiocore/__init__.c')
-rw-r--r--shared-module/audiocore/__init__.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/shared-module/audiocore/__init__.c b/shared-module/audiocore/__init__.c
index ac9d41b60..7bdfe460c 100644
--- a/shared-module/audiocore/__init__.c
+++ b/shared-module/audiocore/__init__.c
@@ -70,3 +70,63 @@ void audiosample_get_buffer_structure(mp_obj_t sample_obj, bool single_channel,
proto->get_buffer_structure(MP_OBJ_TO_PTR(sample_obj), single_channel, single_buffer,
samples_signed, max_buffer_length, spacing);
}
+
+void audiosample_convert_u8m_s16s(int16_t *buffer_out, const uint8_t *buffer_in, size_t nframes) {
+ for(;nframes--;) {
+ int16_t sample = (*buffer_in++ - 0x80) << 8;
+ *buffer_out++ = sample;
+ *buffer_out++ = sample;
+ }
+}
+
+
+void audiosample_convert_u8s_s16s(int16_t *buffer_out, const uint8_t *buffer_in, size_t nframes) {
+ size_t nsamples = 2*nframes;
+ for(;nsamples--;) {
+ int16_t sample = (*buffer_in++ - 0x80) << 8;
+ *buffer_out++ = sample;
+ }
+}
+
+void audiosample_convert_s8m_s16s(int16_t *buffer_out, const int8_t *buffer_in, size_t nframes) {
+ for(;nframes--;) {
+ int16_t sample = (*buffer_in++) << 8;
+ *buffer_out++ = sample;
+ *buffer_out++ = sample;
+ }
+}
+
+
+void audiosample_convert_s8s_s16s(int16_t *buffer_out, const int8_t *buffer_in, size_t nframes) {
+ size_t nsamples = 2*nframes;
+ for(;nsamples--;) {
+ int16_t sample = (*buffer_in++) << 8;
+ *buffer_out++ = sample;
+ }
+}
+
+
+void audiosample_convert_u16m_s16s(int16_t *buffer_out, const uint16_t *buffer_in, size_t nframes) {
+ for(;nframes--;) {
+ int16_t sample = *buffer_in++ - 0x8000;
+ *buffer_out++ = sample;
+ *buffer_out++ = sample;
+ }
+}
+
+
+void audiosample_convert_u16s_s16s(int16_t *buffer_out, const uint16_t *buffer_in, size_t nframes) {
+ size_t nsamples = 2*nframes;
+ for(;nsamples--;) {
+ int16_t sample = *buffer_in++ - 0x8000;
+ *buffer_out++ = sample;
+ }
+}
+
+void audiosample_convert_s16m_s16s(int16_t *buffer_out, const int16_t *buffer_in, size_t nframes) {
+ for(;nframes--;) {
+ int16_t sample = *buffer_in++;
+ *buffer_out++ = sample;
+ *buffer_out++ = sample;
+ }
+}