Ejemplo n.º 1
0
        private void sendImage(Object obj)
        {
            //Console.WriteLine("Inside SendImage............");
            try
            {
                int time = 0;
                Image image;
                int FrameNumber;
                int currentFrame = 0;
                char state = 'd';
                byte[] buffer = new byte[1024];
                Boolean capture = false;
                Boolean send = false;
                int sendSize = 0;
                bool first = true;
                byte[] imageBytes = null;
                byte[] frameBytes = null;

                FrameData frameData = new FrameData() ;

                byte[] sendingData;
                int synch = 0;
                int size = 0;
                int ticks = Environment.TickCount;
                byte special = 0;

                while (true)
                {

                    lock (this)
                    {
                        FrameNumber = FRAMENUMBER;
                        capture = onCapture;
                        send = onSending;
                    }
                    //Thread.Sleep(1000);
                    Thread.Sleep(1000 / FrameNumber * 3);
                    try
                    {
                        Console.WriteLine("before sending settings......." + sendSize.ToString());
                        //MessageBox.Show(imageSetting.Width.ToString() + "X" + imageSetting.Height.ToString() + "X" + imageSetting.BlockSize.ToString() + "X" + imageSetting.ColorBits.ToString() + "ssssssssssssssss");
                        sendingData = imageSetting.toByte();
                        //sendData(sendingData);

                        }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Error on sending setting" + ex.ToString());
                    }

                    try
                    {

                        //Console.WriteLine("State of onSending and onCapturing=" + send + capture);
                        while (send && capture)
                        {
                            lock (this)
                            {
                                currentFrame = (currentFrameNumber - 2 + FrameNumber) % FrameNumber;
                                state = states[currentFrame];
                            }
                            //Console.WriteLine("state = " + state.ToString());

                            if (state != 's')
                            {
                                //Console.WriteLine("THis is inside sending..not synchronized.." + currentFrame + state + synch);
                                time = 1000 / FrameNumber - (Environment.TickCount - ticks);

                                if (time > 0)
                                    Thread.Sleep(time);
                                synch++;
                                ticks = Environment.TickCount;
                                //currentFrame = (currentFrame + 1) % FrameNumber;
                                if (synch < FrameNumber)
                                    continue;
                            }
                            synch = 0;
                            lock (this)
                            {
                                image = images[currentFrame];
                                frameData = framesData[currentFrame];

                            }

                            //Testing frameData begins

                            int row = frameData.rowChangeBits.Length;
                            int colm = frameData.columnChangeBits.Length;
                            int col = frameData.RPixels.Count;
                            if (row > 0)
                            Console.WriteLine("Before convertions of frameData: row: "+row+" "+frameData.rowChangeBits.Get(0)+ " "+frameData.rowChangeBits.Get(row - 1));
                            if (colm > 0)
                            Console.WriteLine(    " col "+colm+frameData.columnChangeBits.Get(0)+ frameData.columnChangeBits.Get(colm - 1)
                                + " rp: "+col + " "+frameData.RPixels[0]+ " "+frameData.RPixels[col-1]);
                            frameData = new FrameData(frameData.toBytes(), imageSetting);

                             row = frameData.rowChangeBits.Length;
                            colm = frameData.columnChangeBits.Length;
                             col = frameData.RPixels.Count;
                            if(row> 0)
                            Console.WriteLine("After convertions of frameData: row: "+row+" "+frameData.rowChangeBits.Get(0)+ " "+frameData.rowChangeBits.Get(row - 1));
                            if(colm >0)
                            Console.WriteLine(  " col "+colm+frameData.columnChangeBits.Get(0)+ frameData.columnChangeBits.Get(colm - 1)
                                + " rp: "+col + " "+frameData.RPixels[0]+ " "+frameData.RPixels[col-1]);

                            //Testing frameData complete

                            if (image == null)
                            {
                                //  MessageBox.Show("image null in sending SSSSSSSSS");
                                continue;
                            }
                            else
                            {
                                imageBytes = imageToByteArray(image);

                            }
                            if (frameData == null)
                            {
                                //MessageBox.Show("ssssssssssssssssssSpecial" + BitConverter.GetBytes(special).Length);

                                //continue;
                                continue;

                            }
                            else
                            {
                                frameBytes = frameData.toBytes();

                            }

                            totalData += imageBytes.Length;

                            ImageSetting imageSett;
                            lock (this)
                            {
                                imageSett = imageSetting;
                            }
                            try
                            {

                                if ((frameData.columnChangeBits.Length == 0)&& !first)
                                {
                                    special= 0;
                                    //sendData(BitConverter.GetBytes(special));
                                    //MessageBox.Show("ssssssssssssssssssSpecial" + BitConverter.GetBytes(special).Length);

                                    totalSentData++;
                                }

                                else
                                {
                                    if ((frameBytes.Length < imageBytes.Length)&& !first)
                                    {
                                        special = 1;
                                        //sendData(BitConverter.GetBytes(special));
                                        sendingData = frameBytes;
                                        //MessageBox.Show("ssssssssssssssssssSpecial" + BitConverter.GetBytes(special).Length);

                                         //Testing

                                        frameData = new FrameData(sendingData.ToArray(), imageSett);

                    //                    MessageBox.Show("sended size: " + sendingData.Length + "frameData size " + frameData.toBytes().Length +

                    //                    "imageSett: " + imageSett.Height + imageSett.Width + imageSett.BlockSize + imageSett.ColorBits +
                    //                      "LLLLLLLLLLLLLLLLLLLlll" + "frame Data : rowchange" + frameData.rowChangeBits.Length + "frame Data : colchange" + frameData.columnChangeBits.Length +
                    //"frame Data : RP" + frameData.RPixels.Count + "frame Data : GP" + frameData.GPixels.Count +
                    //    "frame Data :BP" + frameData.BPixels.Count);

                                        Image prevImage;
                                        int prevN = (currentFrame - 1 + FrameNumber) % FrameNumber;

                                        lock (this)
                                        {
                                            prevImage = images[prevN];

                                        }

                                        image = reProcessFrame(prevImage, frameData, imageSett);

                                        pictureBox2.Image = image;

                                    }

                                    else
                                    {
                                        special  = 2;
                                        sendSize = imageBytes.Length;
                                        sendingData = imageBytes;
                                        //MessageBox.Show("Special sizessssssssssssssssssSpecial" + BitConverter.GetBytes(special).Length);

                                        //sendData(BitConverter.GetBytes(special));

                                        //Testing
                                        image = byteArrayToImage(sendingData.ToArray());
                                        pictureBox2.Image = image;

                                    }

                                    totalSentData += sendSize;

                                    try
                                    {
                                        Console.WriteLine("before sending size.......size = " + sendSize.ToString());
                                        byData = System.Text.Encoding.ASCII.GetBytes(sendSize.ToString());
                                        //MessageBox.Show("sssssssssssReceive video size + " + sendSize.ToString() + " " + byData.Length + " " + byData[0] + " " + byData[1] + " " + byData[2] + " " + byData[3] + " " + byData[4] + " " + byData[5] );

                                        //sendData(byData);
                                        Console.WriteLine("after sending size.......");
                                        sendFrames++;

                                    }

                                    catch (Exception ex)
                                    {
                                        MessageBox.Show("Error on sending size" + ex.ToString());
                                    }

                                    try
                                    {
                                        Console.WriteLine("before sending actual data :");
                                     //   MessageBox.Show("Before sending actual data" + sendSize.ToString()+" "+sendingData[0]+" "+sendingData[sendSize-1]);
                                        //sendData(sendingData);
                                      //  MessageBox.Show(" after sending actual data :");
                                    }
                                    catch (Exception ex)
                                    {
                                        MessageBox.Show("Error on sending video in sending actual data" + ex.ToString());
                                    }
                                }
                            }
                            catch (Exception ex)
                               {
                                    Console.WriteLine("sending special error in sssssssssssssss"+ex.ToString());
                                }

                                // Console.WriteLine("ccccccccccccccccccccccccccccccccccccccccccc  after cxalling recsize...." + recSize);

                            //byte[] spec = new byte[1];

                            //spec[0] = special;

                                Console.WriteLine("  Before calling sending bact to server end....");
                                try
                                {
                            //        //sendData(BitConverter.GetBytes(special));
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine("sending end error in sssssssssssssss"+ex.ToString());
                                }
                               // try
                               // {
                               //     byte sp;
                               // //do
                               // //{
                               // //    //sp = recSpecial();
                               // //}while(sp != special);
                               // //}
                               // catch (Exception ex)
                               // {
                               //     Console.WriteLine("receiving end error in sssssssssssssss"+ex.ToString());
                               // }
                               //}
                        //Testing portion begins.............................................
                        //        ImageSetting imageSett;
                        //        lock (this)
                        //        {
                        //            imageSett = imageSetting;
                        //        }
                        //if(special == 0)
                        //{

                        //}
                        //else if(special == 1)
                        //{
                        // frameData = new FrameData(sendingData.ToArray(), imageSett);
                        //Image prevImage;
                        //  int  prevN = (currentFrame -1 +FrameNumber)%FrameNumber;

                        //    lock(this)
                        //    {
                        //        prevImage = images[prevN];

                        //    }

                        //        image = reProcessFrame(prevImage, frameData, imageSett);

                        //     pictureBox2.Image = image;
                        //}
                        //else if(special == 2)
                        //{
                        //    image = byteArrayToImage(sendingData.ToArray());
                        //    pictureBox2.Image = image;

                        //}
                        //else
                        //{
                        //    MessageBox.Show("IIIIIIIIIIII");
                        //}

                        //Testing portion ends.........................................
                                lock(this)
                                {
                                    states[currentFrame] = 'c';
                                }
                                first = false;
                                time = 1000 / FrameNumber - (Environment.TickCount - ticks);

                                if (time > 0)
                                Thread.Sleep(time);
                                //else
                                //    Console.WriteLine("no sleeping..." + (-time).ToString());
                                ticks = Environment.TickCount;
                                //currentFrame = (currentFrame + 1 + FrameNumber) % FrameNumber;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Error in sending thread...!"+ex.ToString());
                    }
                }

            }

            catch (Exception ex)
            {
                Console.WriteLine("Error in sending...!");
            }
        }
