# HandLandmarkerLiveStreamDelegate

    protocol HandLandmarkerLiveStreamDelegate: NSObjectProtocol

This protocol defines an interface for the delegates of `HandLandmarker` object to receive results of performing asynchronous hand landmark detection on images (i.e, when `runningMode` = `.liveStream`).

The delegate of `HandLandmarker` must adopt `HandLandmarkerLiveStreamDelegate` protocol. The methods in this protocol are optional.
- `
  ### [handLandmarker(_:didFinishDetection:timestampInMilliseconds:error:)](https://developers.google.com/edge/api/mediapipe/swift/vision/Protocols/HandLandmarkerLiveStreamDelegate.md.txt#/c:objc(pl)MPPHandLandmarkerLiveStreamDelegate(im)handLandmarker:didFinishDetectionWithResult:timestampInMilliseconds:error:)

  ` This method notifies a delegate that the results of asynchronous hand landmark detection of an image submitted to the `HandLandmarker` is available.

  This method is called on a private serial dispatch queue created by the `HandLandmarker` for performing the asynchronous delegates calls.

  #### Declaration

  Swift

      optional func handLandmarker(_ handLandmarker: HandLandmarker, didFinishDetection result: HandLandmarkerResult?, timestampInMilliseconds: Int, error: (any Error)?)

  #### Parameters

  |---|---|
  | `handLandmarker` | The hand landmarker which performed the hand landmarking. This is useful to test equality when there are multiple instances of `HandLandmarker`. |
  | `result` | The `HandLandmarkerResult` object that contains a list of detections, each detection has a bounding box that is expressed in the unrotated input frame of reference coordinates system, i.e. in `[0,image_width) x [0,image_height)`, which are the dimensions of the underlying image data. |
  | `timestampInMilliseconds` | The timestamp (in milliseconds) which indicates when the input image was sent to the hand landmarker. |
  | `error` | An optional error parameter populated when there is an error in performing hand landmark detection on the input live stream image data. |