Ejemplo n.º 1
0
        public bool DecompressFrame(BTimelineSampleCodec decomp, ref BRetiredProfileSample[] decodedSamplesBuffer)
        {
            BProfileSection[] sections = mSections;

            if (mCompressedFrame == null)
            {
                return(false);
            }
            ICoderBuffer buffer = mCompressedFrame.GetBuffer();

            decomp.resetModel();
            buffer.setPos(0);
            BitPacker             bitPacker = new BitPacker(buffer);
            bool                  success   = bitPacker.decodeStart();
            BRetiredProfileSample decodedSample;
            int i;

            try
            {
                for (i = 0; i < mNumSamples; i++)
                {
                    decodedSample = decodedSamplesBuffer[i];
                    success       = decomp.decodeSample(bitPacker, ref decodedSample, sections);
                    if (success == false)
                    {
                        ErrorHandler.Error(String.Format("Error decompressing sample {0} from frame# {1}", i, this.mFrameNumber));
                        //     return false;
                    }
                    ProcessSample(decodedSample, i);
                }
                mDutyCycle.BuildDutyCycle(ref decodedSamplesBuffer, mNumSamples, false);
                mDutyCycle.mStartTime = mStartTime;

                if (this.mbHasGPUSamples == true)
                {
                    mGpuDutyCycle.BuildDutyCycle(ref decodedSamplesBuffer, mNumSamples, true);
                    mGpuDutyCycle.mStartTime = mStartTime;
                }
                mSamples = decodedSamplesBuffer;
            }
            catch (System.Exception ex)
            {
                ErrorHandler.Error(ex.ToString());
                return(false);
            }
            return(true);
        }