deinterlace: Timecode pass-through
[platform/upstream/gst-plugins-good.git] / gst / deinterlace / tvtime.orc
1
2 .function deinterlace_line_vfir
3 .dest 1 d1 guint8
4 .source 1 s1 guint8
5 .source 1 s2 guint8
6 .source 1 s3 guint8
7 .source 1 s4 guint8
8 .source 1 s5 guint8
9 .temp 2 t1
10 .temp 2 t2
11 .temp 2 t3
12
13 convubw t1, s1
14 convubw t2, s5
15 addw t1, t1, t2
16 convubw t2, s2
17 convubw t3, s4
18 addw t2, t2, t3
19 shlw t2, t2, 2
20 convubw t3, s3
21 shlw t3, t3, 1
22 subw t2, t2, t1
23 addw t2, t2, t3
24 addw t2, t2, 4
25 shrsw t2, t2, 3
26 convsuswb d1, t2
27
28
29 .function deinterlace_line_linear
30 .dest 1 d1 guint8
31 .source 1 s1 guint8
32 .source 1 s2 guint8
33
34 avgub d1, s1, s2
35
36
37 .function deinterlace_line_linear_blend
38 .dest 1 d1 guint8
39 .source 1 s1 guint8
40 .source 1 s2 guint8
41 .source 1 s3 guint8
42 .temp 2 t1
43 .temp 2 t2
44 .temp 2 t3
45
46 convubw t1, s1
47 convubw t2, s2
48 convubw t3, s3
49 addw t1, t1, t2
50 addw t3, t3, t3
51 addw t1, t1, t3
52 addw t1, t1, 2
53 shrsw t1, t1, 2
54 convsuswb d1, t1
55
56
57 .function deinterlace_line_greedy
58 .dest 1 d1
59 .source 1 m0
60 .source 1 t1
61 .source 1 b1
62 .source 1 m2
63 .param 1 max_comb
64 .temp 1 tm0
65 .temp 1 tm2
66 .temp 1 tb1
67 .temp 1 tt1
68 .temp 1 avg
69 .temp 1 l2_diff
70 .temp 1 lp2_diff
71 .temp 1 t2
72 .temp 1 t3
73 .temp 1 best
74 .temp 1 min
75 .temp 1 max
76
77
78 loadb tm0, m0
79 loadb tm2, m2
80
81 loadb tb1, b1
82 loadb tt1, t1
83 avgub avg, tt1, tb1
84
85 maxub t2, tm0, avg
86 minub t3, tm0, avg
87 subb l2_diff, t2, t3
88
89 maxub t2, tm2, avg
90 minub t3, tm2, avg
91 subb lp2_diff, t2, t3
92
93 xorb l2_diff, l2_diff, 0x80
94 xorb lp2_diff, lp2_diff, 0x80
95 cmpgtsb t3, l2_diff, lp2_diff
96
97 andb t2, tm2, t3
98 andnb t3, t3, tm0
99 orb best, t2, t3
100
101 maxub max, tt1, tb1
102 minub min, tt1, tb1
103 addusb max, max, max_comb
104 subusb min, min, max_comb
105 minub best, best, max
106 maxub d1, best, min
107
108
109