private static void DestroyStream(ref IntPtr stream)
 {
     if (stream != IntPtr.Zero)
     {
         Util.Assert(Edsdk.EdsRelease(stream), "Failed to release stream");
         stream = IntPtr.Zero;
     }
 }
 protected internal override void DisposeUnmanaged()
 {
     if (_handle != IntPtr.Zero)
     {
         Edsdk.EdsRelease(_handle);
     }
     base.DisposeUnmanaged();
 }
 protected internal override void DisposeUnmanaged()
 {
     if (_cameraList != IntPtr.Zero)
     {
         Edsdk.EdsRelease(_cameraList);
     }
     base.DisposeUnmanaged();
 }
        private bool DownloadEvf()
        {
            // Do not download if pauseUpdate requested
            if (_pauseLiveViewRequested)
            {
                return(true);
            }

            if ((this.LiveViewDevice & EosLiveViewDevice.Host) == EosLiveViewDevice.None || _cancelLiveViewRequested)
            {
                return(false);
            }

            lock (_locker)
            {
                var memoryStream = IntPtr.Zero;
                try
                {
                    Util.Assert(Edsdk.EdsCreateMemoryStream(0, out memoryStream), "Failed to create memory stream.");
                    using (var image = EosLiveImage.CreateFromStream(memoryStream))
                    {
                        Util.Assert(Edsdk.EdsDownloadEvfImage(this.Handle, image.Handle),
                                    "Failed to download evf image.");

                        var converter = new EosConverter();
                        this.OnLiveViewUpdate(
                            new EosLiveImageEventArgs(converter.ConvertImageStreamToBytes(memoryStream))
                        {
                            Zoom          = image.Zoom,
                            ZommBounds    = image.ZoomBounds,
                            ImagePosition = image.ImagePosition,
                            ImageSize     = image.Size
                                            //Histogram = image.Histogram,
                        });
                    }
                }
                catch (EosException eosEx)
                {
                    //if (eosEx.EosErrorCode != EosErrorCode.DeviceBusy && eosEx.EosErrorCode != EosErrorCode.ObjectNotReady)
                    //    throw;
                }
                finally
                {
                    if (memoryStream != IntPtr.Zero)
                    {
                        Edsdk.EdsRelease(memoryStream);
                    }
                }
            }
            return(true);
        }
        public bool DownloadEvfInternal()
        {
            var memoryStream = IntPtr.Zero;

            try
            {
                Edsdk.EdsCreateMemoryStream(0, out memoryStream);
                using (var image = EosLiveImage.CreateFromStream(memoryStream))
                {
                    Edsdk.EdsDownloadEvfImage(this.Handle, image.Handle);

                    var converter = new EosConverter();
                    this.OnLiveViewUpdate(
                        new EosLiveImageEventArgs(converter.ConvertImageStreamToBytes(memoryStream))
                    {
                        Zoom          = image.Zoom,
                        ZommBounds    = image.ZoomBounds,
                        ImagePosition = image.ImagePosition,
                        ImageSize     = image.Size,

                        //Histogram = image.Histogram,
                    });
                }
            }
            catch (EosException eosEx)
            {
                //if (eosEx.EosErrorCode != EosErrorCode.DeviceBusy && eosEx.EosErrorCode != EosErrorCode.ObjectNotReady)
                //    throw;
            }
            finally
            {
                if (memoryStream != IntPtr.Zero)
                {
                    Edsdk.EdsRelease(memoryStream);
                }
            }
            return(true);
        }
Beispiel #6
0
        private uint HandleObjectEvent(uint objectEvent, IntPtr sender, IntPtr context)
        {
            try
            {
                EosFramework.LogInstance.Debug("HandleObjectEvent fired: " + objectEvent);
                Console.WriteLine("Canon event {0}", objectEvent);
                switch (objectEvent)
                {
                case Edsdk.ObjectEvent_VolumeInfoChanged:
                    this.OnObjectEventVolumeInfoChanged(sender);
                    break;

                case Edsdk.ObjectEvent_VolumeUpdateItems:
                    this.OnObjectEventVolumeUpdateItems(sender, context);
                    break;

                case Edsdk.ObjectEvent_FolderUpdateItems:
                    this.OnObjectEventFolderUpdateItems(sender, context);
                    break;

                case Edsdk.ObjectEvent_DirItemCreated:
                    this.OnObjectEventDirItemCreated(sender, context);
                    break;

                case Edsdk.ObjectEvent_DirItemRemoved:
                    this.OnObjectEventDirItemRemoved(sender, context);
                    break;

                case Edsdk.ObjectEvent_DirItemInfoChanged:
                    this.OnObjectEventDirItemInfoChanged(sender, context);
                    break;

                case Edsdk.ObjectEvent_DirItemContentChanged:
                    this.OnObjectEventDirItemContentChanged(sender, context);
                    break;

                case Edsdk.ObjectEvent_DirItemRequestTransfer:
                    this.OnObjectEventDirItemRequestTransfer(sender);
                    break;

                case Edsdk.ObjectEvent_DirItemRequestTransferDT:
                    this.OnObjectEventDirItemRequestTransferDt(sender, context);
                    break;

                case Edsdk.ObjectEvent_DirItemCancelTransferDT:
                    this.OnObjectEventDirItemCancelTransferDt(sender, context);
                    break;

                case Edsdk.ObjectEvent_VolumeAdded:
                    this.OnObjectEventVolumeAdded(sender, context);
                    break;

                case Edsdk.ObjectEvent_VolumeRemoved:
                    this.OnObjectEventVolumeRemoved(sender, context);
                    break;
                }
            }
            catch (Exception ex)
            {
                EosFramework.LogInstance.Error("Handing HandleObjectEvent: {0}", ex);
            }
            finally
            {
                Edsdk.EdsRelease(sender);
            }

            return(Edsdk.EDS_ERR_OK);
        }