diff amrconv/bitmanip.c @ 184:b092a510141e

tree reorg: move gsm-amr2efr & gsm-efr2amr to amrconv subdir
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 03 Jan 2023 02:33:45 +0000
parents miscutil/bitmanip.c@41f1ae68d253
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/amrconv/bitmanip.c	Tue Jan 03 02:33:45 2023 +0000
@@ -0,0 +1,27 @@
+/*
+ * This module provides two utility functions that serve as building blocks
+ * for frame bit reordering operations.
+ */
+
+#include <stdint.h>
+
+msb_get_bit(buf, bn)
+	uint8_t *buf;
+{
+	int pos_byte = bn >> 3;
+	int pos_bit  = 7 - (bn & 7);
+
+	return (buf[pos_byte] >> pos_bit) & 1;
+}
+
+msb_set_bit(buf, bn, bit)
+	uint8_t *buf;
+{
+	int pos_byte = bn >> 3;
+	int pos_bit  = 7 - (bn & 7);
+
+	if (bit)
+		buf[pos_byte] |= (1 << pos_bit);
+	else
+		buf[pos_byte] &= ~(1 << pos_bit);
+}