iOS Developer Library

Developer

AVFoundation Framework Reference AVCaptureConnection Class Reference

Options
Deployment Target:

On This Page
Language:

AVCaptureConnection

An AVCaptureConnection object represents a connection between capture input and capture output objects associated with a capture session.

Capture inputs (instances of AVCaptureInput) have one or more input ports (instances of AVCaptureInputPort). Capture outputs (instances of AVCaptureOutput) can accept data from one or more sources (for example, an AVCaptureMovieFileOutput object accepts both video and audio data).

You can only add an AVCaptureConnection instance to a session using addConnection: if canAddConnection: returns YEStrue. When using addInput: or addOutput:, connections are formed automatically between all compatible inputs and outputs. You only need to add connections manually when adding an input or output with no connections. You can also use connections to enable or disable the flow of data from a given input or to a given output.

Inheritance


Conforms To


Import Statement


Swift

import AVFoundation

Objective-C

@import AVFoundation;

Availability


Available in iOS 4.0 and later.
  • enabled enabled Property

    Indicates whether the connection is enabled.

    Declaration

    Swift

    var enabled: Bool

    Objective-C

    @property(nonatomic, getter=isEnabled) BOOL enabled

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • active active Property

    Indicates whether the connection is active. (read-only)

    Declaration

    Swift

    var active: Bool { get }

    Objective-C

    @property(nonatomic, readonly, getter=isActive) BOOL active

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • The connection’s input ports. (read-only)

    Declaration

    Swift

    var inputPorts: [AnyObject]! { get }

    Objective-C

    @property(nonatomic, readonly) NSArray *inputPorts

    Discussion

    Input ports are instances of AVCaptureInputPort.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • output output Property

    The connection’s output port. (read-only)

    Declaration

    Swift

    var output: AVCaptureOutput! { get }

    Objective-C

    @property(nonatomic, readonly) AVCaptureOutput *output

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • The video preview layer associated with the connection. (read-only)

    Declaration

    Swift

    var videoPreviewLayer: AVCaptureVideoPreviewLayer! { get }

    Objective-C

    @property(nonatomic, readonly) AVCaptureVideoPreviewLayer *videoPreviewLayer

    Discussion

    This property is the set if you initialized the connection using initWithInputPort:videoPreviewLayer: or connectionWithInputPort:videoPreviewLayer:.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 6.0 and later.

  • An array of AVCaptureAudioChannel objects. (read-only)

    Declaration

    Swift

    var audioChannels: [AnyObject]! { get }

    Objective-C

    @property(nonatomic, readonly) NSArray *audioChannels

    Discussion

    This property is only applicable to connections involving audio.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • The orientation of the video.

    Declaration

    Swift

    var videoOrientation: AVCaptureVideoOrientation

    Objective-C

    @property(nonatomic) AVCaptureVideoOrientation videoOrientation

    Discussion

    This property is only applicable to connections involving video.

    If the value of supportsVideoOrientation is YEStrue, you can set videoOrientation to rotate the video buffers being consumed by the connection’s output. Setting videoOrientation does not necessarily result in a physical rotation of video buffers. For example, a video connection to an AVCaptureMovieFileOutput object handles orientation using a Quicktime track matrix; using an AVCaptureStillImageOutput object, orientation is handled using Exif tags.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • A Boolean value that indicates whether the connection supports changing the orientation of the video. (read-only)

    Declaration

    Swift

    var supportsVideoOrientation: Bool { get }

    Objective-C

    @property(nonatomic, readonly, getter=isVideoOrientationSupported) BOOL supportsVideoOrientation

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

    See Also

    videoOrientation

  • The minimum time interval between which the receiver should output consecutive video frames.

    Declaration

    Objective-C

    @property(nonatomic) CMTime videoMinFrameDuration

    Discussion

    The value of this property specifies the minimum duration of each video frame output by the connection, placing a lower bound on the amount of time that should separate consecutive frames. The value is equivalent to the reciprocal of the maximum frame rate.

    A value of kCMTimeZero or kCMTimeInvalid indicates an unlimited maximum frame rate.

    The default value is kCMTimeInvalid.

    You can only set this value if supportsVideoMinFrameDuration is YEStrue.

    Import Statement

    Objective-C

    @import AVFoundation;

    Availability

    Available in iOS 5.0 and later.

    Deprecated in iOS 7.0.

  • A Boolean value that indicates whether the connection supports setting the videoMinFrameDuration property. (read-only)

    Declaration

    Objective-C

    @property(nonatomic, readonly, getter=isVideoMinFrameDurationSupported) BOOL supportsVideoMinFrameDuration

    Discussion

    This property is only applicable to connections involving video.

    Import Statement

    Objective-C

    @import AVFoundation;

    Availability

    Available in iOS 5.0 and later.

    Deprecated in iOS 7.0.

  • The maximum time interval between which the receiver should output consecutive video frames.

    Declaration

    Objective-C

    @property(nonatomic) CMTime videoMaxFrameDuration

    Discussion

    The value of this property specifies the maximum duration of each video frame output by the connection, placing an upper bound on the amount of time that should separate consecutive frames. The value is equivalent to the reciprocal of the minimum frame rate.

    A value of kCMTimeZero or kCMTimeInvalid indicates an unlimited minimum frame rate.

    The default value is kCMTimeInvalid.

    You can only set this value if supportsVideoMaxFrameDuration is YEStrue.

    Import Statement

    Objective-C

    @import AVFoundation;

    Availability

    Available in iOS 5.0 and later.

    Deprecated in iOS 7.0.

  • A Boolean value that indicates whether the connection supports setting the videoMaxFrameDuration property. (read-only)

    Declaration

    Objective-C

    @property(nonatomic, readonly, getter=isVideoMaxFrameDurationSupported) BOOL supportsVideoMaxFrameDuration

    Discussion

    This property is only applicable to connections involving video.

    Import Statement

    Objective-C

    @import AVFoundation;

    Availability

    Available in iOS 5.0 and later.

    Deprecated in iOS 7.0.

  • The current video scale and crop factor in use by the receiver.

    Declaration

    Swift

    var videoScaleAndCropFactor: CGFloat

    Objective-C

    @property(nonatomic) CGFloat videoScaleAndCropFactor

    Discussion

    This property is only applicable to connections involving video.

    You can set this property to a value in the range of 1.0 to the value of videoMaxScaleAndCropFactor. At a factor of 1.0, the image is its original size. At a factor greater than 1.0, the image is scaled by the factor and center-cropped to its original dimensions.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 5.0 and later.

  • The maximum video scale and crop factor by the connection. (read-only)

    Declaration

    Swift

    var videoMaxScaleAndCropFactor: CGFloat { get }

    Objective-C

    @property(nonatomic, readonly) CGFloat videoMaxScaleAndCropFactor

    Discussion

    The value specifies the maximum value that you can use when setting the videoScaleAndCropFactor property.

    This property is only applicable to connections involving video.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 5.0 and later.

  • A Boolean value that indicates whether the value of videoMirrored can change based on configuration of the session.

    Declaration

    Swift

    var automaticallyAdjustsVideoMirroring: Bool

    Objective-C

    @property(nonatomic) BOOL automaticallyAdjustsVideoMirroring

    Discussion

    For some session configurations, video data flowing through the connection will be mirrored by default. When the value of this property is YEStrue, the value of videoMirrored may change depending on the configuration of the session, for example after switching to a different capture device input.

    The default value is YEStrue.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 6.0 and later.

  • A Boolean value that indicates whether the connection supports video mirroring. (read-only)

    Declaration

    Swift

    var supportsVideoMirroring: Bool { get }

    Objective-C

    @property(nonatomic, readonly, getter=isVideoMirroringSupported) BOOL supportsVideoMirroring

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • A Boolean value that indicates whether the video flowing through the connection should be mirrored about its vertical axis..

    Declaration

    Swift

    var videoMirrored: Bool

    Objective-C

    @property(nonatomic, getter=isVideoMirrored) BOOL videoMirrored

    Discussion

    This property is only applicable to connections involving video.

    if the value of supportsVideoMirroring is YEStrue, you can set videoMirrored to YEStrue to flip the video about its vertical axis and produce a mirror-image effect.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • A Boolean value that indicates whether the system should enable video stabilization when it is available.

    Declaration

    Swift

    var enablesVideoStabilizationWhenAvailable: Bool

    Objective-C

    @property(nonatomic) BOOL enablesVideoStabilizationWhenAvailable

    Discussion

    The default value of this property is NOfalse. If the supportsVideoStabilization property contains the value YEStrue, you can change the value of this property to YEStrue to enable video stabilization for the connection.

    You can only enable video stabilization for connections that operate on video. Even so, not all source formats and video resolutions are supported. Enabling video stabilization may also introduce additional latency into the video capture pipeline. To detect when video stabilization is in use, use the videoStabilizationEnabled property.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 6.0 and later.

    Deprecated in iOS 8.0.

  • A Boolean value that indicates whether this connection supports video stabilization. (read-only)

    Declaration

    Swift

    var supportsVideoStabilization: Bool { get }

    Objective-C

    @property(nonatomic, readonly, getter=isVideoStabilizationSupported) BOOL supportsVideoStabilization

    Discussion

    Video stabilization is supported only for video connection types. And even for video connections, it might not be available at all resolutions.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 6.0 and later.

  • A Boolean value that indicates whether video stabilization is active for the connection. (read-only)

    Declaration

    Swift

    var videoStabilizationEnabled: Bool { get }

    Objective-C

    @property(nonatomic, readonly, getter=isVideoStabilizationEnabled) BOOL videoStabilizationEnabled

    Discussion

    If video stabilization is supported for the current connection type, and you enable it using the enablesVideoStabilizationWhenAvailable property, this property reports when stabilization is actively in use for the connection.

    You can monitor this property using key-value observing if you want to detect when video stabilization is being applied to the video data.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 6.0 and later.

    Deprecated in iOS 8.0.

  • Constants indicating video orientation.

    Declaration

    Swift

    enum AVCaptureVideoOrientation : Int { case Portrait case PortraitUpsideDown case LandscapeRight case LandscapeLeft }

    Objective-C

    enum { AVCaptureVideoOrientationPortrait = 1, AVCaptureVideoOrientationPortraitUpsideDown = 2, AVCaptureVideoOrientationLandscapeRight = 3, AVCaptureVideoOrientationLandscapeLeft = 4, }; typedef NSInteger AVCaptureVideoOrientation;

    Constants

    • Portrait

      AVCaptureVideoOrientationPortrait

      Indicates that video should be oriented vertically, top at the top.

      Available in iOS 4.0 and later.

    • PortraitUpsideDown

      AVCaptureVideoOrientationPortraitUpsideDown

      Indicates that video should be oriented vertically, top at the bottom.

      Available in iOS 4.0 and later.

    • LandscapeRight

      AVCaptureVideoOrientationLandscapeRight

      Indicates that video should be oriented horizontally, top on the left.

      Available in iOS 4.0 and later.

    • LandscapeLeft

      AVCaptureVideoOrientationLandscapeLeft

      Indicates that video should be oriented horizontally, top on the right.

      Available in iOS 4.0 and later.

    Discussion

    You use these constants in conjunction with an AVCaptureVideoPreviewLayer object; see videoOrientation.

    Import Statement

    Objective-C

    @import AVFoundation;

    Swift

    import AVFoundation

    Availability

    Available in iOS 4.0 and later.

  • Constants indicating video field mode, for use with the videoFieldMode property.

    Declaration

    Objective-C

    enum { AVVideoFieldModeBoth = 0, AVVideoFieldModeTopOnly = 1, AVVideoFieldModeBottomOnly = 2, AVVideoFieldModeDeinterlace = 3, }; typedef NSInteger AVVideoFieldMode;

    Constants

    • AVVideoFieldModeBoth

      AVVideoFieldModeBoth

      Indicates that both top and bottom video fields in interlaced content should be passed through.

      Available in iOS 6.0 through iOS 6.1.

    • AVVideoFieldModeTopOnly

      AVVideoFieldModeTopOnly

      Indicates that only the top video field in interlaced content should be passed through.

      Available in iOS 6.0 through iOS 6.1.

    • AVVideoFieldModeBottomOnly

      AVVideoFieldModeBottomOnly

      Indicates that the bottom video field only in interlaced content should be passed through.

      Available in iOS 6.0 through iOS 6.1.

    • AVVideoFieldModeDeinterlace

      AVVideoFieldModeDeinterlace

      Indicates that top and bottom video fields in interlaced content should be deinterlaced.

      Available in iOS 6.0 through iOS 6.1.

    Import Statement

    Objective-C

    @import AVFoundation;

    Availability

    Available in iOS 6.0 and later.