CBLCameraLiveViewFrame
Objective-C
@protocol CBLCameraLiveViewFrame <NSObject, NSCopying>
Swift
protocol LiveViewFrame : NSCopying, NSObjectProtocol
Represents a single frame of a streaming live view image, along with any associated metadata.
-
Returns the date and time at which this frame was generated.
Declaration
Objective-C
@property (nonatomic, copy, readonly, nonnull) NSDate *dateProduced;
Swift
var dateProduced: Date { get }
-
Returns an array of numbers representing the brigtness plane of the image’s histogram, or
nil
if not available.Declaration
Objective-C
@property (nonatomic, copy, readonly, nullable) NSArray *brightnessHistogramPlane;
Swift
var brightnessHistogramPlane: [Any]? { get }
-
Returns an array of numbers representing the red plane of the image’s histogram, or
nil
if not available.Declaration
Objective-C
@property (nonatomic, copy, readonly, nullable) NSArray *redHistogramPlane;
Swift
var redHistogramPlane: [Any]? { get }
-
Returns an array of numbers representing the green plane of the image’s histogram, or
nil
if not available.Declaration
Objective-C
@property (nonatomic, copy, readonly, nullable) NSArray *greenHistogramPlane;
Swift
var greenHistogramPlane: [Any]? { get }
-
Returns an array of numbers representing the blue plane of the image’s histogram, or
nil
if not available.Declaration
Objective-C
@property (nonatomic, copy, readonly, nullable) NSArray *blueHistogramPlane;
Swift
var blueHistogramPlane: [Any]? { get }
-
Returns the logical orientation of the frame.
Declaration
Objective-C
@property (nonatomic, readonly) CBLCameraLiveViewFrameOrientation orientation;
Swift
var orientation: LiveViewFrameOrientation { get }
-
Returns the angle as detected by the camera’s gyros, if available. 0.0 is perfectly level in the “normal” landscape orientation. Range is 0-359.9°.
Declaration
Objective-C
@property (nonatomic, readonly) CGFloat rollAngle;
Swift
var rollAngle: CGFloat { get }
-
Returns the raw image data for the frame. See the
rawPixelFormat
andrawPixelFormatDescription
properties for detailed information on the pixel format.It may be necessary to crop this image to avoid black bars. See
rawPixelCropRect
. It may be neccessary to resize this image to avoid distortion. SeenaturalImageSize
.Note
While the pixel format is usually stable once a live view stream starts, some cameras can change pixel formats mid-stream. It’s important to be able to handle this if you’re working directly with the various rawPixel… properties.Declaration
Objective-C
@property (nonatomic, strong, readonly, nonnull) NSData *rawPixelData;
Swift
var rawPixelData: Data { get }
-
Returns the broad pixel format of the data in the
rawPixelData
property. If the value is a raw pixel buffer, see therawPixelFormatDescription
for additional details.Note
While this is usually stable once a live view stream starts, some cameras can change pixel formats mid-stream. It’s important to be able to handle this if you’re working directly with the various rawPixel… properties.Declaration
Objective-C
@property (nonatomic, readonly) CBLCameraLiveViewFramePixelFormat rawPixelFormat;
Swift
var rawPixelFormat: LiveViewFramePixelFormat { get }
-
Returns the detailed pixel format of the data in the
rawPixelData
property.Declaration
Objective-C
@property (nonatomic, readonly, nonnull) CMFormatDescriptionRef rawPixelFormatDescription;
Swift
var rawPixelFormatDescription: CMFormatDescription { get }
-
Returns the size of the image contained in the
rawPixelData
property, in pixels.Declaration
Objective-C
@property (nonatomic, readonly) CGSize rawPixelSize;
Swift
var rawPixelSize: CGSize { get }
-
Returns the rectangle with which to crop the image contained in
rawPixelData
to avoid black bars. It may also be neccessary to resize the image after cropping at the render site to avoid distortion. SeenaturalImageSize
for details.Declaration
Objective-C
@property (nonatomic, readonly) CGRect rawPixelCropRect;
Swift
var rawPixelCropRect: CGRect { get }
-
Returns an NSImage or UIImage for this live view frame. Any required pixel format conversion and cropping will be applied for you. Due to this, the pixel size of this image may be different to the value of
rawPixelSize
. It may be neccessary to resize this image at the render site to avoid distortion. SeenaturalImageSize
for details.Declaration
Objective-C
@property (nonatomic, strong, readonly, nullable) UIImage *image;
Swift
var image: UIImage? { get }
-
Returns the live view frame’s “natural” image size - i.e., the size at which it should be rendered to appear correctly. Usually, this is the same as the
rawPixelCropRect
property’s size value (and theimage
property’s size value), but in some cases cameras can deliver distorted images due to factors such as (for e.g.) line skipping.If this value is different to the aforementioned size values, the image needs to be resized by the client (i.e., you) in order to render correctly to the user.
Due to the performance implications of this operation, it is highly recommended that this is done at the UI level so it can be performed by the device’s GPU. An example of this would be setting a view’s aspect ratio based on this value, then having it stretch its contents to fit.
Declaration
Objective-C
@property (nonatomic, readonly) CGSize naturalImageSize;
Swift
var naturalImageSize: CGSize { get }
-
Returns
YES
if the frame’snaturalImageSize
value is different to the size of the image delivered by the camera (including any crop rect), otherwiseNO
.If this value is
YES
, the frame’s image may need to be resized to not appear distorted. SeenaturalImageSize
for details.Declaration
Objective-C
@property (nonatomic, readonly) BOOL requiresImageResizeToAvoidDistortion;
Swift
var requiresImageResizeToAvoidDistortion: Bool { get }
-
Returns the aspect in which the live view coordinate system is mapped. All values related to focus and zoom geometry returned by this class are relative to this property.
Declaration
Objective-C
@property (nonatomic, readonly) CGSize aspect;
Swift
var aspect: CGSize { get }
-
Returns the areas defining the frame’s focusing rectangles, or an empty array if no focusing rectangles are available.
Declaration
Objective-C
@property (nonatomic, copy, readonly, nullable) NSArray<id<CBLCameraLiveViewAFArea>> *afAreas;
Swift
var afAreas: [any LiveViewAFArea]? { get }
-
Returns the rect defining the zoom preview rectangle (that is, a preview of the part of the image that will be seen if live view is zoomed in), or
CGRectZero
if this isn’t available.Declaration
Objective-C
@property (nonatomic, readonly) CGRect zoomPreviewRect;
Swift
var zoomPreviewRect: CGRect { get }
-
Returns the smallest crop size supported by the live view stream, or
CGRectZero
if not available.Declaration
Objective-C
@property (nonatomic, readonly) CGSize minimumCropSize;
Swift
var minimumCropSize: CGSize { get }
-
Defines rect of this frame’s image relative to the aspect. When zoomed out, this will typically be the a rectangle the same size as the frame’s aspect with a zero origin. When zoomed in, this defines a subrect inside that aspect that defines where the zoomed-in image is compared to the whole frame.
Declaration
Objective-C
@property (nonatomic, readonly) CGRect imageFrameInAspect;
Swift
var imageFrameInAspect: CGRect { get }
-
Returns
YES
if the live view frame is “zoomed in” (that is, theimageFrameInAspect
property is smaller thanaspect
.Declaration
Objective-C
@property (nonatomic, readonly) BOOL isZoomedIn;
Swift
var isZoomedIn: Bool { get }
-
Translates the given rect inside the receiver’s aspect to a rect inside the target container. Useful for translating live view rects into views, for example.
Declaration
Objective-C
- (CGRect)translateSubRectOfAspect:(CGRect)liveViewRect toSubRectOfRect:(CGRect)targetContainer;
Swift
func translateSubRectOfAspect(_ liveViewRect: CGRect, toSubRectOf targetContainer: CGRect) -> CGRect
Parameters
liveViewRect
The rect inside the receiver’s aspect.
targetContainer
The rect defining the bounds of the target container.
Return Value
The rect representing
liveViewRect
insidetargetContainer
. -
Translates the given point inside the receiver’s aspect to a point inside the target container. Useful for translating live view points into views, for example.
Declaration
Objective-C
- (CGPoint)translatePointInAspect:(CGPoint)liveViewPoint toPointInRect:(CGRect)targetContainer;
Swift
func translatePointInAspect(_ liveViewPoint: CGPoint, toPointIn targetContainer: CGRect) -> CGPoint
Parameters
liveViewPoint
The pont inside the receiver’s aspect.
targetContainer
The rect defining the bounds of the target container.
Return Value
The point representing
liveViewPoint
insidetargetContainer
. -
Translates the given point inside the given rect into a point inside the receiver’s aspect. Useful for translating a point in a view into the live view aspect, for example.
Declaration
Objective-C
- (CGPoint)pointInAspectTranslatedFromPoint:(CGPoint)point inRect:(CGRect)container;
Swift
func pointInAspectTranslated(from point: CGPoint, in container: CGRect) -> CGPoint
Parameters
point
The pont to translate.
container
The rect defining the bounds of the container containing
point
.Return Value
The point representing
point
inside the receiver’s aspect.