gstreamer/gst-libs/gst/audio/gstaudiopack.orc
Wim Taymans c36ac3ce45 audioconvert: move audio quantize code to libs
Move the audio quantize code from audioconvert to the audio library.
work on making an audio converter helper function similar to the video
converter.
Fold fastrandom directly into the quantizer, add some ORC code to
optimize this later.
2015-11-06 12:10:48 +01:00

410 lines
5.8 KiB
Text

.function audio_orc_unpack_u8
.dest 4 d1 gint32
.source 1 s1 guint8
.const 4 c1 0x80000000
.temp 4 t3
splatbl t3, s1
xorl d1, t3, c1
.function audio_orc_unpack_u8_trunc
.dest 4 d1 gint32
.source 1 s1 guint8
.const 4 c1 0x80000000
.const 4 c2 24
.temp 4 t3
splatbl t3, s1
shll t3, t3, c2
xorl d1, t3, c1
.function audio_orc_unpack_s8
.dest 4 d1 gint32
.source 1 s1 guint8
.const 4 c1 0x00808080
.temp 2 t2
.temp 4 t3
splatbl t3, s1
xorl d1, t3, c1
.function audio_orc_unpack_s8_trunc
.dest 4 d1 gint32
.source 1 s1 guint8
.const 4 c1 24
.temp 4 t3
splatbl t3, s1
shll d1, t3, c1
.function audio_orc_unpack_u16
.dest 4 d1 gint32
.source 2 s1 guint8
.const 4 c1 0x80000000
.temp 4 t2
mergewl t2, s1, s1
xorl d1, t2, c1
.function audio_orc_unpack_u16_trunc
.dest 4 d1 gint32
.source 2 s1 guint8
.const 4 c2 16
.const 4 c1 0x80000000
.temp 4 t2
mergewl t2, s1, s1
shll t2, t2, c2
xorl d1, t2, c1
.function audio_orc_unpack_s16
.dest 4 d1 gint32
.source 2 s1 guint8
.const 4 c1 0x00008000
.temp 4 t2
mergewl t2, s1, s1
xorl d1, t2, c1
.function audio_orc_unpack_s16_trunc
.dest 4 d1 gint32
.source 2 s1 guint8
.const 4 c1 16
.temp 4 t2
convuwl t2, s1
shll d1, t2, c1
.function audio_orc_unpack_u16_swap
.dest 4 d1 gint32
.source 2 s1 guint8
.const 4 c1 0x80000000
.temp 2 t1
.temp 4 t2
swapw t1, s1
mergewl t2, t1, t1
xorl d1, t2, c1
.function audio_orc_unpack_u16_swap_trunc
.dest 4 d1 gint32
.source 2 s1 guint8
.const 4 c2 16
.const 4 c1 0x80000000
.temp 2 t1
.temp 4 t2
swapw t1, s1
convuwl t2, t1
shll t2, t2, c2
xorl d1, t2, c1
.function audio_orc_unpack_s16_swap
.dest 4 d1 gint32
.source 2 s1 guint8
.temp 2 t1
swapw t1, s1
mergewl d1, t1, t1
.function audio_orc_unpack_s16_swap_trunc
.dest 4 d1 gint32
.source 2 s1 guint8
.const 4 c1 16
.temp 2 t1
.temp 4 t2
swapw t1, s1
convuwl t2, t1
shll d1, t2, c1
.function audio_orc_unpack_u24_32
.dest 4 d1 gint32
.source 4 s1 guint8
.const 4 c2 8
.const 4 c1 0x80000000
.temp 4 t1
shll t1, s1, c2
xorl d1, t1, c1
.function audio_orc_unpack_s24_32
.dest 4 d1 gint32
.source 4 s1 guint8
.const 4 c1 8
shll d1, s1, c1
.function audio_orc_unpack_u24_32_swap
.dest 4 d1 gint32
.source 4 s1 guint8
.const 4 c2 8
.const 4 c1 0x80000000
.temp 4 t1
swapl t1, s1
shll t1, t1, c2
xorl d1, t1, c1
.function audio_orc_unpack_s24_32_swap
.dest 4 d1 gint32
.source 4 s1 guint8
.const 4 c1 8
.temp 4 t1
swapl t1, s1
shll d1, t1, c1
.function audio_orc_unpack_u32
.dest 4 d1 gint32
.source 4 s1 guint8
.const 4 c1 0x80000000
xorl d1, s1, c1
.function audio_orc_unpack_u32_swap
.dest 4 d1 gint32
.source 4 s1 guint8
.const 4 c1 0x80000000
.temp 4 t1
swapl t1, s1
xorl d1, t1, c1
.function audio_orc_unpack_s32
.dest 4 d1 gint32
.source 4 s1 guint8
copyl d1, s1
.function audio_orc_unpack_s32_swap
.dest 4 d1 gint32
.source 4 s1 guint8
swapl d1, s1
.function audio_orc_unpack_f32
.dest 8 d1 gdouble
.source 4 s1 gfloat
convfd d1, s1
.function audio_orc_unpack_f32_swap
.dest 8 d1 gdouble
.source 4 s1 gfloat
.temp 4 t1
swapl t1, s1
convfd d1, t1
.function audio_orc_unpack_f64
.dest 8 d1 gdouble
.source 8 s1 gdouble
copyq d1, s1
.function audio_orc_unpack_f64_swap
.dest 8 d1 gdouble
.source 8 s1 gdouble
swapq d1, s1
.function audio_orc_pack_u8
.dest 1 d1 guint8
.source 4 s1 gint32
.const 4 c1 0x80000000
.temp 4 t1
.temp 2 t2
xorl t1, s1, c1
convhlw t2, t1
convhwb d1, t2
.function audio_orc_pack_s8
.dest 1 d1 guint8
.source 4 s1 gint32
.temp 2 t2
convhlw t2, s1
convhwb d1, t2
.function audio_orc_pack_u16
.dest 2 d1 guint8
.source 4 s1 gint32
.const 4 c1 0x80000000
.temp 4 t1
xorl t1, s1, c1
convhlw d1, t1
.function audio_orc_pack_s16
.dest 2 d1 guint8
.source 4 s1 gint32
convhlw d1, s1
.function audio_orc_pack_u16_swap
.dest 2 d1 guint8
.source 4 s1 gint32
.const 4 c1 0x80000000
.temp 4 t1
.temp 2 t2
xorl t1, s1, c1
convhlw t2, t1
swapw d1, t2
.function audio_orc_pack_s16_swap
.dest 2 d1 guint8
.source 4 s1 gint32
.temp 2 t2
convhlw t2, s1
swapw d1, t2
.function audio_orc_pack_u24_32
.dest 4 d1 guint8
.source 4 s1 gint32
.const 4 c1 0x80000000
.const 4 c2 8
.temp 4 t1
xorl t1, s1, c1
shrul d1, t1, c2
.function audio_orc_pack_s24_32
.dest 4 d1 guint8
.source 4 s1 gint32
.const 4 c1 8
shrsl d1, s1, c1
.function audio_orc_pack_u24_32_swap
.dest 4 d1 guint8
.source 4 s1 gint32
.const 4 c1 0x80000000
.const 4 c2 8
.temp 4 t1
xorl t1, s1, c1
shrul t1, t1, c2
swapl d1, t1
.function audio_orc_pack_s24_32_swap
.dest 4 d1 guint8
.source 4 s1 gint32
.const 4 c1 8
.temp 4 t1
shrsl t1, s1, c1
swapl d1, t1
.function audio_orc_pack_u32
.dest 4 d1 guint8
.source 4 s1 gint32
.const 4 c1 0x80000000
xorl d1, s1, c1
.function audio_orc_pack_s32
.dest 4 d1 guint8
.source 4 s1 gint32
copyl d1, s1
.function audio_orc_pack_u32_swap
.dest 4 d1 guint8
.source 4 s1 gint32
.const 4 c1 0x80000000
xorl d1, s1, c1
.function audio_orc_pack_s32_swap
.dest 4 d1 guint8
.source 4 s1 gint32
swapl d1, s1
.function audio_orc_pack_f32
.dest 4 d1 gfloat
.source 8 s1 gdouble
convdf d1, s1
.function audio_orc_pack_f32_swap
.dest 4 d1 gfloat
.source 8 s1 gdouble
.temp 4 t1
convdf t1, s1
swapl d1, t1
.function audio_orc_pack_f64
.dest 8 d1 gdouble
.source 8 s1 gdouble
copyq d1, s1
.function audio_orc_pack_f64_swap
.dest 8 d1 gdouble
.source 8 s1 gdouble
swapq d1, s1
.function audio_orc_splat_u16
.dest 2 d1 guint16
.param 2 p1
copyw d1, p1
.function audio_orc_splat_u32
.dest 4 d1 guint32
.param 4 p1
copyl d1, p1
.function audio_orc_splat_u64
.dest 8 d1 guint64
.param 8 p1
copyq d1, p1
.function audio_orc_int_bias
.dest 4 d1 gint32
.source 4 s1 gint32
.param 4 bias gint32
.param 4 mask gint32
.temp 4 t1
addssl t1, s1, bias
andl d1, t1, mask
.function audio_orc_int_dither
.dest 4 d1 gint32
.source 4 s1 gint32
.source 4 dither gint32
.param 4 mask gint32
.temp 4 t1
addssl t1, s1, dither
andl d1, t1, mask
.function audio_orc_update_rand
.dest 4 r guint32
.temp 4 t
mulll t, r, 1103515245
addl r, t, 12345