Esempio n. 1
0
        public static IFrameStream OpenFile(string fileName, out AdvFileMetadataInfo fileMetadataInfo, out GeoLocationInfo geoLocation)
        {
            fileMetadataInfo = new AdvFileMetadataInfo();
            geoLocation      = new GeoLocationInfo();
            try
            {
                int version = TangraCore.ADV2GetFormatVersion(fileName);

                IFrameStream rv;
                if (version == 1)
                {
                    var adv1 = new AstroDigitalVideoStream(fileName, ref fileMetadataInfo, ref geoLocation);
                    if (adv1.IsStatusChannelOnly)
                    {
                        TangraContext.Current.CustomRenderer = new AavStatusChannelOnlyRenderer(adv1);
                        return(null);
                    }
                    rv = adv1;
                }
                else
                {
                    rv = AstroDigitalVideoStreamV2.OpenFile(fileName, out fileMetadataInfo, out geoLocation);
                }

                TangraContext.Current.RenderingEngine = fileMetadataInfo.Engine == "AAV" ? "AstroAnalogueVideo" : "AstroDigitalVideo";

                if (fileMetadataInfo.Engine == "AAV")
                {
                    UsageStats.Instance.ProcessedAavFiles++;
                }
                else
                {
                    UsageStats.Instance.ProcessedAdvFiles++;
                }
                UsageStats.Instance.Save();

                return(rv);
            }
            catch (ADVFormatException ex)
            {
                MessageBox.Show(ex.Message, "Error opening ADV/AAV file", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return(null);
        }
Esempio n. 2
0
        public void StepBackward(int secondsBackward)
        {
            if (m_VideoStream != null)
            {
                if (m_IsRunning)
                {
                    // No single frame movement or refresh when the video is 'playing'
                    return;
                }

                AstroDigitalVideoStream advStream = m_VideoStream as AstroDigitalVideoStream;
                if (advStream != null)
                {
                    AdvFrameInfo currStatusChannel = advStream.GetStatusChannel(CurrentDirectionAwareFrameIndex);
                    if (currStatusChannel.HasTimeStamp)
                    {
                        int targetFrame = m_CurrentFrameIndex - 1;

                        while (targetFrame >= m_VideoStream.FirstFrame)
                        {
                            AdvFrameInfo statusChannel = advStream.GetStatusChannel(targetFrame);
                            if (statusChannel.HasTimeStamp)
                            {
                                TimeSpan ts =
                                    new TimeSpan(currStatusChannel.MiddleExposureTimeStamp.Ticks - statusChannel.MiddleExposureTimeStamp.Ticks);
                                if (ts.TotalSeconds >= secondsBackward)
                                {
                                    m_CurrentFrameIndex = targetFrame;
                                    break;
                                }
                            }
                            else if (targetFrame == m_VideoStream.FirstFrame)
                            {
                                // We have reached the beginning of the video
                                m_CurrentFrameIndex = targetFrame;
                                break;
                            }
                            targetFrame--;
                        }
                    }
                    else if (advStream.FrameRate > 0)
                    {
                        m_CurrentFrameIndex -= (int)Math.Round(secondsBackward * advStream.FrameRate);
                    }
                    else
                    {
                        m_CurrentFrameIndex--;
                    }
                }
                else
                {
                    m_CurrentFrameIndex -= (int)Math.Round(secondsBackward * m_VideoStream.FrameRate);
                }

                if (m_CurrentFrameIndex < m_VideoStream.FirstFrame)
                {
                    m_CurrentFrameIndex = m_VideoStream.FirstFrame;
                }

                DisplayCurrentFrame(MovementType.Jump);
            }
        }
Esempio n. 3
0
        public static IFrameStream OpenFile(string fileName, out AdvFileMetadataInfo fileMetadataInfo, out GeoLocationInfo geoLocation)
        {
            fileMetadataInfo = new AdvFileMetadataInfo();
            geoLocation = new GeoLocationInfo();
            try
            {
                int version = TangraCore.ADV2GetFormatVersion(fileName);

                IFrameStream rv;
                if (version == 1)
                    rv = new AstroDigitalVideoStream(fileName, ref fileMetadataInfo, ref geoLocation);
                else
                    rv = AstroDigitalVideoStreamV2.OpenFile(fileName, out fileMetadataInfo, out geoLocation);

                TangraContext.Current.RenderingEngine = fileMetadataInfo.Engine == "AAV" ? "AstroAnalogueVideo" : "AstroDigitalVideo";

                if (fileMetadataInfo.Engine == "AAV")
                    UsageStats.Instance.ProcessedAavFiles++;
                else
                    UsageStats.Instance.ProcessedAdvFiles++;
                UsageStats.Instance.Save();

                return rv;
            }
            catch(ADVFormatException ex)
            {
                MessageBox.Show(ex.Message, "Error opening ADV/AAV file", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return null;
        }