Rework the converter to use the pack/unpack functions Because the unpack functions can only unpack to 1 format, add a separate conversion step for doubles when the unpack function produces int. Do conversion to S32 in the quantize function directly. Tweak the conversion factor for doing float->int conversion slightly to get the full range of negative samples, use clamp to make sure we don't exceed our int range on the positive axis (see also #755301)
16 lines
281 B
Plaintext
16 lines
281 B
Plaintext
.function audio_convert_orc_s32_to_double
|
|
.dest 8 d1 gdouble
|
|
.source 4 s1 gint32
|
|
.temp 8 t1
|
|
|
|
convld t1, s1
|
|
divd d1, t1, 0x41DFFFFFFFC00000L
|
|
|
|
.function audio_convert_orc_double_to_s32
|
|
.dest 4 d1 gint32
|
|
.source 8 s1 gdouble
|
|
.temp 8 t1
|
|
|
|
muld t1, s1, 0x41DFFFFFFFC00000L
|
|
convdl d1, t1
|