gstreamer/gst/bayer/gstbayerorc.orc
Wim Taymans c31950d3e8 bayer: prefix orc functions with bayer_orc
Add bayer orc to the unit test
2012-07-24 10:32:51 +02:00

252 lines
3.7 KiB
Text

.function bayer_orc_horiz_upsample_unaligned
.dest 2 d0 guint8
.dest 2 d1 guint8
.source 2 s guint8
.temp 2 t
.temp 1 b
.temp 1 c
.temp 1 d
.temp 1 e
splitwb c, b, s
loadoffw t, s, 1
splitwb e, d, t
avgub e, c, e
mergebw d0, c, e
avgub b, b, d
mergebw d1, b, d
.function bayer_orc_horiz_upsample
.dest 2 d0 guint8
.dest 2 d1 guint8
.source 2 s guint8
.temp 2 t
.temp 1 a
.temp 1 b
.temp 1 c
.temp 1 d
.temp 1 e
.temp 1 f
loadoffw t, s, -1
splitwb b, a, t
splitwb d, c, s
loadoffw t, s, 1
splitwb f, e, t
avgub e, c, e
mergebw d0, c, e
avgub b, b, d
mergebw d1, b, d
.function bayer_orc_merge_bg_bgra
.dest 8 d guint8
.source 2 g0 guint8
.source 2 r0 guint8
.source 2 b1 guint8
.source 2 g1 guint8
.source 2 g2 guint8
.source 2 r2 guint8
.temp 4 ra
.temp 4 bg
.temp 2 r
.temp 2 g
.temp 2 t
x2 avgub r, r0, r2
x2 avgub g, g0, g2
copyw t, g1
x2 avgub g, g, t
andw g, g, 255
andw t, t, 65280
orw g, t, g
x2 mergebw bg, b1, g
x2 mergebw ra, r, 255
x2 mergewl d, bg, ra
.function bayer_orc_merge_gr_bgra
.dest 8 d guint8
.source 2 b0 guint8
.source 2 g0 guint8
.source 2 g1 guint8
.source 2 r1 guint8
.source 2 b2 guint8
.source 2 g2 guint8
.temp 4 ra
.temp 4 bg
.temp 2 b
.temp 2 g
.temp 2 t
x2 avgub b, b0, b2
x2 avgub g, g0, g2
copyw t, g1
x2 avgub g, g, t
andw g, g, 65280
andw t, t, 255
orw g, t, g
x2 mergebw bg, b, g
x2 mergebw ra, r1, 255
x2 mergewl d, bg, ra
.function bayer_orc_merge_bg_abgr
.dest 8 d guint8
.source 2 g0 guint8
.source 2 r0 guint8
.source 2 b1 guint8
.source 2 g1 guint8
.source 2 g2 guint8
.source 2 r2 guint8
.temp 4 ab
.temp 4 gr
.temp 2 r
.temp 2 g
.temp 2 t
x2 avgub r, r0, r2
x2 avgub g, g0, g2
copyw t, g1
x2 avgub g, g, t
andw g, g, 255
andw t, t, 65280
orw g, t, g
x2 mergebw ab, 255, b1
x2 mergebw gr, g, r
x2 mergewl d, ab, gr
.function bayer_orc_merge_gr_abgr
.dest 8 d guint8
.source 2 b0 guint8
.source 2 g0 guint8
.source 2 g1 guint8
.source 2 r1 guint8
.source 2 b2 guint8
.source 2 g2 guint8
.temp 4 ab
.temp 4 gr
.temp 2 b
.temp 2 g
.temp 2 t
x2 avgub b, b0, b2
x2 avgub g, g0, g2
copyw t, g1
x2 avgub g, g, t
andw g, g, 65280
andw t, t, 255
orw g, t, g
x2 mergebw ab, 255, b
x2 mergebw gr, g, r1
x2 mergewl d, ab, gr
.function bayer_orc_merge_bg_rgba
.dest 8 d guint8
.source 2 g0 guint8
.source 2 r0 guint8
.source 2 b1 guint8
.source 2 g1 guint8
.source 2 g2 guint8
.source 2 r2 guint8
.temp 4 rg
.temp 4 ba
.temp 2 r
.temp 2 g
.temp 2 t
x2 avgub r, r0, r2
x2 avgub g, g0, g2
copyw t, g1
x2 avgub g, g, t
andw g, g, 255
andw t, t, 65280
orw g, t, g
x2 mergebw rg, r, g
x2 mergebw ba, b1, 255
x2 mergewl d, rg, ba
.function bayer_orc_merge_gr_rgba
.dest 8 d guint8
.source 2 b0 guint8
.source 2 g0 guint8
.source 2 g1 guint8
.source 2 r1 guint8
.source 2 b2 guint8
.source 2 g2 guint8
.temp 4 rg
.temp 4 ba
.temp 2 b
.temp 2 g
.temp 2 t
x2 avgub b, b0, b2
x2 avgub g, g0, g2
copyw t, g1
x2 avgub g, g, t
andw g, g, 65280
andw t, t, 255
orw g, t, g
x2 mergebw rg, r1, g
x2 mergebw ba, b, 255
x2 mergewl d, rg, ba
.function bayer_orc_merge_bg_argb
.dest 8 d guint8
.source 2 g0 guint8
.source 2 r0 guint8
.source 2 b1 guint8
.source 2 g1 guint8
.source 2 g2 guint8
.source 2 r2 guint8
.temp 4 ar
.temp 4 gb
.temp 2 r
.temp 2 g
.temp 2 t
x2 avgub r, r0, r2
x2 avgub g, g0, g2
copyw t, g1
x2 avgub g, g, t
andw g, g, 255
andw t, t, 65280
orw g, t, g
x2 mergebw ar, 255, r
x2 mergebw gb, g, b1
x2 mergewl d, ar, gb
.function bayer_orc_merge_gr_argb
.dest 8 d guint8
.source 2 b0 guint8
.source 2 g0 guint8
.source 2 g1 guint8
.source 2 r1 guint8
.source 2 b2 guint8
.source 2 g2 guint8
.temp 4 ar
.temp 4 gb
.temp 2 b
.temp 2 g
.temp 2 t
x2 avgub b, b0, b2
x2 avgub g, g0, g2
copyw t, g1
x2 avgub g, g, t
andw g, g, 65280
andw t, t, 255
orw g, t, g
x2 mergebw ar, 255, r1
x2 mergebw gb, g, b
x2 mergewl d, ar, gb