summaryrefslogtreecommitdiff
path: root/libavfilter/vf_xbr.c
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2014-11-15 13:15:27 +0100
committerClément Bœsch <u@pkh.me>2014-11-15 21:01:40 +0100
commita3c3ee6973989c5a62b33f4cc28281d4563768a4 (patch)
tree1faf4b894d3dc8cb234d9f75e27769e9d5ff7e42 /libavfilter/vf_xbr.c
parent7e91f77547b887cc6e834d058c237a73b8bbadcf (diff)
downloadffmpeg-a3c3ee6973989c5a62b33f4cc28281d4563768a4.tar.gz
avfilter/xbr: misc cleanup in FILT[234] macros
Diffstat (limited to 'libavfilter/vf_xbr.c')
-rw-r--r--libavfilter/vf_xbr.c226
1 files changed, 110 insertions, 116 deletions
diff --git a/libavfilter/vf_xbr.c b/libavfilter/vf_xbr.c
index d795acc6a6..6b608a350b 100644
--- a/libavfilter/vf_xbr.c
+++ b/libavfilter/vf_xbr.c
@@ -149,38 +149,36 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y)
const uint32_t F4 = sa2[pnext2]; \
const uint32_t I4 = sa3[pnext2];
-#define FILT2(PE, PI, PH, PF, PG, PC, PD, PB, PA, G5, C4, G0, D0, C1, B1, F4, I4, H5, I5, A0, A1, N0, N1, N2, N3) do { \
- unsigned ex = (PE!=PH && PE!=PF); \
- if ( ex )\
- {\
- unsigned e = (df(PE,PC)+df(PE,PG)+df(PI,H5)+df(PI,F4))+(df(PH,PF)<<2); \
- unsigned i = (df(PH,PD)+df(PH,I5)+df(PF,I4)+df(PF,PB))+(df(PE,PI)<<2); \
- if ((e<i) && ( !eq(PF,PB) && !eq(PH,PD) || eq(PE,PI) && (!eq(PF,I4) && !eq(PH,I5)) || eq(PE,PG) || eq(PE,PC)) )\
- {\
- unsigned ke = df(PF,PG); \
- unsigned ki = df(PH,PC); \
- unsigned ex2 = (PE!=PC && PB!=PC); \
- unsigned ex3 = (PE!=PG && PD!=PG); \
- unsigned px = (df(PE,PF) <= df(PE,PH)) ? PF : PH; \
- if (ke<<1 <= ki && ex3 && ke >= ki<<1 && ex2) { /* left-up */ \
- ALPHA_BLEND_224_W(E[N3], px); \
- ALPHA_BLEND_64_W( E[N2], px); \
- E[N1] = E[N2]; \
- } else if (ke<<1 <= ki && ex3) { /* left */ \
- ALPHA_BLEND_192_W(E[N3], px); \
- ALPHA_BLEND_64_W( E[N2], px); \
- } else if (ke >= ki<<1 && ex2) { /* up */ \
- ALPHA_BLEND_192_W(E[N3], px); \
- ALPHA_BLEND_64_W( E[N1], px); \
- } else { /* diagonal */ \
- ALPHA_BLEND_128_W(E[N3], px); \
- }\
- }\
- else if (e<=i)\
- {\
- ALPHA_BLEND_128_W( E[N3], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
- }\
- }\
+#define FILT2(PE, PI, PH, PF, PG, PC, PD, PB, PA, G5, C4, G0, D0, C1, B1, F4, I4, H5, I5, A0, A1, \
+ N0, N1, N2, N3) do { \
+ if (PE != PH && PE != PF) { \
+ const unsigned e = df(PE,PC) + df(PE,PG) + df(PI,H5) + df(PI,F4) + (df(PH,PF)<<2); \
+ const unsigned i = df(PH,PD) + df(PH,I5) + df(PF,I4) + df(PF,PB) + (df(PE,PI)<<2); \
+ if (e < i && (!eq(PF,PB) && !eq(PH,PD) || eq(PE,PI) \
+ && (!eq(PF,I4) && !eq(PH,I5)) \
+ || eq(PE,PG) || eq(PE,PC))) { \
+ const unsigned ke = df(PF,PG); \
+ const unsigned ki = df(PH,PC); \
+ const unsigned ex2 = PE != PC && PB != PC; \
+ const unsigned ex3 = PE != PG && PD != PG; \
+ const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
+ if (ke<<1 <= ki && ex3 && ke >= ki<<1 && ex2) { /* left-up */ \
+ ALPHA_BLEND_224_W(E[N3], px); \
+ ALPHA_BLEND_64_W( E[N2], px); \
+ E[N1] = E[N2]; \
+ } else if (ke<<1 <= ki && ex3) { /* left */ \
+ ALPHA_BLEND_192_W(E[N3], px); \
+ ALPHA_BLEND_64_W( E[N2], px); \
+ } else if (ke >= ki<<1 && ex2) { /* up */ \
+ ALPHA_BLEND_192_W(E[N3], px); \
+ ALPHA_BLEND_64_W( E[N1], px); \
+ } else { /* diagonal */ \
+ ALPHA_BLEND_128_W(E[N3], px); \
+ } \
+ } else if (e <= i) { \
+ ALPHA_BLEND_128_W( E[N3], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
+ } \
+ } \
} while (0)
static void xbr2x(AVFrame * input, AVFrame * output, const uint32_t * r2y)
@@ -212,46 +210,44 @@ static void xbr2x(AVFrame * input, AVFrame * output, const uint32_t * r2y)
}
}
-#define FILT3(PE, PI, PH, PF, PG, PC, PD, PB, PA, G5, C4, G0, D0, C1, B1, F4, I4, H5, I5, A0, A1, N0, N1, N2, N3, N4, N5, N6, N7, N8) do { \
- unsigned ex = (PE!=PH && PE!=PF); \
- if ( ex )\
- {\
- unsigned e = (df(PE,PC)+df(PE,PG)+df(PI,H5)+df(PI,F4))+(df(PH,PF)<<2); \
- unsigned i = (df(PH,PD)+df(PH,I5)+df(PF,I4)+df(PF,PB))+(df(PE,PI)<<2); \
- if ((e<i) && ( !eq(PF,PB) && !eq(PF,PC) || !eq(PH,PD) && !eq(PH,PG) || eq(PE,PI) && (!eq(PF,F4) && !eq(PF,I4) || !eq(PH,H5) && !eq(PH,I5)) || eq(PE,PG) || eq(PE,PC)) )\
- {\
- unsigned ke = df(PF,PG); \
- unsigned ki = df(PH,PC); \
- unsigned ex2 = (PE!=PC && PB!=PC); \
- unsigned ex3 = (PE!=PG && PD!=PG); \
- unsigned px = (df(PE,PF) <= df(PE,PH)) ? PF : PH; \
- if (ke<<1 <= ki && ex3 && ke >= ki<<1 && ex2) { /* left-up */ \
- ALPHA_BLEND_192_W(E[N7], px); \
- ALPHA_BLEND_64_W( E[N6], px); \
- E[N5] = E[N7]; \
- E[N2] = E[N6]; \
- E[N8] = px;\
- } else if (ke<<1 <= ki && ex3) { /* left */ \
- ALPHA_BLEND_192_W(E[N7], px); \
- ALPHA_BLEND_64_W( E[N5], px); \
- ALPHA_BLEND_64_W( E[N6], px); \
- E[N8] = px;\
- } else if (ke >= ki<<1 && ex2) { /* up */ \
- ALPHA_BLEND_192_W(E[N5], px); \
- ALPHA_BLEND_64_W( E[N7], px); \
- ALPHA_BLEND_64_W( E[N2], px); \
- E[N8] = px;\
- } else { /* diagonal */ \
- ALPHA_BLEND_224_W(E[N8], px); \
- ALPHA_BLEND_32_W(E[N5], px); \
- ALPHA_BLEND_32_W(E[N7], px); \
- }\
- }\
- else if (e<=i)\
- {\
- ALPHA_BLEND_128_W( E[N8], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
- }\
- }\
+#define FILT3(PE, PI, PH, PF, PG, PC, PD, PB, PA, G5, C4, G0, D0, C1, B1, F4, I4, H5, I5, A0, A1, \
+ N0, N1, N2, N3, N4, N5, N6, N7, N8) do { \
+ if (PE != PH && PE != PF) { \
+ const unsigned e = df(PE,PC) + df(PE,PG) + df(PI,H5) + df(PI,F4) + (df(PH,PF)<<2); \
+ const unsigned i = df(PH,PD) + df(PH,I5) + df(PF,I4) + df(PF,PB) + (df(PE,PI)<<2); \
+ if (e < i && (!eq(PF,PB) && !eq(PF,PC) || !eq(PH,PD) && !eq(PH,PG) || eq(PE,PI) \
+ && (!eq(PF,F4) && !eq(PF,I4) || !eq(PH,H5) && !eq(PH,I5)) \
+ || eq(PE,PG) || eq(PE,PC))) { \
+ const unsigned ke = df(PF,PG); \
+ const unsigned ki = df(PH,PC); \
+ const unsigned ex2 = PE != PC && PB != PC; \
+ const unsigned ex3 = PE != PG && PD != PG; \
+ const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
+ if (ke<<1 <= ki && ex3 && ke >= ki<<1 && ex2) { /* left-up */ \
+ ALPHA_BLEND_192_W(E[N7], px); \
+ ALPHA_BLEND_64_W( E[N6], px); \
+ E[N5] = E[N7]; \
+ E[N2] = E[N6]; \
+ E[N8] = px; \
+ } else if (ke<<1 <= ki && ex3) { /* left */ \
+ ALPHA_BLEND_192_W(E[N7], px); \
+ ALPHA_BLEND_64_W( E[N5], px); \
+ ALPHA_BLEND_64_W( E[N6], px); \
+ E[N8] = px; \
+ } else if (ke >= ki<<1 && ex2) { /* up */ \
+ ALPHA_BLEND_192_W(E[N5], px); \
+ ALPHA_BLEND_64_W( E[N7], px); \
+ ALPHA_BLEND_64_W( E[N2], px); \
+ E[N8] = px; \
+ } else { /* diagonal */ \
+ ALPHA_BLEND_224_W(E[N8], px); \
+ ALPHA_BLEND_32_W( E[N5], px); \
+ ALPHA_BLEND_32_W( E[N7], px); \
+ } \
+ } else if (e <= i) { \
+ ALPHA_BLEND_128_W(E[N8], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
+ } \
+ } \
} while (0)
static void xbr3x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
@@ -286,50 +282,48 @@ static void xbr3x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
}
}
-#define FILT4(PE, PI, PH, PF, PG, PC, PD, PB, PA, G5, C4, G0, D0, C1, B1, F4, I4, H5, I5, A0, A1, N15, N14, N11, N3, N7, N10, N13, N12, N9, N6, N2, N1, N5, N8, N4, N0) do { \
- unsigned ex = (PE!=PH && PE!=PF); \
- if ( ex )\
- {\
- unsigned e = (df(PE,PC)+df(PE,PG)+df(PI,H5)+df(PI,F4))+(df(PH,PF)<<2); \
- unsigned i = (df(PH,PD)+df(PH,I5)+df(PF,I4)+df(PF,PB))+(df(PE,PI)<<2); \
- if ((e<i) && ( !eq(PF,PB) && !eq(PH,PD) || eq(PE,PI) && (!eq(PF,I4) && !eq(PH,I5)) || eq(PE,PG) || eq(PE,PC)) )\
- {\
- unsigned ke = df(PF,PG); \
- unsigned ki = df(PH,PC); \
- unsigned ex2 = (PE!=PC && PB!=PC); \
- unsigned ex3 = (PE!=PG && PD!=PG); \
- unsigned px = (df(PE,PF) <= df(PE,PH)) ? PF : PH; \
- if (ke<<1 <= ki && ex3 && ke >= ki<<1 && ex2) { /* left-up */ \
- ALPHA_BLEND_192_W(E[N13], px); \
- ALPHA_BLEND_64_W( E[N12], px); \
- E[N15] = E[N14] = E[N11] = px; \
- E[N10] = E[N3] = E[N12]; \
- E[N7] = E[N13]; \
- } else if (ke<<1 <= ki && ex3) { /* left */ \
- ALPHA_BLEND_192_W(E[N11], px); \
- ALPHA_BLEND_192_W(E[N13], px); \
- ALPHA_BLEND_64_W( E[N10], px); \
- ALPHA_BLEND_64_W( E[N12], px); \
- E[N14] = px; \
- E[N15] = px; \
- } else if (ke >= ki<<1 && ex2) { /* up */ \
- ALPHA_BLEND_192_W(E[N14], px); \
- ALPHA_BLEND_192_W(E[N7 ], px); \
- ALPHA_BLEND_64_W( E[N10], px); \
- ALPHA_BLEND_64_W( E[N3 ], px); \
- E[N11] = px; \
- E[N15] = px; \
- } else { /* diagonal */ \
- ALPHA_BLEND_128_W(E[N11], px); \
- ALPHA_BLEND_128_W(E[N14], px); \
- E[N15] = px; \
- }\
- }\
- else if (e<=i)\
- {\
- ALPHA_BLEND_128_W( E[N15], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
- }\
- }\
+#define FILT4(PE, PI, PH, PF, PG, PC, PD, PB, PA, G5, C4, G0, D0, C1, B1, F4, I4, H5, I5, A0, A1, \
+ N15, N14, N11, N3, N7, N10, N13, N12, N9, N6, N2, N1, N5, N8, N4, N0) do { \
+ if (PE != PH && PE != PF) { \
+ const unsigned e = df(PE,PC) + df(PE,PG) + df(PI,H5) + df(PI,F4) + (df(PH,PF)<<2); \
+ const unsigned i = df(PH,PD) + df(PH,I5) + df(PF,I4) + df(PF,PB) + (df(PE,PI)<<2); \
+ if (e < i && (!eq(PF,PB) && !eq(PH,PD) || eq(PE,PI) \
+ && (!eq(PF,I4) && !eq(PH,I5)) \
+ || eq(PE,PG) || eq(PE,PC))) { \
+ const unsigned ke = df(PF,PG); \
+ const unsigned ki = df(PH,PC); \
+ const unsigned ex2 = PE != PC && PB != PC; \
+ const unsigned ex3 = PE != PG && PD != PG; \
+ const unsigned px = df(PE,PF) <= df(PE,PH) ? PF : PH; \
+ if (ke<<1 <= ki && ex3 && ke >= ki<<1 && ex2) { /* left-up */ \
+ ALPHA_BLEND_192_W(E[N13], px); \
+ ALPHA_BLEND_64_W( E[N12], px); \
+ E[N15] = E[N14] = E[N11] = px; \
+ E[N10] = E[N3] = E[N12]; \
+ E[N7] = E[N13]; \
+ } else if (ke<<1 <= ki && ex3) { /* left */ \
+ ALPHA_BLEND_192_W(E[N11], px); \
+ ALPHA_BLEND_192_W(E[N13], px); \
+ ALPHA_BLEND_64_W( E[N10], px); \
+ ALPHA_BLEND_64_W( E[N12], px); \
+ E[N14] = px; \
+ E[N15] = px; \
+ } else if (ke >= ki<<1 && ex2) { /* up */ \
+ ALPHA_BLEND_192_W(E[N14], px); \
+ ALPHA_BLEND_192_W(E[N7 ], px); \
+ ALPHA_BLEND_64_W( E[N10], px); \
+ ALPHA_BLEND_64_W( E[N3 ], px); \
+ E[N11] = px; \
+ E[N15] = px; \
+ } else { /* diagonal */ \
+ ALPHA_BLEND_128_W(E[N11], px); \
+ ALPHA_BLEND_128_W(E[N14], px); \
+ E[N15] = px; \
+ } \
+ } else if (e <= i) { \
+ ALPHA_BLEND_128_W( E[N15], ((df(PE,PF) <= df(PE,PH)) ? PF : PH)); \
+ } \
+ } \
} while (0)
static void xbr4x(AVFrame *input, AVFrame *output, const uint32_t *r2y)