Ejemplo n.º 2
0
        Image reProcessFrame(Image prevImage, FrameData frameData, ImageSetting imageSetting)
        {
            Image image;
                Bitmap bitmap = new Bitmap(imageSetting.Width, imageSetting.Height);
                Bitmap prevBitmap = new Bitmap(prevImage);
                bitmap = prevBitmap;
                int RPixel;
                int GPixel;
                int BPixel;

                int columnChangeNum = 0;

                int row = -1;

                int changedBlockNum = 0;

                bool rowChanges = false;
                bool blockChange = false;

                int i=0;
                int j=0;
                try
                {

                for (   i = 0; i < imageSetting.Height; i += imageSetting.BlockSize)
                {
                    if (frameData.rowChangeBits[i/imageSetting.BlockSize])
                    {
                        rowChanges = true;
                        row++;
                    }
                    else
                        continue;

                    for (  j = 0; j < imageSetting.Width; j += imageSetting.BlockSize)
                    {

                        columnChangeNum = row * imageSetting.Width / imageSetting.BlockSize + j/imageSetting.BlockSize;
                        blockChange = frameData.columnChangeBits[columnChangeNum];
                        if (!blockChange)
                            continue;
                        else
                        {

                            RPixel = frameData.RPixels[changedBlockNum];
                            GPixel = frameData.GPixels[changedBlockNum];
                            BPixel = frameData.BPixels[changedBlockNum]; ;

                            changedBlockNum++;

                            for (int k = i; k < imageSetting.BlockSize; k++)
                                for (int l = j; l < imageSetting.BlockSize; l++)
                                {

                                    Color newcol = Color.FromArgb(RPixel, GPixel, BPixel);
                                    bitmap.SetPixel(k, l, newcol);

                                }
                        }

                    }

                }

                image = (Image)bitmap;

                return image;

            }
            catch (Exception ex)
            {
                MessageBox.Show("repocess frameLLLLLLLLLLLLLLLLLLLlll" + " frame Data : rowchange"+frameData.rowChangeBits.Length+ " frame Data : colchange"+frameData.columnChangeBits.Length+
                    "frame Data : RP"+frameData.RPixels.Count+ " frame Data : GP"+frameData.GPixels.Count+" rowchange "+rowChanges
                    +" i "+i+" j "+j+
                    " frame Data :BP"+frameData.BPixels.Count+" blcok change "+blockChange+" changedBlockNum"+changedBlockNum

               +"change col "+columnChangeNum+"ex "+ex.ToString());
            }
            return null;
        }
