[alsa-devel] Suspecting a bug in plugin_ops.h
Hi all,
I'm using alsalib and I checked its code because of one issue I have.
I did not yet solved my issue, but I think I saw a bug in alsa-lib that I would like to share with you.
It is located in [alsa-lib]/src/pcm/plugin_ops.h in the inline function sx24s().
static inline u_int32_t sx24s(u_int32_t x) { if(x&0x00008000) return x|0x000000FF; return x&0xFFFFFF00; }
I think that 0x00008000 should be replaced by 0x00000800.
Thanks Regards
Mathieu
Soulard, MathieuX wrote:
static inline u_int32_t sx24s(u_int32_t x) { if(x&0x00008000) return x|0x000000FF; return x&0xFFFFFF00; }
I think that 0x00008000 should be replaced by 0x00000800.
This function is indented to sign-extended a 24-bit value to 32 bits, operating in 'wrong' endianness.
Why do you think that the sign bit is in the highest bit of the second- highest nibble?
Regards, Clemens
static inline u_int32_t sx24s(u_int32_t x) { if(x&0x00008000) return x|0x000000FF; return x&0xFFFFFF00; }
I think that 0x00008000 should be replaced by 0x00000800.
This function is indented to sign-extended a 24-bit value to 32 bits, operating in 'wrong' endianness.
Why do you think that the sign bit is in the highest bit of the second- highest nibble?
Well... because I think I made a mistake ! Actually I missed the endianness here, I thought about another format.
Thanks for your prompt response.
Thanks Regards
Mathieu
participants (2)
-
Clemens Ladisch
-
Soulard, MathieuX