示例#1
0
        public void RetrieveFrame(Frame frame)
        {
            Interlocked.Increment(ref _activeRetrieveThreads);

            try
            {
                string message = String.Format("Retrieving Frame (active threads: {0})", Thread.VolatileRead(ref _activeRetrieveThreads));
                Trace.WriteLine(message);

                IStreamingSopDataSource dataSource = (IStreamingSopDataSource)frame.ParentImageSop.DataSource;
                IStreamingSopFrameData  frameData  = dataSource.GetFrameData(frame.FrameNumber);

                frameData.RetrievePixelData();
            }
            catch (OutOfMemoryException)
            {
                Platform.Log(LogLevel.Error, "Out of memory trying to retrieve pixel data.");
            }
            catch (Exception e)
            {
                Platform.Log(LogLevel.Error, e, "Error retrieving frame pixel data.");
            }
            finally
            {
                Interlocked.Decrement(ref _activeRetrieveThreads);
            }
        }
        public bool CanDecompressFrame(Frame frame)
        {
            if (!(frame.ParentImageSop.DataSource is StreamingSopDataSource))
            {
                return(false);
            }

            StreamingSopDataSource dataSource = (StreamingSopDataSource)frame.ParentImageSop.DataSource;
            IStreamingSopFrameData frameData  = dataSource.GetFrameData(frame.FrameNumber);

            return(frameData.PixelDataRetrieved);
        }
        public bool CanRetrieveFrame(Frame frame)
        {
            var streamingFrame = frame.ParentImageSop.DataSource as StreamingSopDataSource;

            if (streamingFrame == null)
            {
                return(false);
            }

            IStreamingSopFrameData frameData = streamingFrame.GetFrameData(frame.FrameNumber);

            return(!frameData.PixelDataRetrieved);
        }
        private void RetrieveFrame(IFrameReference frameReference)
        {
            try
            {
                Frame frame = frameReference.Frame;
                IStreamingSopFrameData frameData =
                    (IStreamingSopFrameData)frame.ParentImageSop.DataSource.GetFrameData(frame.FrameNumber);
                frameData.RetrievePixelData();

                _framesToDecompress.Add(frameReference);
                _synchronizationContext.Post(OnRetrievedFrame, frameData.LastRetrievePerformanceInfo);
            }
            catch (Exception e)
            {
                frameReference.Dispose();
                Platform.Log(LogLevel.Error, e);
            }
        }
        public void RetrieveFrame(Frame frame)
        {
            Interlocked.Increment(ref _activeRetrieveThreads);

            try
            {
                IStreamingSopDataSource dataSource = (IStreamingSopDataSource)frame.ParentImageSop.DataSource;
                IStreamingSopFrameData  frameData  = dataSource.GetFrameData(frame.FrameNumber);

                frameData.RetrievePixelData();
            }
            catch (OutOfMemoryException)
            {
                Platform.Log(LogLevel.Error, "Out of memory trying to retrieve pixel data.");
            }
            catch (Exception e)
            {
                Platform.Log(LogLevel.Error, e, "Error retrieving frame pixel data.");
            }
            finally
            {
                Interlocked.Decrement(ref _activeRetrieveThreads);
            }
        }