Ejemplo n.º 3
0
        FrameData processFrames(ImageFrame imageFrame, ImageFrame prevImageFrame, ImageSetting imageSetting)
        {
            int blockChange = 0;

            FrameData frameData = new FrameData();
            List<bool> rowChangeBits = new List<bool>();
                List<bool> columnChangeBits = new List<bool>();

            for(int i =0;i<imageSetting.Height/imageSetting.BlockSize;i++)
            {
                bool rowChange = false;
                List<bool> columnChange = new List<bool>();

                int rowFirstBlock = imageSetting.Height/imageSetting.BlockSize*i;

                for (int j = 0; j < imageSetting.Width / imageSetting.BlockSize; j++)
                {
                    bool changeBlock = false;
                    int position = rowFirstBlock + j;

                    if (!imageFrame.RPixels.ElementAt(position).Equals(prevImageFrame.RPixels.ElementAt(position)))
                        changeBlock = true;

                    if (!imageFrame.GPixels.ElementAt(position).Equals(prevImageFrame.GPixels.ElementAt(position)))
                        changeBlock = true;

                    if (!imageFrame.BPixels.ElementAt(position).Equals(prevImageFrame.BPixels.ElementAt(position)))
                        changeBlock = true;
                    if (changeBlock)
                    {
                        blockChange++;
                        rowChange = true;
                        columnChange.Add(true);

                        frameData.RPixels.Add(imageFrame.RPixels.ElementAt(position));
                        frameData.GPixels.Add(imageFrame.GPixels.ElementAt(position));
                        frameData.BPixels.Add(imageFrame.BPixels.ElementAt(position));

                    }
                    else
                    {
                        columnChange.Add(false);
                    }

                }
                if (rowChange)
                {
                    rowChangeBits.Add(true);
                    columnChangeBits.AddRange(columnChange);
                }
                else
                {
                    rowChangeBits.Add(false);
                }

            }
            frameData.rowChangeBits = new BitArray(rowChangeBits.ToArray());
            frameData.columnChangeBits = new BitArray(columnChangeBits.ToArray());
            //MessageBox.Show("int processImageLLLLLLLLLLLLLLLLLLLlll" + "frame Data : rowchange" + frameData.rowChangeBits.Length + "frame Data : colchange" + frameData.columnChangeBits.Length +
            //       "frame Data : RP" + frameData.RPixels.Count + "frame Data : GP" + frameData.GPixels.Count +
            //           "frame Data :BP" + frameData.BPixels.Count);

            return frameData;
        }
