public override LiveViewData GetLiveViewImage()
        {
            _timer.Stop();
            LiveViewData viewData = new LiveViewData();

            if (Monitor.TryEnter(Locker, 10))
            {
                try
                {
                    //DeviceReady();
                    viewData.HaveFocusData = false;
                    MTPDataResponse response = ExecuteReadDataEx(CONST_CMD_CANON_EOS_GetViewFinderData, 0x00100000);
                    ErrorCodes.GetException(response.ErrorCode);
                    if (response.Data == null)
                    {
                        _timer.Start();
                        return(null);
                    }
                    viewData.ImageDataPosition = 0;
                    viewData.ImageData         = response.Data;
                }
                catch (Exception e)
                {
                    Log.Error("Error get live view image ", e);
                }
                finally
                {
                    Monitor.Exit(Locker);
                }
            }
            _timer.Start();
            return(viewData);
        }
Example #2
0
        public void _liveViewTimer_Tick(object sender, EventArgs e)
        {
            LiveViewData liveViewData = null;

            try
            {
                liveViewData = DeviceManager.SelectedCameraDevice.GetLiveViewImage();
                Console.WriteLine(liveViewData);
            }
            catch (Exception)
            {
                return;
            }

            if (liveViewData == null || liveViewData.ImageData == null)
            {
                return;
            }
            try
            {
                var image = new MemoryStream(liveViewData.ImageData,
                                             liveViewData.ImageDataPosition,
                                             liveViewData.ImageData.Length -
                                             liveViewData.ImageDataPosition);
                GlobalSocket.Send(image);
            }
            catch (Exception)
            {
            }
        }
        protected override void GetAdditionalLiveViewData(LiveViewData viewData, byte[] result)
        {
            viewData.LiveViewImageWidth  = ToInt16(result, 8);
            viewData.LiveViewImageHeight = ToInt16(result, 10);

            viewData.ImageWidth  = ToInt16(result, 12);
            viewData.ImageHeight = ToInt16(result, 14);

            viewData.FocusFrameXSize = ToInt16(result, 24);
            viewData.FocusFrameYSize = ToInt16(result, 26);

            viewData.FocusX = ToInt16(result, 28);
            viewData.FocusY = ToInt16(result, 30);

            viewData.Focused          = result[48] != 1;
            viewData.MovieIsRecording = result[68] == 1;
            viewData.MovieTimeRemain  = ToDeciaml(result, 64);

            if (result[37] == 1)
            {
                viewData.Rotation = -90;
            }
            if (result[37] == 2)
            {
                viewData.Rotation = 90;
            }

            viewData.HaveLevelAngleData = true;
            viewData.LevelAngleRolling  = ToInt16(result, 52);
            viewData.PeakSoundL         = (int)(result[352] / 14.0 * 100);
            viewData.PeakSoundR         = (int)(result[353] / 14.0 * 100);
            viewData.SoundL             = (int)(result[354] / 14.0 * 100);
            viewData.SoundR             = (int)(result[355] / 14.0 * 100);
            viewData.HaveSoundData      = true;
        }
Example #4
0
        public override LiveViewData GetLiveViewImage()
        {
            LiveViewData viewData = new LiveViewData();

            viewData.HaveFocusData = true;

            const int headerSize = 128;

            var result = StillImageDevice.ExecuteReadData(CONST_CMD_GetLiveViewImage);

            if (result.ErrorCode == ErrorCodes.MTP_Not_LiveView)
            {
                _timer.Start();
                viewData.IsLiveViewRunning = false;
                viewData.ImageData         = null;
                return(viewData);
            }
            if (result.Data == null || result.Data.Length <= headerSize)
            {
                return(null);
            }
            int cbBytesRead = result.Data.Length;

            GetAdditionalLiveViewData(viewData, result.Data);

            MemoryStream copy = new MemoryStream(cbBytesRead - headerSize);

            copy.Write(result.Data, headerSize, cbBytesRead - headerSize);
            copy.Close();
            viewData.ImageData = copy.GetBuffer();

            return(viewData);
        }
