KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
What is the fastest way to write a bitstream on x86/x86-64? (codeword <= 32bit) by writing a bitstream I refer to the process of concatenating variable bit-length symbols into a contiguous memory buffer. currently I've got a standard container with a 32bit intermediate buffer to write to void write_bits(SomeContainer<unsigned int>& dst,unsigned int& buffer, unsigned int& bits_left_in_buffer,int codeword, short bits_to_write){ if(bits_to_write < bits_left_in_buffer){ buffer|= codeword << (32-bits_left_in_buffer); bits_left_in_buffer -= bits_to_write; }else{ unsigned int full_bits = bits_to_write - bits_left_in_buffer; unsigned int towrite = buffer|(codeword<<(32-bits_left_in_buffer)); buffer= full_bits ? (codeword >> bits_left_in_buffer) : 0; dst.push_back(towrite); bits_left_in_buffer = 32-full_bits; } } Does anyone know of any nice optimizations, fast instructions or other info that may be of use? Cheers,
Tags (comma-separated)
Save Edits
Cancel