AdvancedPhotoCapture AdvancedPhotoCapture AdvancedPhotoCapture AdvancedPhotoCapture AdvancedPhotoCapture Class

Definition

Provides methods for capturing photos using system-provided computational photography techniques.

public : sealed class AdvancedPhotoCapture : IAdvancedPhotoCapture
struct winrt::Windows::Media::Capture::AdvancedPhotoCapture : IAdvancedPhotoCapture
public sealed class AdvancedPhotoCapture : IAdvancedPhotoCapture
Public NotInheritable Class AdvancedPhotoCapture Implements IAdvancedPhotoCapture
// This class does not provide a public constructor.
Attributes
Windows 10 requirements
Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)

Remarks

Get an instance of this class by calling MediaCapture.PrepareAdvancedPhotoCaptureAsync.

For how-to guidance for using AdvancedPhotoCapture, see High dynamic range (HDR) and low-light photo capture.

Note

Starting with Windows 10, version 1709, recording video and using AdvancedPhotoCapture concurrently is supported. This is not supported in previous versions. This change means that you can have a prepared LowLagMediaRecording and AdvancedPhotoCapture at the same time. You can start or stop video recording between calls to MediaCapture.PrepareAdvancedPhotoCaptureAsync and AdvancedPhotoCapture.FinishAsync. You can also call AdvancedPhotoCapture.CaptureAsync while video is recording. However, some AdvancedPhotoCapture scenarios, like capturing an HDR photo while recording video would cause some video frames to be altered by the HDR capture, resulting in a negative user experience. For this reason, the list of modes returned by the AdvancedPhotoControl.SupportedModes will be different while video is recording. You should check this value immediately after starting or stopping video recording to ensure that the desired mode is supported in the current video recording state.

Methods

CaptureAsync() CaptureAsync() CaptureAsync() CaptureAsync() CaptureAsync()

Asynchronously performs an advanced photo capture.

public : IAsyncOperation<AdvancedCapturedPhoto> CaptureAsync()
IAsyncOperation<AdvancedCapturedPhoto> CaptureAsync() const;
public IAsyncOperation<AdvancedCapturedPhoto> CaptureAsync()
Public Function CaptureAsync() As IAsyncOperation( Of AdvancedCapturedPhoto )
Windows.Media.Capture.AdvancedPhotoCapture.captureAsync().done( /* Your success and error handlers */ );
Returns

Remarks

MediaCapture.PrepareAdvancedPhotoCaptureAsync must be called before calling CaptureAsync.

Concurrently recording video and photo capture using AdvancedPhotoCapture is not supported.

See Also

CaptureAsync(Object) CaptureAsync(Object) CaptureAsync(Object) CaptureAsync(Object) CaptureAsync(Object)

Asynchronously performs an advanced photo capture passing the provided app-defined context object to the result of the operation.

public : IAsyncOperation<AdvancedCapturedPhoto> CaptureAsync(Platform::Object context)
IAsyncOperation<AdvancedCapturedPhoto> CaptureAsync(winrt::Windows::Foundation::IInspectable context) const;
public IAsyncOperation<AdvancedCapturedPhoto> CaptureAsync(Object context)
Public Function CaptureAsync(context As Object) As IAsyncOperation( Of AdvancedCapturedPhoto )
Windows.Media.Capture.AdvancedPhotoCapture.captureAsync(context).done( /* Your success and error handlers */ );
Parameters
context
Object Object Object

An app-defined context object that passes context information to the result of the operation.

Returns

Remarks

MediaCapture.PrepareAdvancedPhotoCaptureAsync must be called before calling CaptureAsync.

Concurrently recording video and photo capture using AdvancedPhotoCapture is not supported.

See Also

FinishAsync() FinishAsync() FinishAsync() FinishAsync() FinishAsync()

Asynchronously releases the AdvancedPhotoCapture object and resources used by the advanced photo capture operation.

public : IAsyncAction FinishAsync()
IAsyncAction FinishAsync() const;
public IAsyncAction FinishAsync()
Public Function FinishAsync() As IAsyncAction
Windows.Media.Capture.AdvancedPhotoCapture.finishAsync().done( /* Your success and error handlers */ );
Returns

An asynchronous action.

Events

AllPhotosCaptured AllPhotosCaptured AllPhotosCaptured AllPhotosCaptured AllPhotosCaptured

Occurs when all of the frames required for the advanced photo capture have been captured.

public : event TypedEventHandler AllPhotosCaptured<AdvancedPhotoCapture, object>
// Register
event_token AllPhotosCaptured(TypedEventHandler<AdvancedPhotoCapture, object> const& handler) const;

// Revoke with event_token
void AllPhotosCaptured(event_token const& cookie) const;

// Revoke with event_revoker
AllPhotosCaptured_revoker AllPhotosCaptured(auto_revoker_t, TypedEventHandler<AdvancedPhotoCapture, object> const& handler) const;
public event TypedEventHandler AllPhotosCaptured<AdvancedPhotoCapture, object>
Public Event TypedEventHandler AllPhotosCaptured( Of ( Of AdvancedPhotoCapture ), ( Of object ))
function onAllPhotosCaptured(eventArgs){/* Your code */}


advancedPhotoCapture.addEventListener("allPhotosCaptured", onAllPhotosCaptured);
advancedPhotoCapture.removeEventListener("allPhotosCaptured", onAllPhotosCaptured);

Remarks

An advanced photo capture operation may require that multiple frames be captured and processed to produce the resulting image. This event notifies you when the source frames have been captured, which allows you to initiate another advanced photo capture as soon as the capture device is available, instead of waiting for the call to CaptureAsync to complete, which is raised only after the image processing of the captured frames is finished.

OptionalReferencePhotoCaptured OptionalReferencePhotoCaptured OptionalReferencePhotoCaptured OptionalReferencePhotoCaptured OptionalReferencePhotoCaptured

Raised when a reference photo for the advanced photo operation has been captured, on devices that support this feature.

public : event TypedEventHandler OptionalReferencePhotoCaptured<AdvancedPhotoCapture, OptionalReferencePhotoCapturedEventArgs>
// Register
event_token OptionalReferencePhotoCaptured(TypedEventHandler<AdvancedPhotoCapture, OptionalReferencePhotoCapturedEventArgs> const& handler) const;

// Revoke with event_token
void OptionalReferencePhotoCaptured(event_token const& cookie) const;

// Revoke with event_revoker
OptionalReferencePhotoCaptured_revoker OptionalReferencePhotoCaptured(auto_revoker_t, TypedEventHandler<AdvancedPhotoCapture, OptionalReferencePhotoCapturedEventArgs> const& handler) const;
public event TypedEventHandler OptionalReferencePhotoCaptured<AdvancedPhotoCapture, OptionalReferencePhotoCapturedEventArgs>
Public Event TypedEventHandler OptionalReferencePhotoCaptured( Of ( Of AdvancedPhotoCapture ), ( Of OptionalReferencePhotoCapturedEventArgs ))
function onOptionalReferencePhotoCaptured(eventArgs){/* Your code */}


advancedPhotoCapture.addEventListener("optionalReferencePhotoCaptured", onOptionalReferencePhotoCaptured);
advancedPhotoCapture.removeEventListener("optionalReferencePhotoCaptured", onOptionalReferencePhotoCaptured);

Remarks

Some devices support returning a reference photo from the capture operation that can be consumed by the calling app before all image frames for the operation have been captured or processed. On devices that do not support returning a reference photo, this event is never raised.

See Also