Use only 12 bits for the temperature.
When using all 16 bits for the temperature, the resulting values are clearly wrong in some cases. Most likely the upper 4 bits are used to store something else. Even with only 12 bits, the resulting temperature range (0-409.5°C) should still be more than sufficient.
This commit is contained in:
parent
b4250ef74d
commit
5c16b28fb9
@ -237,7 +237,7 @@ mares_iconhd_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t
|
||||
if (callback) callback (DC_SAMPLE_DEPTH, sample, userdata);
|
||||
|
||||
// Temperature (1/10 °C).
|
||||
unsigned int temperature = array_uint16_le (data + offset + 2);
|
||||
unsigned int temperature = array_uint16_le (data + offset + 2) & 0x0FFF;
|
||||
sample.temperature = temperature / 10.0;
|
||||
if (callback) callback (DC_SAMPLE_TEMPERATURE, sample, userdata);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user