diff --git a/pixel.cpp b/pixel.cpp
index edd98139270fe719c0651db58da532e4fc0fc13c..b7656246436d1a219efb7ddcada2a5211ef03e24 100644
--- a/pixel.cpp
+++ b/pixel.cpp
@@ -5,35 +5,48 @@
 using namespace std;
 
 typedef ap_axis<32,0,0,0> pkt_t;
-static int counter = 0;
-static bool flag=false;
-
+static int count = 0;
+static int count_streams = 0;
+static bool flag = false;
+static int p_count = 3;
 
 void pixel(
-		ap_int<32> w,
+		ap_int<32> position,
+		ap_int<32> stream_count,
 		hls::stream< pkt_t > &din,
 		hls::stream< pkt_t > &dout
 ) {
 	#pragma HLS INTERFACE ap_ctrl_none port=return
-	#pragma HLS INTERFACE s_axilite port=w
+	#pragma HLS INTERFACE s_axilite port=position
+	#pragma HLS INTERFACE s_axilite port=stream_count
 	#pragma HLS INTERFACE axis port=din
 	#pragma HLS INTERFACE axis port=dout
 
 	pkt_t pkt=din.read();
+	count_streams++;
 
-
-	if(counter==w){
-		pkt.data*=2;
-		flag=true;
-		counter=0;
+	if(p_count==0){
+			count = 0;
+			flag=true;
+	}
+	if(count == position || count == position+1 || count == position+2){
+		pkt.data -= 1;
+		p_count--;
 
 	}
 	else if(!flag){
-	counter++;
+		count++;
 	}
-	// pending: have to make count=0 when TLAST signal is active -  for w not in the range of 0 to n(size of the array) 
+
+	if (count_streams == stream_count){
+		count_streams = 0;
+		flag = false;
+	}
+
+	// pending: have to make count=0 when TLAST signal is active -  for w not in the range of 0 to n(size of the array)
 
 
 	dout.write(pkt);
 
 }
+