Esempio n. 1
0
        public Frame(CompressedFrame compressedFrame, BProfileSection[] sections)
        {
            mCompressedFrame = compressedFrame;
            mFrameNumber     = mCompressedFrame.mFrameNumber;
            mNumSamples      = mCompressedFrame.mNumSamples - 1;

            mStartTime = mCompressedFrame.mStartTime;

            mFirstGPUSampleIndex = 0;
            mFirstGPUSampleIndex = 0;
            mbHasGPUSamples      = false;
            mbCollapsed          = false;

            mMaxStackHeight = 0;

            mCPUsUsed = new bool[6];
            for (int i = 0; i < 6; i++)
            {
                mCPUsUsed[i] = false;
            }

            mThreadID = compressedFrame.mThreadID;

            mNextFrameStartTime = 0;
            mSections           = sections;

            mSectionStats    = new uint[sections.Length];
            mSectionStatsGpu = new uint[sections.Length];
        }
Esempio n. 2
0
        public bool LoadData(string fileName)
        {
            FileStream   s      = File.OpenRead(fileName);
            BinaryReader reader = new BinaryReader(s);

            if (LoadSectionData(reader) == false)
            {
                return(false);
            }

            int startFrame = reader.ReadInt32();
            int endFrame   = reader.ReadInt32();

            //mFrames = new ArrayList();
            //for(int i = startFrame; i < endFrame; i++)
            try
            {
                while (true)
                {
                    bool bHasData = reader.ReadBoolean();
                    if (bHasData == true)
                    {
                        CompressedFrame frame = new CompressedFrame();
                        if (frame.ReadFrame(reader) == false)
                        {
                            return(false);
                        }
                        else
                        {
                            insertCompressedFrame(frame);

                            //                  //read sub frames
                            //                  int numthreadFrames = reader.ReadInt32();
                            //                  for(int j=0; j<numthreadFrames; j++)
                            //                  {
                            //                     CompressedFrame subRame = new CompressedFrame();
                            //                     if(subRame.ReadFrame(reader) == true)
                            //                     {
                            //                        insertCompressedFrame(subRame);
                            //                     }
                            //                  }
                        }
                    }
                }
            }
            catch (System.IO.EndOfStreamException ex)
            {
                ex.ToString();
            }
            reader.Close();
            return(true);
        }
Esempio n. 3
0
 public void HandleMessage(byte type, BinaryReader reader)
 {
     if (type == (byte)TimelinePacketTypes.cSampleIdentifierPacket)
     {
         SampleIdentifierPacket packet = new SampleIdentifierPacket(reader);
         foreach (BProfileSection s in packet.mIdentifiers)
         {
             mObserver.insertIdentifier(s);
         }
     }
     else if (type == (byte)TimelinePacketTypes.cCompressedFramePacket)
     {
         mThreadID     = reader.ReadInt32();
         mFrameNumber  = (ulong)reader.ReadUInt32();
         mStartTime    = reader.ReadDouble();
         mTotalSamples = reader.ReadUInt32();
         mTotalLength  = reader.ReadUInt32();
         mLength       = reader.ReadUInt32();
         if ((mCurrentFrame != null) &&
             ((mBytesWritten == mCurrentFrame.mTotalSize) ||
              (mCurrentFrame.mFrameNumber != mFrameNumber)))
         {
             mObserver.insertCompressedFrame(mCurrentFrame);
             mCurrentFrame = null;
         }
         if (mCurrentFrame == null)
         {
             mCurrentFrame = new CompressedFrame();
             mCoderBuf     = new BDynamicCoderBuf((int)mTotalLength);
             mCurrentFrame.SetBuffer(mCoderBuf);
             mCurrentFrame.mThreadID    = mThreadID;
             mCurrentFrame.mFrameNumber = mFrameNumber;
             mCurrentFrame.mStartTime   = mStartTime;
             mCurrentFrame.mNumSamples  = mTotalSamples;
             mCurrentFrame.mTotalSize   = mTotalLength;
             mBytesWritten = 0;
         }
         reader.ReadBytes((int)mLength).CopyTo(mCoderBuf.getBuf(), mBytesWritten);
         mBytesWritten += mLength;
     }
 }
Esempio n. 4
0
 public void Collapse()
 {
     mCompressedFrame = null;
     mbCollapsed      = true;
 }
Esempio n. 5
0
        public void insertCompressedFrame(CompressedFrame frame)
        {
            //SampleBuffer buffer = mBuffers[mProcessSampleBufferID] as SampleBuffer;
            SampleBuffer buffer = mProcessSampleBuffer;

            if (frame.mNumSamples > buffer.mSize)
            {
                frame.mNumSamples = buffer.mSize;
            }
            mCurrentFrame = new Frame(frame, mSections);

            //if (mLastFrame != null && mLastFrame.mFrameNumber == 2363)
            //{
            //   int count = 3;
            //}

            if (mCurrentFrame.DecompressFrame(buffer.mDecomp, ref buffer.mDecodedSamples) == true)
            {
                if (buffer.mDecodedSamples[0].mSectionID < mSections.Length &&
                    mSections[buffer.mDecodedSamples[0].mSectionID] != null &&
                    (mSections[buffer.mDecodedSamples[0].mSectionID].mName == "Frame"))
                {
                    mNumFullFrames++;
                    if (mNumFullFrames >= mMaxFullFrames)
                    {
                        CleanupFrameMemory();
                    }

                    if (mLastFrame != null)
                    {
                        mLastFrame.mNextFrame    = mCurrentFrame;
                        mCurrentFrame.mLastFrame = mLastFrame;

                        mLastFrame.CalculateFinalStats();
                        mLastFrame.mNextFrameStartTime = mCurrentFrame.mStartTime;
                        FrameStats();//mCurrentFrame;
                        OnNewFrame(mLastFrame);
                        mFrames.Add(mLastFrame);
                    }
                    mLastFrame = mCurrentFrame;
                    ArrayList temp = new ArrayList();
                    foreach (Frame t in mFutureFrameBuffer)
                    {
                        if (t.mFrameNumber == mLastFrame.mFrameNumber)
                        {
                            mLastFrame.mThreadFrames.Add(t);
                        }
                        else
                        {
                            temp.Add(t);
                        }
                    }
                    mFutureFrameBuffer = temp;
                    if (mFutureFrameBuffer.Count > 0)
                    {
                        "asdf".ToString();
                        //oops
                    }
                }
                else if (mLastFrame != null)//if thread data
                {
                    //mLastFrame.AddThreadFrame(mCurrentFrame);

                    if (mLastFrame.mFrameNumber == mCurrentFrame.mFrameNumber)
                    {
                        mLastFrame.AddThreadFrame(mCurrentFrame);
                    }
                    //Match up out of order data...
                    else if (mLastFrame.mFrameNumber < mCurrentFrame.mFrameNumber)
                    {
                        mFutureFrameBuffer.Add(mCurrentFrame);
                    }
                    else if (mLastFrame.mFrameNumber > mCurrentFrame.mFrameNumber)
                    {
                        ulong back = mLastFrame.mFrameNumber - mCurrentFrame.mFrameNumber;
                        Frame prev = mLastFrame.mLastFrame;
                        for (ulong i = 0; i < back; i++)
                        {
                            if (prev == null)
                            {
                                break;
                            }
                            if (prev.mThreadID == mCurrentFrame.mThreadID)
                            {
                                prev.AddThreadFrame(mCurrentFrame);
                            }
                            prev = mLastFrame.mLastFrame;
                        }
                    }
                }
            }
        }