// AForge Direct Show Library
// AForge.NET framework
// http://www.aforgenet.com/framework/
//
// Copyright © AForge.NET, 2009-2013
// contacts@aforgenet.com
//
namespace AForge.Video.DirectShow.Internals
{
using System;
using System.Runtime.InteropServices;
///
/// The IAMCameraControl interface controls camera settings such as zoom, pan, aperture adjustment,
/// or shutter speed. To obtain this interface, query the filter that controls the camera.
///
[ComImport,
Guid( "C6E13370-30AC-11d0-A18C-00A0C9118956" ),
InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
internal interface IAMCameraControl
{
///
/// Gets the range and default value of a specified camera property.
///
///
/// Specifies the property to query.
/// Receives the minimum value of the property.
/// Receives the maximum value of the property.
/// Receives the step size for the property.
/// Receives the default value of the property.
/// Receives a member of the CameraControlFlags enumeration, indicating whether the property is controlled automatically or manually.
///
/// Return's HRESULT error code.
///
[PreserveSig]
int GetRange(
[In] CameraControlProperty Property,
[Out] out int pMin,
[Out] out int pMax,
[Out] out int pSteppingDelta,
[Out] out int pDefault,
[Out] out CameraControlFlags pCapsFlags
);
///
/// Sets a specified property on the camera.
///
///
/// Specifies the property to set.
/// Specifies the new value of the property.
/// Specifies the desired control setting, as a member of the CameraControlFlags enumeration.
///
/// Return's HRESULT error code.
///
[PreserveSig]
int Set(
[In] CameraControlProperty Property,
[In] int lValue,
[In] CameraControlFlags Flags
);
///
/// Gets the current setting of a camera property.
///
///
/// Specifies the property to retrieve.
/// Receives the value of the property.
/// Receives a member of the CameraControlFlags enumeration.
/// The returned value indicates whether the setting is controlled manually or automatically.
///
/// Return's HRESULT error code.
///
[PreserveSig]
int Get(
[In] CameraControlProperty Property,
[Out] out int lValue,
[Out] out CameraControlFlags Flags
);
}
}