gstreamer/subprojects/gst-plugins-good/gst/deinterlace/tvtime.orc
2023-04-18 01:32:25 +09:00

144 lines
2 KiB
Text

.function deinterlace_line_vfir
.dest 1 d1 guint8
.source 1 s1 guint8
.source 1 s2 guint8
.source 1 s3 guint8
.source 1 s4 guint8
.source 1 s5 guint8
.temp 2 t1
.temp 2 t2
.temp 2 t3
convubw t1, s1
convubw t2, s5
addw t1, t1, t2
convubw t2, s2
convubw t3, s4
addw t2, t2, t3
shlw t2, t2, 2
convubw t3, s3
shlw t3, t3, 1
subw t2, t2, t1
addw t2, t2, t3
addw t2, t2, 4
shrsw t2, t2, 3
convsuswb d1, t2
.function deinterlace_line_vfir_16bits
.dest 2 d1 guint16
.source 2 s1 guint16
.source 2 s2 guint16
.source 2 s3 guint16
.source 2 s4 guint16
.source 2 s5 guint16
.temp 4 t1
.temp 4 t2
.temp 4 t3
convuwl t1, s1
convuwl t2, s5
addl t1, t1, t2
convuwl t2, s2
convuwl t3, s4
addl t2, t2, t3
shll t2, t2, 2
convuwl t3, s3
shll t3, t3, 1
subl t2, t2, t1
addl t2, t2, t3
addl t2, t2, 4
shrsl t2, t2, 3
convsuslw d1, t2
.function deinterlace_line_linear
.dest 1 d1 guint8
.source 1 s1 guint8
.source 1 s2 guint8
avgub d1, s1, s2
.function deinterlace_line_linear_16bits
.dest 2 d1 guint16
.source 2 s1 guint16
.source 2 s2 guint16
avguw d1, s1, s2
.function deinterlace_line_linear_blend
.dest 1 d1 guint8
.source 1 s1 guint8
.source 1 s2 guint8
.source 1 s3 guint8
.temp 2 t1
.temp 2 t2
.temp 2 t3
convubw t1, s1
convubw t2, s2
convubw t3, s3
addw t1, t1, t2
addw t3, t3, t3
addw t1, t1, t3
addw t1, t1, 2
shrsw t1, t1, 2
convsuswb d1, t1
.function deinterlace_line_greedy
.dest 1 d1
.source 1 m0
.source 1 t1
.source 1 b1
.source 1 m2
.param 1 max_comb
.temp 1 tm0
.temp 1 tm2
.temp 1 tb1
.temp 1 tt1
.temp 1 avg
.temp 1 l2_diff
.temp 1 lp2_diff
.temp 1 t2
.temp 1 t3
.temp 1 best
.temp 1 min
.temp 1 max
loadb tm0, m0
loadb tm2, m2
loadb tb1, b1
loadb tt1, t1
avgub avg, tt1, tb1
maxub t2, tm0, avg
minub t3, tm0, avg
subb l2_diff, t2, t3
maxub t2, tm2, avg
minub t3, tm2, avg
subb lp2_diff, t2, t3
xorb l2_diff, l2_diff, 0x80
xorb lp2_diff, lp2_diff, 0x80
cmpgtsb t3, l2_diff, lp2_diff
andb t2, tm2, t3
andnb t3, t3, tm0
orb best, t2, t3
maxub max, tt1, tb1
minub min, tt1, tb1
addusb max, max, max_comb
subusb min, min, max_comb
minub best, best, max
maxub d1, best, min