Example #5
0
        override public LiveViewData GetLiveViewImage()
        {
            LiveViewData viewData = new LiveViewData();

            viewData.HaveFocusData = true;

            const int headerSize = 128;

            byte[] result = StillImageDevice.ExecuteReadData(CONST_CMD_GetLiveViewImage);
            if (result == null || result.Length <= headerSize)
            {
                return(null);
            }
            int cbBytesRead = result.Length;

            GetAditionalLIveViewData(viewData, result);

            MemoryStream copy = new MemoryStream((int)cbBytesRead - headerSize);

            copy.Write(result, headerSize, (int)cbBytesRead - headerSize);
            copy.Close();
            viewData.ImageData = copy.GetBuffer();

            return(viewData);
        }
        public override LiveViewData GetLiveViewImage()
        {
            LiveViewData viewData = new LiveViewData();

            if (Monitor.TryEnter(Locker, 1))
            {
                try
                {
                    //DeviceReady();
                    viewData.HaveFocusData       = false;
                    viewData.ImagePosition       = 0;
                    viewData.ImageData           = _liveViewImageData.ImageData;
                    viewData.ImageHeight         = 100;
                    viewData.ImageWidth          = 100;
                    viewData.LiveViewImageHeight = 100;
                    viewData.LiveViewImageWidth  = 100;
                    viewData.FocusX          = _liveViewImageData.ZommBounds.X;
                    viewData.FocusY          = _liveViewImageData.ZommBounds.Y;
                    viewData.FocusFrameXSize = _liveViewImageData.ZommBounds.Width;
                    viewData.FocusFrameYSize = _liveViewImageData.ZommBounds.Height;
                }
                catch (Exception e)
                {
                    //Log.Error("Error get live view image ", e);
                }
                finally
                {
                    Monitor.Exit(Locker);
                }
            }
            return(viewData);
        }
Example #7
0
        void _liveViewTimer_Tick(object sender, EventArgs e)
        {
            LiveViewData liveViewData = null;

            try
            {
                liveViewData = CameraDevice.GetLiveViewImage();
            }
            catch (Exception)
            {
                return;
            }

            if (liveViewData == null || liveViewData.ImageData == null)
            {
                return;
            }
            try
            {
                pictureBox1.Image = new Bitmap(new MemoryStream(liveViewData.ImageData,
                                                                liveViewData.ImagePosition,
                                                                liveViewData.ImageData.Length -
                                                                liveViewData.ImagePosition));
            }
            catch (Exception)
            {
            }
        }
Example #8
0
        protected override void GetAdditionalLiveViewData(LiveViewData viewData, byte[] result)
        {
            viewData.LiveViewImageWidth  = ToInt16(result, 8);
            viewData.LiveViewImageHeight = ToInt16(result, 10);

            viewData.ImageWidth  = ToInt16(result, 12);
            viewData.ImageHeight = ToInt16(result, 14);

            viewData.FocusFrameXSize = ToInt16(result, 16);
            viewData.FocusFrameYSize = ToInt16(result, 18);

            viewData.FocusX = ToInt16(result, 20);
            viewData.FocusY = ToInt16(result, 22);

            viewData.Focused          = result[40] != 1;
            viewData.MovieIsRecording = result[60] == 1;
            viewData.MovieTimeRemain  = ToDeciaml(result, 56);

            if (result[29] == 1)
            {
                viewData.Rotation = -90;
            }
            if (result[29] == 2)
            {
                viewData.Rotation = 90;
            }

            viewData.HaveLevelAngleData = true;
            viewData.LevelAngleRolling  = ToInt16(result, 44);
        }
Example #9
0
        public override LiveViewData GetLiveViewImage()
        {
            LiveViewData viewData = new LiveViewData();

            if (Monitor.TryEnter(Locker, 10))
            {
                try
                {
                    //DeviceReady();
                    viewData.HaveFocusData = true;

                    const int headerSize = 384;

                    byte[] result = StillImageDevice.ExecuteReadData(CONST_CMD_GetLiveViewImage);
                    if (result == null || result.Length <= headerSize)
                    {
                        return(null);
                    }
                    GetAditionalLIveViewData(viewData, result);
                    viewData.ImagePosition = headerSize;
                    viewData.ImageData     = result;
                }
                finally
                {
                    Monitor.Exit(Locker);
                }
            }
            return(viewData);
        }
Example #10
0
        /// <summary>
        /// Gets the live view.
        /// </summary>
        public void GetLiveView()
        {
            LiveViewData liveViewData = CameraDevice.GetLiveViewImage();

            if (liveViewData == null || liveViewData.ImageData == null)
            {
                return;
            }

            Image = new Bitmap(new MemoryStream(liveViewData.ImageData,
                                                liveViewData.ImageDataPosition,
                                                liveViewData.ImageData.Length -
                                                liveViewData.ImageDataPosition));
        }
