.function deinterlace_line_vfir
.so urce 1 s1 guint8
.so urce 1 s2 guint8
.so urce 1 s3 guint8
.so urce 1 s4 guint8
.so urce 1 s5 guint8
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_linear
.so urce 1 s1 guint8
.so urce 1 s2 guint8
avgub d1, s1, s2
.function deinterlace_line_linear_blend
.so urce 1 s1 guint8
.so urce 1 s2 guint8
.so urce 1 s3 guint8
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
.so urce 1 m0
.so urce 1 t1
.so urce 1 b1
.so urce 1 m2
.param 1 max_comb
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