2010年2月1日 星期一

JPEG emit_bits_s

emit_bits_s()  called by encode_one_block() in jchuff.c
所做的事就是單純地把bit 輸出

put_buffer 32bit 只用到右邊24bit
每次進來的bits 最多是16bit
再加上之前殘餘的最多不超過8bit( <= 7bit )
所以24bit 就足夠了


At most 16 bits can be passed to emit_bits

 in one call, and we never retain more than 7 bits in put_buffer
 between calls, so 24 bits are sufficient.

前次殘餘的bit + 這次進來的 bit
超過8bit 就輸出一個byte

1. 進來的code
2. 往左shift 靠在第24bit的位置
3. OR 之前的bit
4. 每8個bit 輸出一個byte 直到資料小於8bit

沒有留言: