#define _BITSOURCE_H 1
#include <assert.h>
+#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <sys/types.h>
uint8_t* byte_read_ptr;
unsigned bytes_available;
+ // Some clients will purposedly read a bit ahead of the stream, causing
+ // problems at EOF. Thus, the client is allowed to request that we pad
+ // the end stream with a few bytes after the source reports EOF.
+ int padding_bytes_available;
+
// Data source.
input_func_t* input_func;
void* userdata;
+ bool source_eof;
};
-void init_bit_source(struct bit_source* source, input_func_t* input_func, void* userdata);
+void init_bit_source(struct bit_source* source, input_func_t* input_func,
+ unsigned padding_bytes, void* userdata);
// Internal function. Do not use.
void possibly_refill_slow_path(struct bit_source* source, unsigned num_bits);