Example #11
0
        protected override void GetAditionalLIveViewData(LiveViewData viewData, byte[] result)
        {
            viewData.LiveViewImageWidth  = ToInt16(result, 8);
            viewData.LiveViewImageHeight = ToInt16(result, 10);

            viewData.ImageWidth  = ToInt16(result, 12);
            viewData.ImageHeight = ToInt16(result, 14);

            viewData.FocusFrameXSize = ToInt16(result, 24);
            viewData.FocusFrameYSize = ToInt16(result, 26);

            viewData.FocusX = ToInt16(result, 28);
            viewData.FocusY = ToInt16(result, 30);

            viewData.Focused = result[48] != 1;
        }
Example #12
0
        void Get()
        {
            LiveViewData LiveViewData = null;

            try
            {
                LiveViewData = _cameraDevice.GetLiveViewImage();
                if (LiveViewData != null && LiveViewData.ImageData != null)
                {
                    Bitmap bitmap = new Bitmap(new MemoryStream(LiveViewData.ImageData,
                                                                LiveViewData.ImageDataPosition,
                                                                LiveViewData.ImageData.Length - LiveViewData.ImageDataPosition));
                    _image.Dispatcher.Invoke(() => _image.Source = BitmapUtils.BitmapToImageSource(bitmap));
                }
            }
            catch (Exception)
            {
            }
        }
        void Camera_LiveViewUpdate(object sender, EosLiveImageEventArgs e)
        {
            LiveViewData viewData = new LiveViewData();

            if (Monitor.TryEnter(Locker, 1))
            {
                try
                {
                    _liveViewImageData = e;
                }
                catch (Exception exception)
                {
                    Log.Error("Error get live view image event", exception);
                }
                finally
                {
                    Monitor.Exit(Locker);
                }
            }
        }
Example #14
0
        /// <summary>
        /// Gets the live view.
        /// </summary>
        public void GetLiveView()
        {
            LiveViewData liveViewData = CameraDevice.GetLiveViewImage();

            if (liveViewData == null || liveViewData.ImageData == null)
            {
                return;
            }

            var image = new BitmapImage();

            image.BeginInit();
            image.StreamSource = new MemoryStream(liveViewData.ImageData,
                                                  liveViewData.ImageDataPosition,
                                                  liveViewData.ImageData.Length -
                                                  liveViewData.ImageDataPosition);
            image.CacheOption = BitmapCacheOption.OnLoad;
            image.EndInit();
            image.Freeze();
            ImageView.Source = image;
        }
Example #15
0
        private void DrawFocusPoint(WriteableBitmap bitmap, LiveViewData liveViewData)
        {
            try
            {
                if (liveViewData == null)
                {
                    return;
                }
                double xt = bitmap.Width / liveViewData.ImageWidth;
                double yt = bitmap.Height / liveViewData.ImageHeight;

                bitmap.DrawRectangle((int)(liveViewData.FocusX * xt - (liveViewData.FocusFrameXSize * xt / 2)),
                                     (int)(liveViewData.FocusY * yt - (liveViewData.FocusFrameYSize * yt / 2)),
                                     (int)(liveViewData.FocusX * xt + (liveViewData.FocusFrameXSize * xt / 2)),
                                     (int)(liveViewData.FocusY * yt + (liveViewData.FocusFrameYSize * yt / 2)),
                                     liveViewData.HaveFocusData ? Colors.Green : Colors.Red);
            }
            catch (Exception exception)
            {
                Log.Error("Error draw helper lines", exception);
            }
        }