Ejemplo n.º 4
0
        private void processImage(Object obj)
        {
            int ticks = 0;
            int time = 0;

            ticks = Environment.TickCount;
            //Console.WriteLine("Time Elapsed +++++++"+ticks.ToString());
            //Image image;

            int FrameNumber;
            int currentFrame;
            int prevFrame;
            char state = 'd';
            Boolean capture = false;
            Boolean send = false;
            int synch = 0;
            ImageFrame imageFrame = new ImageFrame();
            ImageFrame prevImageFrame = new ImageFrame();
            FrameData frameData = new FrameData();
            try
            {
            while (true)
            {
                lock (this)
                {

                    FrameNumber = FRAMENUMBER;
                    capture = onCapture;
              //          currentFrame = (currentFrameNumber - 1 + FrameNumber) % FrameNumber;
                    send = onSending;
                }

               // Thread.Sleep(1000);
                Thread.Sleep(1000 / FrameNumber * 2);
                try
                {
                    while (send && capture)
                {
                    lock (this)
                    {
                        currentFrame = (currentFrameNumber - 1 + FrameNumber) % FrameNumber;
                        state = states[currentFrame];
                    }
                    prevFrame = (currentFrame - 1 + FrameNumber) % FrameNumber;

                    if (state != 'p')
                    {
                        //Thread.Sleep(1000 / FrameNumber);
                        //Console.WriteLine("THis is inside processing.not synchronized.." + currentFrame+state+synch);
                        //time = 1000 / FrameNumber - (Environment.TickCount - ticks);
                        //if (time > 0)
                        //Thread.Sleep(time);
                        //synch++;
                        //ticks = Environment.TickCount;
                        //currentFrame = (currentFrame + 1) % FrameNumber;
                        //if(synch < FrameNumber)
                        continue;
                    }
                    synch = 0;

                    lock (this)
                    {
                        imageFrame = imageFrames[currentFrame];
                        prevImageFrame = imageFrames[prevFrame];
                        states[currentFrame] = 's';

                    }
                    lock (this)
                    {
                        frameData = processFrames(imageFrame, prevImageFrame, imageSetting);
                    }

                    lock (this)
                    {
                        framesData[currentFrame] = frameData;
                    }

                    //currentFrame = (currentFrame + 1) % FrameNumber;
                    //Console.WriteLine("THis is inside process..." + currentFrame);
                    time = 1000 / FrameNumber - (Environment.TickCount - ticks);

                    if (time > 0)
                        Thread.Sleep(time);
                    //else
                    //    Console.WriteLine("no sleeping..." + (-time).ToString());
                    ticks = Environment.TickCount;

                }
                }
                catch(Exception ex)
                {
                     MessageBox.Show("Error in process thread!"+ex.ToString());
                }
                 }
                }
                catch(Exception ex)
                {
                    MessageBox.Show("Error in processing!"+ex.ToString());
                }
        }
