| |
| .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_linear |
| .dest 1 d1 guint8 |
| .source 1 s1 guint8 |
| .source 1 s2 guint8 |
| |
| avgub 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 |
| |
| |
| |