view amrconv/bitmanip.c @ 423:cf90077b753c

twamr-tseq-enc: treat dribble input as non-fatal 3GPP VAD2 test sequences dt22.inp and dt23.inp have incomplete frames at the end, hence we need to ignore that dribble in a non-fatal manner in order to pass all tests.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 07 May 2024 07:20:29 +0000
parents b092a510141e
children
line wrap: on
line source

/*
 * 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);
}