combined JPEG 'receive' and JPEG 'extend', since baseline always extends everything it receives.
| 2150 | // combined JPEG 'receive' and JPEG 'extend', since baseline |
| 2151 | // always extends everything it receives. |
| 2152 | stbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n) |
| 2153 | { |
| 2154 | unsigned int k; |
| 2155 | int sgn; |
| 2156 | if (j->code_bits < n) stbi__grow_buffer_unsafe(j); |
| 2157 | if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing |
| 2158 | |
| 2159 | sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) |
| 2160 | k = stbi_lrot(j->code_buffer, n); |
| 2161 | j->code_buffer = k & ~stbi__bmask[n]; |
| 2162 | k &= stbi__bmask[n]; |
| 2163 | j->code_bits -= n; |
| 2164 | return k + (stbi__jbias[n] & (sgn - 1)); |
| 2165 | } |
| 2166 | |
| 2167 | // get some unsigned bits |
| 2168 | stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) |
no test coverage detected