Home | History | Annotate | Download | only in dec

Lines Matching defs:q1

277 #define GET_NOTHEV(p1, p0, q0, q1, hev_thresh, not_hev) {                      \
280 const __m128i t2 = MM_ABS(q1, q0); \
284 const __m128i t4 = _mm_subs_epu8(t2, h); /* abs(q1 - q0) - hev_tresh */ \
290 #define GET_BASE_DELTA(p1, p0, q0, q1, o) { \
292 o = _mm_subs_epi8(p1, q1); /* p1 - q1 */ \
293 o = _mm_adds_epi8(o, qp0); /* p1 - q1 + 1 * (q0 - p0) */ \
294 o = _mm_adds_epi8(o, qp0); /* p1 - q1 + 2 * (q0 - p0) */ \
295 o = _mm_adds_epi8(o, qp0); /* p1 - q1 + 3 * (q0 - p0) */ \
325 const __m128i* q1, int thresh, __m128i *mask) {
326 __m128i t1 = MM_ABS(*p1, *q1); // abs(p1 - q1)
329 t1 = _mm_srli_epi16(t1, 1); // abs(p1 - q1) / 2
333 *mask = _mm_adds_epu8(*mask, t1); // abs(p0 - q0) * 2 + abs(p1 - q1) / 2
345 const __m128i* q1, int thresh) {
349 q1, sign_bit);
351 NeedsFilter(p1, p0, q0, q1, thresh, &mask);
364 // Applies filter on 4 pixels (p1, p0, q0 and q1)
365 static inline void DoFilter4(__m128i* p1, __m128i *p0, __m128i* q0, __m128i* q1,
372 GET_NOTHEV(*p1, *p0, *q0, *q1, hev_thresh, not_hev);
375 FLIP_SIGN_BIT4(*p1, *p0, *q0, *q1);
377 t1 = _mm_subs_epi8(*p1, *q1); // p1 - q1
378 t1 = _mm_andnot_si128(not_hev, t1); // hev(p1 - q1)
380 t1 = _mm_adds_epi8(t1, t2); // hev(p1 - q1) + 1 * (q0 - p0)
381 t1 = _mm_adds_epi8(t1, t2); // hev(p1 - q1) + 2 * (q0 - p0)
382 t1 = _mm_adds_epi8(t1, t2); // hev(p1 - q1) + 3 * (q0 - p0)
387 t2 = _mm_adds_epi8(t1, t2); // 3 * (q0 - p0) + (p1 - q1) + 4
388 SIGNED_SHIFT_N(t2, 3); // (3 * (q0 - p0) + hev(p1 - q1) + 4) >> 3
395 SIGNED_SHIFT_N(t2, 3); // (3 * (q0 - p0) + hev(p1 - q1) + 3) >> 3
400 SIGNED_SHIFT_N(t3, 1); // (3 * (q0 - p0) + hev(p1 - q1) + 4) >> 4
403 *q1 = _mm_subs_epi8(*q1, t3); // q1 -= t3
407 FLIP_SIGN_BIT4(*p1, *p0, *q0, *q1);
410 // Applies filter on 6 pixels (p2, p1, p0, q0, q1 and q2)
412 __m128i* q0, __m128i* q1, __m128i *q2,
418 GET_NOTHEV(*p1, *p0, *q0, *q1, hev_thresh, not_hev);
421 FLIP_SIGN_BIT4(*p1, *p0, *q0, *q1);
424 GET_BASE_DELTA(*p1, *p0, *q0, *q1, a);
456 UPDATE_2PIXELS(*p1, *q1, a1_lo, a1_hi);
461 FLIP_SIGN_BIT4(*p1, *p0, *q0, *q1);
511 __m128i* q0, __m128i* q1) {
527 // q1 = f3 e3 d3 c3 b3 a3 93 83 f2 e2 d2 c2 b2 a2 92 82
529 Load8x4(r8, stride, p0, q1);
536 // q1 = f3 e3 d3 c3 b3 a3 93 83 73 63 53 43 33 23 13 03
539 *q0 = _mm_unpacklo_epi64(t2, *q1);
540 *q1 = _mm_unpackhi_epi64(t2, *q1);
553 __m128i* p0, __m128i* q0, __m128i* q1) {
563 // q1 = f3 f2 e3 e2 d3 d2 c3 c2 b3 b2 a3 a2 93 92 83 82
565 *q0 = _mm_unpacklo_epi8(t1, *q1);
566 *q1 = _mm_unpackhi_epi8(t1, *q1);
575 // q1 = f3 f2 f1 f0 e3 e2 e1 e0 d3 d2 d1 d0 c3 c2 c1 c0
577 *p1 = _mm_unpacklo_epi16(t1, *q1);
578 *q1 = _mm_unpackhi_epi16(t1, *q1);
586 Store4x4(q1, r8, stride);
597 __m128i q1 = _mm_loadu_si128((__m128i*)&p[stride]);
599 DoFilter2(&p1, &p0, &q0, &q1, thresh);
607 __m128i p1, p0, q0, q1;
611 Load16x4(p, p + 8 * stride, stride, &p1, &p0, &q0, &q1);
612 DoFilter2(&p1, &p0, &q0, &q1, thresh);
613 Store16x4(p, p + 8 * stride, stride, &p1, &p0, &q0, &q1);
672 #define COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask) { \
677 NeedsFilter(&p1, &p0, &q0, &q1, thresh, &fl_yes); \
686 __m128i p2, p1, p0, q0, q1, q2;
692 // Load q0, q1, q2, q3
693 LOAD_H_EDGES4(p, stride, q0, q1, q2, t1);
694 MAX_DIFF2(t1, q2, q1, q0, mask);
696 COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask);
697 DoFilter6(&p2, &p1, &p0, &q0, &q1, &q2, &mask, hev_thresh);
704 _mm_storeu_si128((__m128i*)&p[1 * stride], q1);
711 __m128i p3, p2, p1, p0, q0, q1, q2, q3;
717 Load16x4(p, p + 8 * stride, stride, &q0, &q1, &q2, &q3); // q0, q1, q2, q3
718 MAX_DIFF2(q3, q2, q1, q0, mask);
720 COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask);
721 DoFilter6(&p2, &p1, &p0, &q0, &q1, &q2, &mask, hev_thresh);
724 Store16x4(p, p + 8 * stride, stride, &q0, &q1, &q2, &q3);
732 __m128i t1, t2, p1, p0, q0, q1;
741 // Load q0, q1, q2, q3
742 LOAD_H_EDGES4(p, stride, q0, q1, t1, t2);
743 MAX_DIFF2(t2, t1, q1, q0, mask);
745 COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask);
746 DoFilter4(&p1, &p0, &q0, &q1, &mask, hev_thresh);
752 _mm_storeu_si128((__m128i*)&p[1 * stride], q1);
761 __m128i t1, t2, p1, p0, q0, q1;
769 Load16x4(b, b + 8 * stride, stride, &q0, &q1, &t1, &t2); // q0, q1, q2, q3
770 MAX_DIFF2(t2, t1, q1, q0, mask);
772 COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask);
773 DoFilter4(&p1, &p0, &q0, &q1, &mask, hev_thresh);
776 Store16x4(b, b + 8 * stride, stride, &p1, &p0, &q0, &q1);
786 __m128i t1, p2, p1, p0, q0, q1, q2;
792 // Load q0, q1, q2, q3
793 LOADUV_H_EDGES4(u, v, stride, q0, q1, q2, t1);
794 MAX_DIFF2(t1, q2, q1, q0, mask);
796 COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask);
797 DoFilter6(&p2, &p1, &p0, &q0, &q1, &q2, &mask, hev_thresh);
804 STOREUV(q1, u, v, 1 * stride);
811 __m128i p3, p2, p1, p0, q0, q1, q2, q3;
818 Load16x4(u, v, stride, &q0, &q1, &q2, &q3); // q0, q1, q2, q3
819 MAX_DIFF2(q3, q2, q1, q0, mask);
821 COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask);
822 DoFilter6(&p2, &p1, &p0, &q0, &q1, &q2, &mask, hev_thresh);
825 Store16x4(u, v, stride, &q0, &q1, &q2, &q3);
831 __m128i t1, t2, p1, p0, q0, q1;
840 // Load q0, q1, q2, q3
841 LOADUV_H_EDGES4(u, v, stride, q0, q1, t1, t2);
842 MAX_DIFF2(t2, t1, q1, q0, mask);
844 COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask);
845 DoFilter4(&p1, &p0, &q0, &q1, &mask, hev_thresh);
851 STOREUV(q1, u, v, 1 * stride);
857 __m128i t1, t2, p1, p0, q0, q1;
863 Load16x4(u, v, stride, &q0, &q1, &t1, &t2); // q0, q1, q2, q3
864 MAX_DIFF2(t2, t1, q1, q0, mask);
866 COMPLEX_FL_MASK(p1, p0, q0, q1, thresh, ithresh, mask);
867 DoFilter4(&p1, &p0, &q0, &q1, &mask, hev_thresh);
871 Store16x4(u, v, stride, &p1, &p0, &q0, &q1);