Ejemplo n.º 5
0
        private void button1_Click(object sender, EventArgs e)
        {
            //bool[] data = new bool[9];
            //data[0] = true;
            //data[1] = true;
            //data[2] = false;
            //data[3] = true;
            //data[4] = true;
            //data[5] = false;
            //data[6] = false;
            //data[7] = true;
            //data[8] = true;

            //FrameData frm = new FrameData();
            //BitArray btarray = new BitArray(data);

            //for (int i = 0; i < btarray.Length; i++)
            //{
            //    Console.WriteLine(btarray[i]);
            //}
            //Console.WriteLine("fsdfs");
            //byte[] databyte = frm.ToByteArray(btarray);

            //BitArray bt = new BitArray(databyte);
            //for (int i = 0; i < bt.Length; i++)
            //{
            //    Console.WriteLine(bt[i]);
            //}

            ImageSetting imgSetting = new ImageSetting(320, 240, 8, 8);
            byte[] imgByte = imgSetting.toByte();
            ImageSetting imgSetting1 = new ImageSetting(imgByte);
            Console.WriteLine("Height : " + imgSetting1.Height + "\nWidth : " + imgSetting1.Width + "\nblock : " + imgSetting1.BlockSize + "\nColorBIts : " + imgSetting1.ColorBits);

            int rowDataNo = imgSetting.Height / imgSetting.BlockSize;
            Console.WriteLine("Row No :" + rowDataNo);

            bool[] rowChangeBits = new bool[rowDataNo];

            for (int i = 0; i < rowDataNo; i++)
            {
                rowChangeBits[i] = true;
            }

            int colNo = imgSetting.Width / imgSetting.BlockSize;
            bool[] colChangeBits = new bool[colNo * rowDataNo];
            int count = 0;
            Console.WriteLine("total column change bits no : " + rowDataNo * colNo);
            for (int j = 0; j < rowDataNo; j++)
            {
                for (int k = 0; k < colNo; k++)
                {
                    colChangeBits[count] = true;
                    count++;
                }
            }

            int totalchange = rowDataNo * colNo;
            List<byte> RPixel = new List<byte>();
            List<byte> GPixel = new List<byte>();
            List<byte> BPixel = new List<byte>();
            char R = 'R';
            char G = 'G';
            char B = 'B';
            for (int i = 0; i < totalchange; i++)
            {
                RPixel.Add((byte)R);
                GPixel.Add((byte)G);
                BPixel.Add((byte)B);
            }

            FrameData frmData = new FrameData(rowChangeBits, colChangeBits, RPixel, GPixel, BPixel);

            byte[] frmByte = frmData.toBytes();

            FrameData frmData1 = new FrameData(frmByte, imgSetting);
            int c = 0;
            Console.WriteLine("Row Change Bits : " + rowChangeBits.Length + "------" + frmData1.rowChangeBits.Length);
            for (int i = 0; i < rowDataNo; i++)
            {
                Console.WriteLine(i + "-" + frmData1.rowChangeBits[i]);
                if (frmData1.rowChangeBits[i])
                    c++;
            }

            count = 0;
            Console.WriteLine("Column Change Bits : " + colChangeBits.Length + "----" + frmData1.columnChangeBits.Length + "true data : " + c);
            for (int i = 0; i < c; i++)
            {
                for (int j = 0; j < colNo; j++)
                {
                    Console.WriteLine(frmData1.columnChangeBits[count]);
                    count++;
                }
            }

            for (int i = 0; i < colNo * c; i++)
            {
                Console.WriteLine((char)frmData1.RPixels[i]);
                Console.WriteLine((char)frmData1.GPixels[i]);
                Console.WriteLine((char)frmData1.BPixels[i]);

            }
            Console.WriteLine("No of R = " + colNo * c);
        }