mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2025-01-04 23:51:49 +01:00
43 lines
1.4 KiB
C
43 lines
1.4 KiB
C
|
// license:BSD-3-Clause
|
||
|
// copyright-holders:Aaron Giles
|
||
|
/***************************************************************************
|
||
|
|
||
|
bitstream.h
|
||
|
|
||
|
Helper classes for reading/writing at the bit level.
|
||
|
|
||
|
***************************************************************************/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#ifndef __BITSTREAM_H__
|
||
|
#define __BITSTREAM_H__
|
||
|
|
||
|
#include <stdint.h>
|
||
|
|
||
|
//**************************************************************************
|
||
|
// TYPE DEFINITIONS
|
||
|
//**************************************************************************
|
||
|
|
||
|
// helper class for reading from a bit buffer
|
||
|
struct bitstream
|
||
|
{
|
||
|
uint32_t buffer; // current bit accumulator
|
||
|
int bits; // number of bits in the accumulator
|
||
|
const uint8_t * read; // read pointer
|
||
|
uint32_t doffset; // byte offset within the data
|
||
|
uint32_t dlength; // length of the data
|
||
|
};
|
||
|
|
||
|
struct bitstream* create_bitstream(const void *src, uint32_t srclength);
|
||
|
int bitstream_overflow(struct bitstream* bitstream);
|
||
|
uint32_t bitstream_read_offset(struct bitstream* bitstream);
|
||
|
|
||
|
uint32_t bitstream_read(struct bitstream* bitstream, int numbits);
|
||
|
uint32_t bitstream_peek(struct bitstream* bitstream, int numbits);
|
||
|
void bitstream_remove(struct bitstream* bitstream, int numbits);
|
||
|
uint32_t bitstream_flush(struct bitstream* bitstream);
|
||
|
|
||
|
|
||
|
#endif
|