Ejemplo n.º 1
0
        private void Finish(bool keepProcessedFrames)
        {
            mFinishTime = DateTime.Now;
            Duration    = mFinishTime - mStartTime;
            Compression = EncodedSize / (double)RawSize;
            int seconds = RawFrames.Count / VideoQualityController.AcceptFramesPerSecond;

            Kbps     = (EncodedSize / seconds) / 1024;
            Fidelity = CalculateFidelity(RawFrames, ProcessedFrames);

            const int blocksPerFrame = (VideoConstants.Height / VideoConstants.VideoBlockSize) * (VideoConstants.Width / VideoConstants.VideoBlockSize);
            float     totalBlocks    = RawFrames.Count * blocksPerFrame;

            BlocksAsDelta  = blocksAsDelta / totalBlocks;
            BlocksAsJpeg   = blocksAsJpeg / totalBlocks;
            BlocksNotSent  = (totalBlocks - (blocksAsDelta + blocksAsJpeg)) / totalBlocks;
            DeltaBlockSize = bytesAsDelta / (double)blocksAsDelta;
            JpegBlockSize  = bytesAsJpeg / (double)blocksAsJpeg;

            // Release references to potentially large objects we won't need anymore
            RawFrames  = null;
            VideoCodec = null;
            if (!keepProcessedFrames)
            {
                ProcessedFrames.Clear();
            }
            KeepProcessedFrames = keepProcessedFrames;
        }