videoaggregator: Create a new GstVideoAggregator baseclass
[platform/upstream/gstreamer.git] / gst-libs / gst / video / bad-video-orc.orc
1 .function video_convert_orc_memcpy_2d
2 .flags 2d
3 .dest 1 d1 guint8
4 .source 1 s1 guint8
5
6 copyb d1, s1
7
8 .function video_convert_orc_convert_I420_UYVY
9 .dest 4 d1 guint8
10 .dest 4 d2 guint8
11 .source 2 y1 guint8
12 .source 2 y2 guint8
13 .source 1 u guint8
14 .source 1 v guint8
15 .temp 2 uv
16
17 mergebw uv, u, v
18 x2 mergebw d1, uv, y1
19 x2 mergebw d2, uv, y2
20
21
22 .function video_convert_orc_convert_I420_YUY2
23 .dest 4 d1 guint8
24 .dest 4 d2 guint8
25 .source 2 y1 guint8
26 .source 2 y2 guint8
27 .source 1 u guint8
28 .source 1 v guint8
29 .temp 2 uv
30
31 mergebw uv, u, v
32 x2 mergebw d1, y1, uv
33 x2 mergebw d2, y2, uv
34
35
36
37 .function video_convert_orc_convert_I420_AYUV
38 .dest 4 d1 guint8
39 .dest 4 d2 guint8
40 .source 1 y1 guint8
41 .source 1 y2 guint8
42 .source 1 u guint8
43 .source 1 v guint8
44 .const 1 c255 255
45 .temp 2 uv
46 .temp 2 ay
47 .temp 1 tu
48 .temp 1 tv
49
50 loadupdb tu, u
51 loadupdb tv, v
52 mergebw uv, tu, tv
53 mergebw ay, c255, y1
54 mergewl d1, ay, uv
55 mergebw ay, c255, y2
56 mergewl d2, ay, uv
57
58
59 .function video_convert_orc_convert_YUY2_I420
60 .dest 2 y1 guint8
61 .dest 2 y2 guint8
62 .dest 1 u guint8
63 .dest 1 v guint8
64 .source 4 yuv1 guint8
65 .source 4 yuv2 guint8
66 .temp 2 t1
67 .temp 2 t2
68 .temp 2 ty
69
70 x2 splitwb t1, ty, yuv1
71 storew y1, ty
72 x2 splitwb t2, ty, yuv2
73 storew y2, ty
74 x2 avgub t1, t1, t2
75 splitwb v, u, t1
76
77
78 .function video_convert_orc_convert_UYVY_YUY2
79 .flags 2d
80 .dest 4 yuy2 guint8
81 .source 4 uyvy guint8
82
83 x2 swapw yuy2, uyvy
84
85
86 .function video_convert_orc_planar_chroma_420_422
87 .flags 2d
88 .dest 1 d1 guint8
89 .dest 1 d2 guint8
90 .source 1 s guint8
91
92 copyb d1, s
93 copyb d2, s
94
95
96 .function video_convert_orc_planar_chroma_420_444
97 .flags 2d
98 .dest 2 d1 guint8
99 .dest 2 d2 guint8
100 .source 1 s guint8
101 .temp 2 t
102
103 splatbw t, s
104 storew d1, t
105 storew d2, t
106
107
108 .function video_convert_orc_planar_chroma_422_444
109 .flags 2d
110 .dest 2 d1 guint8
111 .source 1 s guint8
112 .temp 2 t
113
114 splatbw t, s
115 storew d1, t
116
117
118 .function video_convert_orc_planar_chroma_444_422
119 .flags 2d
120 .dest 1 d guint8
121 .source 2 s guint8
122 .temp 1 t1
123 .temp 1 t2
124
125 splitwb t1, t2, s
126 avgub d, t1, t2
127
128
129 .function video_convert_orc_planar_chroma_444_420
130 .flags 2d
131 .dest 1 d guint8
132 .source 2 s1 guint8
133 .source 2 s2 guint8
134 .temp 2 t
135 .temp 1 t1
136 .temp 1 t2
137
138 x2 avgub t, s1, s2
139 splitwb t1, t2, t
140 avgub d, t1, t2
141
142
143 .function video_convert_orc_planar_chroma_422_420
144 .flags 2d
145 .dest 1 d guint8
146 .source 1 s1 guint8
147 .source 1 s2 guint8
148
149 avgub d, s1, s2
150
151
152 .function video_convert_orc_convert_YUY2_AYUV
153 .flags 2d
154 .dest 8 ayuv guint8
155 .source 4 yuy2 guint8
156 .const 2 c255 0xff
157 .temp 2 yy
158 .temp 2 uv
159 .temp 4 ayay
160 .temp 4 uvuv
161
162 x2 splitwb uv, yy, yuy2
163 x2 mergebw ayay, c255, yy
164 mergewl uvuv, uv, uv
165 x2 mergewl ayuv, ayay, uvuv
166
167
168 .function video_convert_orc_convert_UYVY_AYUV
169 .flags 2d
170 .dest 8 ayuv guint8
171 .source 4 uyvy guint8
172 .const 2 c255 0xff
173 .temp 2 yy
174 .temp 2 uv
175 .temp 4 ayay
176 .temp 4 uvuv
177
178 x2 splitwb yy, uv, uyvy
179 x2 mergebw ayay, c255, yy
180 mergewl uvuv, uv, uv
181 x2 mergewl ayuv, ayay, uvuv
182
183
184 .function video_convert_orc_convert_YUY2_Y42B
185 .flags 2d
186 .dest 2 y guint8
187 .dest 1 u guint8
188 .dest 1 v guint8
189 .source 4 yuy2 guint8
190 .temp 2 uv
191
192 x2 splitwb uv, y, yuy2
193 splitwb v, u, uv
194
195
196 .function video_convert_orc_convert_UYVY_Y42B
197 .flags 2d
198 .dest 2 y guint8
199 .dest 1 u guint8
200 .dest 1 v guint8
201 .source 4 uyvy guint8
202 .temp 2 uv
203
204 x2 splitwb y, uv, uyvy
205 splitwb v, u, uv
206
207
208 .function video_convert_orc_convert_YUY2_Y444
209 .flags 2d
210 .dest 2 y guint8
211 .dest 2 uu guint8
212 .dest 2 vv guint8
213 .source 4 yuy2 guint8
214 .temp 2 uv
215 .temp 1 u
216 .temp 1 v
217
218 x2 splitwb uv, y, yuy2
219 splitwb v, u, uv
220 splatbw uu, u
221 splatbw vv, v
222
223
224 .function video_convert_orc_convert_UYVY_Y444
225 .flags 2d
226 .dest 2 y guint8
227 .dest 2 uu guint8
228 .dest 2 vv guint8
229 .source 4 uyvy guint8
230 .temp 2 uv
231 .temp 1 u
232 .temp 1 v
233
234 x2 splitwb y, uv, uyvy
235 splitwb v, u, uv
236 splatbw uu, u
237 splatbw vv, v
238
239
240 .function video_convert_orc_convert_UYVY_I420
241 .dest 2 y1 guint8
242 .dest 2 y2 guint8
243 .dest 1 u guint8
244 .dest 1 v guint8
245 .source 4 yuv1 guint8
246 .source 4 yuv2 guint8
247 .temp 2 t1
248 .temp 2 t2
249 .temp 2 ty
250
251 x2 splitwb ty, t1, yuv1
252 storew y1, ty
253 x2 splitwb ty, t2, yuv2
254 storew y2, ty
255 x2 avgub t1, t1, t2
256 splitwb v, u, t1
257
258
259
260 .function video_convert_orc_convert_AYUV_I420
261 .flags 2d
262 .dest 2 y1 guint8
263 .dest 2 y2 guint8
264 .dest 1 u guint8
265 .dest 1 v guint8
266 .source 8 ayuv1 guint8
267 .source 8 ayuv2 guint8
268 .temp 4 ay
269 .temp 4 uv1
270 .temp 4 uv2
271 .temp 4 uv
272 .temp 2 uu
273 .temp 2 vv
274 .temp 1 t1
275 .temp 1 t2
276
277 x2 splitlw uv1, ay, ayuv1
278 x2 select1wb y1, ay
279 x2 splitlw uv2, ay, ayuv2
280 x2 select1wb y2, ay
281 x4 avgub uv, uv1, uv2
282 x2 splitwb vv, uu, uv
283 splitwb t1, t2, uu
284 avgub u, t1, t2
285 splitwb t1, t2, vv
286 avgub v, t1, t2
287
288
289
290 .function video_convert_orc_convert_AYUV_YUY2
291 .flags 2d
292 .dest 4 yuy2 guint8
293 .source 8 ayuv guint8
294 .temp 2 yy
295 .temp 2 uv1
296 .temp 2 uv2
297 .temp 4 ayay
298 .temp 4 uvuv
299
300 x2 splitlw uvuv, ayay, ayuv
301 splitlw uv1, uv2, uvuv
302 x2 avgub uv1, uv1, uv2
303 x2 select1wb yy, ayay
304 x2 mergebw yuy2, yy, uv1
305
306
307 .function video_convert_orc_convert_AYUV_UYVY
308 .flags 2d
309 .dest 4 yuy2 guint8
310 .source 8 ayuv guint8
311 .temp 2 yy
312 .temp 2 uv1
313 .temp 2 uv2
314 .temp 4 ayay
315 .temp 4 uvuv
316
317 x2 splitlw uvuv, ayay, ayuv
318 splitlw uv1, uv2, uvuv
319 x2 avgub uv1, uv1, uv2
320 x2 select1wb yy, ayay
321 x2 mergebw yuy2, uv1, yy
322
323
324
325 .function video_convert_orc_convert_AYUV_Y42B
326 .flags 2d
327 .dest 2 y guint8
328 .dest 1 u guint8
329 .dest 1 v guint8
330 .source 8 ayuv guint8
331 .temp 4 ayay
332 .temp 4 uvuv
333 .temp 2 uv1
334 .temp 2 uv2
335
336 x2 splitlw uvuv, ayay, ayuv
337 splitlw uv1, uv2, uvuv
338 x2 avgub uv1, uv1, uv2
339 splitwb v, u, uv1
340 x2 select1wb y, ayay
341
342
343 .function video_convert_orc_convert_AYUV_Y444
344 .flags 2d
345 .dest 1 y guint8
346 .dest 1 u guint8
347 .dest 1 v guint8
348 .source 4 ayuv guint8
349 .temp 2 ay
350 .temp 2 uv
351
352 splitlw uv, ay, ayuv
353 splitwb v, u, uv
354 select1wb y, ay
355
356
357 .function video_convert_orc_convert_Y42B_YUY2
358 .flags 2d
359 .dest 4 yuy2 guint8
360 .source 2 y guint8
361 .source 1 u guint8
362 .source 1 v guint8
363 .temp 2 uv
364
365 mergebw uv, u, v
366 x2 mergebw yuy2, y, uv
367
368
369 .function video_convert_orc_convert_Y42B_UYVY
370 .flags 2d
371 .dest 4 uyvy guint8
372 .source 2 y guint8
373 .source 1 u guint8
374 .source 1 v guint8
375 .temp 2 uv
376
377 mergebw uv, u, v
378 x2 mergebw uyvy, uv, y
379
380
381 .function video_convert_orc_convert_Y42B_AYUV
382 .flags 2d
383 .dest 8 ayuv guint8
384 .source 2 yy guint8
385 .source 1 u guint8
386 .source 1 v guint8
387 .const 1 c255 255
388 .temp 2 uv
389 .temp 2 ay
390 .temp 4 uvuv
391 .temp 4 ayay
392
393 mergebw uv, u, v
394 x2 mergebw ayay, c255, yy
395 mergewl uvuv, uv, uv
396 x2 mergewl ayuv, ayay, uvuv
397
398
399 .function video_convert_orc_convert_Y444_YUY2
400 .flags 2d
401 .dest 4 yuy2 guint8
402 .source 2 y guint8
403 .source 2 u guint8
404 .source 2 v guint8
405 .temp 2 uv
406 .temp 4 uvuv
407 .temp 2 uv1
408 .temp 2 uv2
409
410 x2 mergebw uvuv, u, v
411 splitlw uv1, uv2, uvuv
412 x2 avgub uv, uv1, uv2
413 x2 mergebw yuy2, y, uv
414
415
416 .function video_convert_orc_convert_Y444_UYVY
417 .flags 2d
418 .dest 4 uyvy guint8
419 .source 2 y guint8
420 .source 2 u guint8
421 .source 2 v guint8
422 .temp 2 uv
423 .temp 4 uvuv
424 .temp 2 uv1
425 .temp 2 uv2
426
427 x2 mergebw uvuv, u, v
428 splitlw uv1, uv2, uvuv
429 x2 avgub uv, uv1, uv2
430 x2 mergebw uyvy, uv, y
431
432
433 .function video_convert_orc_convert_Y444_AYUV
434 .flags 2d
435 .dest 4 ayuv guint8
436 .source 1 yy guint8
437 .source 1 u guint8
438 .source 1 v guint8
439 .const 1 c255 255
440 .temp 2 uv
441 .temp 2 ay
442
443 mergebw uv, u, v
444 mergebw ay, c255, yy
445 mergewl ayuv, ay, uv
446
447
448
449 .function video_convert_orc_convert_AYUV_ARGB
450 .flags 2d
451 .dest 4 argb guint8
452 .source 4 ayuv guint8
453 .param 2 p1
454 .param 2 p2
455 .param 2 p3
456 .param 2 p4
457 .param 2 p5
458 .temp 1 a
459 .temp 1 y
460 .temp 1 u
461 .temp 1 v
462 .temp 2 wy
463 .temp 2 wu
464 .temp 2 wv
465 .temp 2 wr
466 .temp 2 wg
467 .temp 2 wb
468 .temp 1 r
469 .temp 1 g
470 .temp 1 b
471 .temp 4 x
472 .const 1 c128 128
473
474 x4 subb x, ayuv, c128 
475 splitlw wv, wy, x
476 splitwb y, a, wy
477 splitwb v, u, wv
478
479 splatbw wy, y
480 splatbw wu, u
481 splatbw wv, v
482
483 mulhsw wy, wy, p1
484
485 mulhsw wr, wv, p2
486 addssw wr, wy, wr
487
488 mulhsw wb, wu, p3
489 addssw wb, wy, wb
490
491 mulhsw wg, wu, p4
492 addssw wg, wy, wg
493 mulhsw wy, wv, p5
494 addssw wg, wg, wy
495
496 convssswb r, wr
497 convssswb g, wg
498 convssswb b, wb
499
500 mergebw wr, a, r
501 mergebw wb, g, b
502 mergewl x, wr, wb
503 x4 addb argb, x, c128
504
505 .function video_convert_orc_convert_AYUV_BGRA
506 .flags 2d
507 .dest 4 bgra guint8
508 .source 4 ayuv guint8
509 .param 2 p1
510 .param 2 p2
511 .param 2 p3
512 .param 2 p4
513 .param 2 p5
514 .temp 1 a
515 .temp 1 y
516 .temp 1 u
517 .temp 1 v
518 .temp 2 wy
519 .temp 2 wu
520 .temp 2 wv
521 .temp 2 wr
522 .temp 2 wg
523 .temp 2 wb
524 .temp 1 r
525 .temp 1 g
526 .temp 1 b
527 .temp 4 x
528 .const 1 c128 128
529
530 x4 subb x, ayuv, c128 
531 splitlw wv, wy, x
532 splitwb y, a, wy
533 splitwb v, u, wv
534
535 splatbw wy, y
536 splatbw wu, u
537 splatbw wv, v
538
539 mulhsw wy, wy, p1
540
541 mulhsw wr, wv, p2
542 addssw wr, wy, wr
543
544 mulhsw wb, wu, p3
545 addssw wb, wy, wb
546
547 mulhsw wg, wu, p4
548 addssw wg, wy, wg
549 mulhsw wy, wv, p5
550 addssw wg, wg, wy
551
552 convssswb r, wr
553 convssswb g, wg
554 convssswb b, wb
555
556 mergebw wb, b, g
557 mergebw wr, r, a
558 mergewl x, wb, wr
559 x4 addb bgra, x, c128
560
561
562 .function video_convert_orc_convert_AYUV_ABGR
563 .flags 2d
564 .dest 4 argb guint8
565 .source 4 ayuv guint8
566 .param 2 p1
567 .param 2 p2
568 .param 2 p3
569 .param 2 p4
570 .param 2 p5
571 .temp 1 a
572 .temp 1 y
573 .temp 1 u
574 .temp 1 v
575 .temp 2 wy
576 .temp 2 wu
577 .temp 2 wv
578 .temp 2 wr
579 .temp 2 wg
580 .temp 2 wb
581 .temp 1 r
582 .temp 1 g
583 .temp 1 b
584 .temp 4 x
585 .const 1 c128 128
586
587 x4 subb x, ayuv, c128 
588 splitlw wv, wy, x
589 splitwb y, a, wy
590 splitwb v, u, wv
591
592 splatbw wy, y
593 splatbw wu, u
594 splatbw wv, v
595
596 mulhsw wy, wy, p1
597
598 mulhsw wr, wv, p2
599 addssw wr, wy, wr
600
601 mulhsw wb, wu, p3
602 addssw wb, wy, wb
603
604 mulhsw wg, wu, p4
605 addssw wg, wy, wg
606 mulhsw wy, wv, p5
607 addssw wg, wg, wy
608
609 convssswb r, wr
610 convssswb g, wg
611 convssswb b, wb
612
613 mergebw wb, a, b
614 mergebw wr, g, r
615 mergewl x, wb, wr
616 x4 addb argb, x, c128
617
618 .function video_convert_orc_convert_AYUV_RGBA
619 .flags 2d
620 .dest 4 argb guint8
621 .source 4 ayuv guint8
622 .param 2 p1
623 .param 2 p2
624 .param 2 p3
625 .param 2 p4
626 .param 2 p5
627 .temp 1 a
628 .temp 1 y
629 .temp 1 u
630 .temp 1 v
631 .temp 2 wy
632 .temp 2 wu
633 .temp 2 wv
634 .temp 2 wr
635 .temp 2 wg
636 .temp 2 wb
637 .temp 1 r
638 .temp 1 g
639 .temp 1 b
640 .temp 4 x
641 .const 1 c128 128
642
643 x4 subb x, ayuv, c128 
644 splitlw wv, wy, x
645 splitwb y, a, wy
646 splitwb v, u, wv
647
648 splatbw wy, y
649 splatbw wu, u
650 splatbw wv, v
651
652 mulhsw wy, wy, p1
653
654 mulhsw wr, wv, p2
655 addssw wr, wy, wr
656
657 mulhsw wb, wu, p3
658 addssw wb, wy, wb
659
660 mulhsw wg, wu, p4
661 addssw wg, wy, wg
662 mulhsw wy, wv, p5
663 addssw wg, wg, wy
664
665 convssswb r, wr
666 convssswb g, wg
667 convssswb b, wb
668
669 mergebw wr, r, g
670 mergebw wb, b, a
671 mergewl x, wr, wb
672 x4 addb argb, x, c128
673
674
675
676 .function video_convert_orc_convert_I420_BGRA
677 .dest 4 argb guint8
678 .source 1 y guint8
679 .source 1 u guint8
680 .source 1 v guint8
681 .param 2 p1
682 .param 2 p2
683 .param 2 p3
684 .param 2 p4
685 .param 2 p5
686 .temp 2 wy
687 .temp 2 wu
688 .temp 2 wv
689 .temp 2 wr
690 .temp 2 wg
691 .temp 2 wb
692 .temp 1 r
693 .temp 1 g
694 .temp 1 b
695 .temp 4 x
696 .const 1 c128 128
697
698 subb r, y, c128
699 splatbw wy, r
700 loadupdb r, u
701 subb r, r, c128
702 splatbw wu, r
703 loadupdb r, v
704 subb r, r, c128
705 splatbw wv, r
706
707 mulhsw wy, wy, p1
708
709 mulhsw wr, wv, p2
710 addssw wr, wy, wr
711
712 mulhsw wb, wu, p3
713 addssw wb, wy, wb
714
715 mulhsw wg, wu, p4
716 addssw wg, wy, wg
717 mulhsw wy, wv, p5
718 addssw wg, wg, wy
719
720 convssswb r, wr
721 convssswb g, wg
722 convssswb b, wb
723
724 mergebw wb, b, g
725 mergebw wr, r, 127
726 mergewl x, wb, wr
727 x4 addb argb, x, c128
728
729