Example #16
0
        private void GetLiveView()
        {
            try
            {
                if (_isLiveViewPaused)
                {
                    return;
                }

                _liveViewData = CameraDevice.GetLiveViewImage();
                if (_liveViewData != null && _liveViewData.ImageData != null)
                {
                    using (
                        MemoryStream stream = new MemoryStream(_liveViewData.ImageData, _liveViewData.ImageDataPosition,
                                                               _liveViewData.ImageData.Length - _liveViewData.ImageDataPosition))
                    {
                        //Rotation = LiveViewData.Rotation;

                        //if (CameraDevice is CanonSDKBase)
                        //    Rotation = 90;

                        BitmapImage bi = new BitmapImage();
                        bi.BeginInit();
                        bi.CacheOption  = BitmapCacheOption.OnLoad;
                        bi.StreamSource = stream;
                        bi.EndInit();
                        //bi.Freeze();
                        var bitmap = BitmapFactory.ConvertToPbgra32Format(bi);

                        bitmap.Freeze();
                        BitmapSource = bitmap;
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Debug("Live view error ", ex);
            }
        }
Example #17
0
        protected override void GetAditionalLIveViewData(LiveViewData viewData, byte[] result)
        {
            viewData.LiveViewImageWidth = ToInt16(result, 8);
            viewData.LiveViewImageHeight = ToInt16(result, 10);

            viewData.ImageWidth = ToInt16(result, 12);
            viewData.ImageHeight = ToInt16(result, 14);

            viewData.FocusFrameXSize = ToInt16(result, 24);
            viewData.FocusFrameYSize = ToInt16(result, 26);

            viewData.FocusX = ToInt16(result, 28);
            viewData.FocusY = ToInt16(result, 30);

            viewData.Focused = result[48] != 1;
            viewData.MovieIsRecording = result[70] == 1;
            
            if (result[37] == 1)
                viewData.Rotation = -90;
            if (result[37] == 2)
                viewData.Rotation = 90;
        }
Example #18
0
        public override LiveViewData GetLiveViewImage()
        {
            LiveViewData viewData = new LiveViewData();

            if (Monitor.TryEnter(Locker, 10))
            {
                try
                {
                    //DeviceReady();
                    viewData.HaveFocusData = true;

                    const int headerSize = 384;

                    var result = StillImageDevice.ExecuteReadData(CONST_CMD_GetLiveViewImage);
                    if (result.ErrorCode == ErrorCodes.MTP_Not_LiveView)
                    {
                        _timer.Start();
                        viewData.IsLiveViewRunning = false;
                        viewData.ImageData         = null;
                        return(viewData);
                    }
                    if (result.Data == null || result.Data.Length <= headerSize)
                    {
                        return(null);
                    }
                    GetAdditionalLiveViewData(viewData, result.Data);
                    viewData.ImageDataPosition = headerSize;
                    viewData.ImageData         = result.Data;
                }
                finally
                {
                    Monitor.Exit(Locker);
                }
            }
            return(viewData);
        }
Example #19
0
        private void Instance_Message(object sender, MessageEventArgs e)
        {
            switch (e.Name)
            {
            case Messages.LiveViewChanged:
            {
                var param = e.Param as object[];
                if (param != null)
                {
                    _liveViewData = (LiveViewData)param[1];
                    var stream = e.Context.ImageStream;
                    stream.Seek(0, SeekOrigin.Begin);
                    BitmapImage bi = new BitmapImage();
                    bi.BeginInit();
                    bi.StreamSource  = stream;
                    bi.CreateOptions = BitmapCreateOptions.IgnoreColorProfile;
                    bi.CacheOption   = BitmapCacheOption.OnLoad;
                    bi.EndInit();
                    if (WorkflowManager.Instance.Context.CameraDevice.LiveViewImageZoomRatio?.Value == "All" && ShowFocusArea)
                    {
                        var writeableBitmap = BitmapFactory.ConvertToPbgra32Format(bi);
                        DrawFocusPoint(writeableBitmap, _liveViewData);
                        writeableBitmap.Freeze();
                        LiveBitmap = writeableBitmap;
                    }
                    else
                    {
                        bi.Freeze();
                        LiveBitmap = bi;
                    }
                }
            }
            break;

            case Messages.PhotoDownloaded:
            {
                RaisePropertyChanged(() => FileItems);
                FileItem item = e.Param as FileItem;
                if (item != null)
                {
                    FileItem = item;
                }
                RaisePropertyChanged(() => Bitmap);
                RaisePropertyChanged(() => PreviewTitle);
                if (FileItems.Count < 2)
                {
                    PreviewTabActive = true;
                }
            }
            break;

            case Messages.ThumbUpdated:
            case Messages.NextPhoto:
            case Messages.PrevPhoto:
            case Messages.DeletePhoto:
            case Messages.ClearPhotos:
            {
                RaisePropertyChanged(() => FileItem);
                RaisePropertyChanged(() => Bitmap);
                RaisePropertyChanged(() => PreviewTitle);
            }
            break;
            }
        }