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
        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);
        }