diff options
author | David Schleef <ds@schleef.org> | 2011-05-30 23:43:39 -0700 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2011-05-30 23:50:30 -0700 |
commit | db7fe611edcaf03ac9d86d3fb0d96c28c4859fd7 (patch) | |
tree | be025306c0b8ee2a43abeb94f77c4eee674685ae /gst/bayer/gstbayerorc.orc | |
parent | f0c75b06a7f3374338bbb643de057e4ea3080cc0 (diff) | |
download | gstreamer-plugins-bad-db7fe611edcaf03ac9d86d3fb0d96c28c4859fd7.tar.gz |
bayer2rgb: Convert to Orc
Seriously faster. Algorithm is nearly the same as bilinear, which
given the speed of this code, should be considered the baseline of
quality. Speed appears to be limited by memory bandwidth, so I
didn't bother trying to make it any faster.
Diffstat (limited to 'gst/bayer/gstbayerorc.orc')
-rw-r--r-- | gst/bayer/gstbayerorc.orc | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/gst/bayer/gstbayerorc.orc b/gst/bayer/gstbayerorc.orc new file mode 100644 index 000000000..e57436b7f --- /dev/null +++ b/gst/bayer/gstbayerorc.orc @@ -0,0 +1,252 @@ + + +.function gst_bayer_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 gst_bayer_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 gst_bayer_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 gst_bayer_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 gst_bayer_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 gst_bayer_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 gst_bayer_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 gst_bayer_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 gst_bayer_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 gst_bayer_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 + + |