aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/vf_xbr.c
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2014-11-13 21:20:52 +0100
committerClément Bœsch <u@pkh.me>2014-11-15 20:31:41 +0100
commite0704840404381c7b976a35db4004deca4495a22 (patch)
treee40e89c33d97137219c91a2f16d9e500eee7018e /libavfilter/vf_xbr.c
parent55f05ac0f1bf728cdee5ca70d1c10a08b025844d (diff)
downloadffmpeg-e0704840404381c7b976a35db4004deca4495a22.tar.gz
avfilter/xbr: simplify width overread checks
Diffstat (limited to 'libavfilter/vf_xbr.c')
-rw-r--r--libavfilter/vf_xbr.c199
1 files changed, 39 insertions, 160 deletions
diff --git a/libavfilter/vf_xbr.c b/libavfilter/vf_xbr.c
index 79ccf0edee..26f849994f 100644
--- a/libavfilter/vf_xbr.c
+++ b/libavfilter/vf_xbr.c
@@ -136,10 +136,6 @@ static void xbr2x(AVFrame * input, AVFrame * output, const uint32_t * r2y)
int next_line = output->linesize[0]>>2;
for (y = 0; y < input->height; y++) {
-
- uint32_t pprev;
- uint32_t pprev2;
-
uint32_t * E = (uint32_t *)(output->data[0] + y * output->linesize[0] * 2);
/* middle. Offset of -8 is given */
@@ -167,8 +163,6 @@ static void xbr2x(AVFrame * input, AVFrame * output, const uint32_t * r2y)
}
}
- pprev = pprev2 = 2;
-
for (x = 0; x < input->width; x++) {
uint32_t B1 = sa0[2];
uint32_t PB = sa1[2];
@@ -176,59 +170,29 @@ static void xbr2x(AVFrame * input, AVFrame * output, const uint32_t * r2y)
uint32_t PH = sa3[2];
uint32_t H5 = sa4[2];
+ const int pprev = 2 - (x > 0);
uint32_t A1 = sa0[pprev];
uint32_t PA = sa1[pprev];
uint32_t PD = sa2[pprev];
uint32_t PG = sa3[pprev];
uint32_t G5 = sa4[pprev];
+ const int pprev2 = pprev - (x > 1);
uint32_t A0 = sa1[pprev2];
uint32_t D0 = sa2[pprev2];
uint32_t G0 = sa3[pprev2];
- uint32_t C1 = 0;
- uint32_t PC = 0;
- uint32_t PF = 0;
- uint32_t PI = 0;
- uint32_t I5 = 0;
-
- uint32_t C4 = 0;
- uint32_t F4 = 0;
- uint32_t I4 = 0;
-
- if (x >= input->width - 2) {
- if (x == input->width - 1) {
- C1 = sa0[2];
- PC = sa1[2];
- PF = sa2[2];
- PI = sa3[2];
- I5 = sa4[2];
-
- C4 = sa1[2];
- F4 = sa2[2];
- I4 = sa3[2];
- } else {
- C1 = sa0[3];
- PC = sa1[3];
- PF = sa2[3];
- PI = sa3[3];
- I5 = sa4[3];
-
- C4 = sa1[3];
- F4 = sa2[3];
- I4 = sa3[3];
- }
- } else {
- C1 = sa0[3];
- PC = sa1[3];
- PF = sa2[3];
- PI = sa3[3];
- I5 = sa4[3];
-
- C4 = sa1[4];
- F4 = sa2[4];
- I4 = sa3[4];
- }
+ const int pnext = 3 - (x == input->width - 1);
+ uint32_t C1 = sa0[pnext];
+ uint32_t PC = sa1[pnext];
+ uint32_t PF = sa2[pnext];
+ uint32_t PI = sa3[pnext];
+ uint32_t I5 = sa4[pnext];
+
+ const int pnext2 = pnext + 1 - (x >= input->width - 2);
+ uint32_t C4 = sa1[pnext2];
+ uint32_t F4 = sa2[pnext2];
+ uint32_t I4 = sa3[pnext2];
E[0] = E[1] = E[next_line] = E[next_line + 1] = PE; // 0, 1, 2, 3
@@ -244,11 +208,6 @@ static void xbr2x(AVFrame * input, AVFrame * output, const uint32_t * r2y)
sa4 += 1;
E += 2;
-
- if (pprev2){
- pprev2--;
- pprev = 1;
- }
}
}
}
@@ -299,9 +258,6 @@ static void xbr3x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
{
const int nl = output->linesize[0]>>2;
const int nl1 = nl + nl;
- uint32_t pprev;
- uint32_t pprev2;
-
int x,y;
for (y = 0; y < input->height; y++) {
@@ -333,8 +289,6 @@ static void xbr3x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
}
}
- pprev = pprev2 = 2;
-
for (x = 0; x < input->width; x++){
uint32_t B1 = sa0[2];
uint32_t PB = sa1[2];
@@ -342,59 +296,29 @@ static void xbr3x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
uint32_t PH = sa3[2];
uint32_t H5 = sa4[2];
+ const int pprev = 2 - (x > 0);
uint32_t A1 = sa0[pprev];
uint32_t PA = sa1[pprev];
uint32_t PD = sa2[pprev];
uint32_t PG = sa3[pprev];
uint32_t G5 = sa4[pprev];
+ const int pprev2 = pprev - (x > 1);
uint32_t A0 = sa1[pprev2];
uint32_t D0 = sa2[pprev2];
uint32_t G0 = sa3[pprev2];
- uint32_t C1 = 0;
- uint32_t PC = 0;
- uint32_t PF = 0;
- uint32_t PI = 0;
- uint32_t I5 = 0;
-
- uint32_t C4 = 0;
- uint32_t F4 = 0;
- uint32_t I4 = 0;
-
- if (x >= input->width - 2){
- if (x == input->width - 1){
- C1 = sa0[2];
- PC = sa1[2];
- PF = sa2[2];
- PI = sa3[2];
- I5 = sa4[2];
-
- C4 = sa1[2];
- F4 = sa2[2];
- I4 = sa3[2];
- } else {
- C1 = sa0[3];
- PC = sa1[3];
- PF = sa2[3];
- PI = sa3[3];
- I5 = sa4[3];
-
- C4 = sa1[3];
- F4 = sa2[3];
- I4 = sa3[3];
- }
- } else {
- C1 = sa0[3];
- PC = sa1[3];
- PF = sa2[3];
- PI = sa3[3];
- I5 = sa4[3];
-
- C4 = sa1[4];
- F4 = sa2[4];
- I4 = sa3[4];
- }
+ const int pnext = 3 - (x == input->width - 1);
+ uint32_t C1 = sa0[pnext];
+ uint32_t PC = sa1[pnext];
+ uint32_t PF = sa2[pnext];
+ uint32_t PI = sa3[pnext];
+ uint32_t I5 = sa4[pnext];
+
+ const int pnext2 = pnext + 1 - (x >= input->width - 2);
+ uint32_t C4 = sa1[pnext2];
+ uint32_t F4 = sa2[pnext2];
+ uint32_t I4 = sa3[pnext2];
E[0] = E[1] = E[2] = PE;
E[nl] = E[nl+1] = E[nl+2] = PE; // 3, 4, 5
@@ -412,11 +336,6 @@ static void xbr3x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
sa4 += 1;
E += 3;
-
- if (pprev2){
- pprev2--;
- pprev = 1;
- }
}
}
}
@@ -473,9 +392,6 @@ static void xbr4x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
const int nl = output->linesize[0]>>2;
const int nl1 = nl + nl;
const int nl2 = nl1 + nl;
- uint32_t pprev;
- uint32_t pprev2;
-
int x, y;
for (y = 0; y < input->height; y++) {
@@ -507,8 +423,6 @@ static void xbr4x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
}
}
- pprev = pprev2 = 2;
-
for (x = 0; x < input->width; x++) {
uint32_t B1 = sa0[2];
uint32_t PB = sa1[2];
@@ -516,59 +430,29 @@ static void xbr4x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
uint32_t PH = sa3[2];
uint32_t H5 = sa4[2];
+ const int pprev = 2 - (x > 0);
uint32_t A1 = sa0[pprev];
uint32_t PA = sa1[pprev];
uint32_t PD = sa2[pprev];
uint32_t PG = sa3[pprev];
uint32_t G5 = sa4[pprev];
+ const int pprev2 = pprev - (x > 1);
uint32_t A0 = sa1[pprev2];
uint32_t D0 = sa2[pprev2];
uint32_t G0 = sa3[pprev2];
- uint32_t C1 = 0;
- uint32_t PC = 0;
- uint32_t PF = 0;
- uint32_t PI = 0;
- uint32_t I5 = 0;
-
- uint32_t C4 = 0;
- uint32_t F4 = 0;
- uint32_t I4 = 0;
-
- if (x >= input->width - 2) {
- if (x == input->width - 1) {
- C1 = sa0[2];
- PC = sa1[2];
- PF = sa2[2];
- PI = sa3[2];
- I5 = sa4[2];
-
- C4 = sa1[2];
- F4 = sa2[2];
- I4 = sa3[2];
- } else {
- C1 = sa0[3];
- PC = sa1[3];
- PF = sa2[3];
- PI = sa3[3];
- I5 = sa4[3];
-
- C4 = sa1[3];
- F4 = sa2[3];
- I4 = sa3[3];
- }
- } else {
- C1 = sa0[3];
- PC = sa1[3];
- PF = sa2[3];
- PI = sa3[3];
- I5 = sa4[3];
-
- C4 = sa1[4];
- F4 = sa2[4];
- I4 = sa3[4];
- }
+ const int pnext = 3 - (x == input->width - 1);
+ uint32_t C1 = sa0[pnext];
+ uint32_t PC = sa1[pnext];
+ uint32_t PF = sa2[pnext];
+ uint32_t PI = sa3[pnext];
+ uint32_t I5 = sa4[pnext];
+
+ const int pnext2 = pnext + 1 - (x >= input->width - 2);
+ uint32_t C4 = sa1[pnext2];
+ uint32_t F4 = sa2[pnext2];
+ uint32_t I4 = sa3[pnext2];
E[0] = E[1] = E[2] = E[3] = PE;
E[nl] = E[nl+1] = E[nl+2] = E[nl+3] = PE; // 4, 5, 6, 7
@@ -587,11 +471,6 @@ static void xbr4x(AVFrame *input, AVFrame *output, const uint32_t *r2y)
sa4 += 1;
E += 4;
-
- if (pprev2){
- pprev2--;
- pprev = 1;
- }
}
}
}