Example #1
0
        static private int packet_tcp_frameMP3(byte[] _send_buff, MP3_frame _mp3_reader, int _frameSend)
        {
            headerPacket HeaderPacket = new headerPacket();

            //reset packet header
            HeaderPacket.NumOffFrame = 0;
            HeaderPacket.TotalLength = HeaderPacket.Length;
            while (HeaderPacket.NumOffFrame < 41)
            {
                if (_mp3_reader.ReadNextFrame() == false)
                {
                    break;
                }
                Buffer.BlockCopy(_mp3_reader.Mp3_buff, _mp3_reader.Start_frame, _send_buff, HeaderPacket.TotalLength, _mp3_reader.Frame_size);
                HeaderPacket.TotalLength += (UInt16)(_mp3_reader.Frame_size);
                HeaderPacket.NumOffFrame++;
            }
            if (HeaderPacket.NumOffFrame < 41)
            {
                Console.WriteLine("hh");
            }
            //copy header to _send_buff
            HeaderPacket.copyHeaderToBuffer(_send_buff);

            //sizeOfPacket = HeaderPacket.TotalLength;

            //increase IDframe
            //HeaderPacket.IDframe++;



            return(HeaderPacket.NumOffFrame);
        }
Example #2
0
        public static int sendPacketMP3(Socket _socketSend, byte[] mp3_buff, int mp3_buff_length)
        {
            double timePoint, mark_time = 0;

            MP3_frame mp3_reader = new MP3_frame(mp3_buff, mp3_buff_length);

            if (!mp3_reader.IsValidMp3())
            {
                return(-1);
            }
            //const double framemp3_time = (double)1152.0 * 1000.0 / 44100.0; //ms
            double framemp3_time = mp3_reader.TimePerFrame_ms;
            //count total Frame of mp3
            //duration_song_s = mp3_reader.countFrame() * (int)mp3_reader.TimePerFrame_ms / 1000;

            const int FrameSend = 41;

            int numOfFrame, sizeOfPacket = FrameSend * 144 + 12;

            //int size = 7000;
            byte[] sendBuffer = new byte[sizeOfPacket];


            //SocketFlags socketFlag = new SocketFlags();

            //launch timer
            Stopwatch stopWatchSend = new Stopwatch();

            stopWatchSend.Start();

            while (true)
            {
                numOfFrame = packet_tcp_frameMP3(sendBuffer, mp3_reader, FrameSend);

                if (numOfFrame < FrameSend)
                {
                    sizeOfPacket = numOfFrame * 144 + 12;
                    byte[] sendBufferTMP = new byte[sizeOfPacket];
                    Buffer.BlockCopy(sendBuffer, 0, sendBufferTMP, 0, sizeOfPacket);
                    _socketSend.Send(sendBufferTMP);
                    Thread.Sleep(1000);
                    break;
                }

                _socketSend.Send(sendBuffer);

                mark_time += framemp3_time * numOfFrame; //point to next time frame
                //get current time playing
                //timePlaying_song_s = (int)mark_time / 1000; //second
                timePoint = mark_time - stopWatchSend.Elapsed.TotalMilliseconds;
                if ((int)timePoint > 0)
                {
                    Thread.Sleep((int)timePoint);
                }
            }
            //done a song
            stopWatchSend.Stop();
            return(0);
        }