Skip to content

Commit

Permalink
fix: flickering when running asynchronously (#1111)
Browse files Browse the repository at this point in the history
  • Loading branch information
homuler committed Jan 6, 2024
1 parent 589b335 commit 7e1b939
Show file tree
Hide file tree
Showing 20 changed files with 109 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public float minDetectionConfidence

public event EventHandler<OutputStream.OutputEventArgs> OnFaceDetectionsOutput
{
add => _faceDetectionsStream.AddListener(value);
add => _faceDetectionsStream.AddListener(value, timeoutMicrosec);
remove => _faceDetectionsStream.RemoveListener(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ protected override IEnumerator WaitForNextValue()
private void OnFaceDetectionsOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(Detection.Parser);
var value = packet == null ? default : packet.GetProtoList(Detection.Parser);
_faceDetectionsAnnotationController.DrawLater(value);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,25 +51,25 @@ public float minTrackingConfidence

public event EventHandler<OutputStream.OutputEventArgs> OnFaceDetectionsOutput
{
add => _faceDetectionsStream.AddListener(value);
add => _faceDetectionsStream.AddListener(value, timeoutMicrosec);
remove => _faceDetectionsStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnMultiFaceLandmarksOutput
{
add => _multiFaceLandmarksStream.AddListener(value);
add => _multiFaceLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _multiFaceLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnFaceRectsFromLandmarksOutput
{
add => _faceRectsFromLandmarksStream.AddListener(value);
add => _faceRectsFromLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _faceRectsFromLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnFaceRectsFromDetectionsOutput
{
add => _faceRectsFromDetectionsStream.AddListener(value);
add => _faceRectsFromDetectionsStream.AddListener(value, timeoutMicrosec);
remove => _faceRectsFromDetectionsStream.RemoveListener(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,28 +77,28 @@ protected override IEnumerator WaitForNextValue()
private void OnFaceDetectionsOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(Detection.Parser);
var value = packet == null ? default : packet.GetProtoList(Detection.Parser);
_faceDetectionsAnnotationController.DrawLater(value);
}

private void OnMultiFaceLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(NormalizedLandmarkList.Parser);
var value = packet == null ? default : packet.GetProtoList(NormalizedLandmarkList.Parser);
_multiFaceLandmarksAnnotationController.DrawLater(value);
}

private void OnFaceRectsFromLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(NormalizedRect.Parser);
var value = packet == null ? default : packet.GetProtoList(NormalizedRect.Parser);
_faceRectsFromLandmarksAnnotationController.DrawLater(value);
}

private void OnFaceRectsFromDetectionsOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(NormalizedRect.Parser);
var value = packet == null ? default : packet.GetProtoList(NormalizedRect.Parser);
_faceRectsFromDetectionsAnnotationController.DrawLater(value);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class HairSegmentationGraph : GraphRunner
{
public event EventHandler<OutputStream.OutputEventArgs> OnHairMaskOutput
{
add => _hairMaskStream.AddListener(value);
add => _hairMaskStream.AddListener(value, timeoutMicrosec);
remove => _hairMaskStream.RemoveListener(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ protected override IEnumerator WaitForNextValue()
private void OnHairMaskOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetImageFrame();
var value = packet == null ? default : packet.GetImageFrame();
_hairMaskAnnotationController.DrawLater(value);
value?.Dispose();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,37 +63,37 @@ public float minTrackingConfidence

public event EventHandler<OutputStream.OutputEventArgs> OnPalmDetectectionsOutput
{
add => _palmDetectionsStream.AddListener(value);
add => _palmDetectionsStream.AddListener(value, timeoutMicrosec);
remove => _palmDetectionsStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnHandRectsFromPalmDetectionsOutput
{
add => _handRectsFromPalmDetectionsStream.AddListener(value);
add => _handRectsFromPalmDetectionsStream.AddListener(value, timeoutMicrosec);
remove => _handRectsFromPalmDetectionsStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnHandLandmarksOutput
{
add => _handLandmarksStream.AddListener(value);
add => _handLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _handLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnHandWorldLandmarksOutput
{
add => _handWorldLandmarksStream.AddListener(value);
add => _handWorldLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _handWorldLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnHandRectsFromLandmarksOutput
{
add => _handRectsFromLandmarksStream.AddListener(value);
add => _handRectsFromLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _handRectsFromLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnHandednessOutput
{
add => _handednessStream.AddListener(value);
add => _handednessStream.AddListener(value, timeoutMicrosec);
remove => _handednessStream.RemoveListener(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
// https://opensource.org/licenses/MIT.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Mediapipe.Unity.Sample.HandTracking
Expand Down Expand Up @@ -81,35 +80,35 @@ protected override IEnumerator WaitForNextValue()
private void OnPalmDetectionsOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(Detection.Parser);
var value = packet == null ? default : packet.GetProtoList(Detection.Parser);
_palmDetectionsAnnotationController.DrawLater(value);
}

private void OnHandRectsFromPalmDetectionsOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(NormalizedRect.Parser);
var value = packet == null ? default : packet.GetProtoList(NormalizedRect.Parser);
_handRectsFromPalmDetectionsAnnotationController.DrawLater(value);
}

private void OnHandLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(NormalizedLandmarkList.Parser);
var value = packet == null ? default : packet.GetProtoList(NormalizedLandmarkList.Parser);
_handLandmarksAnnotationController.DrawLater(value);
}

private void OnHandRectsFromLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(NormalizedRect.Parser);
var value = packet == null ? default : packet.GetProtoList(NormalizedRect.Parser);
_handRectsFromLandmarksAnnotationController.DrawLater(value);
}

private void OnHandednessOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(ClassificationList.Parser);
var value = packet == null ? default : packet.GetProtoList(ClassificationList.Parser);
_handLandmarksAnnotationController.DrawLater(value);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,49 +71,49 @@ public float minTrackingConfidence

public event EventHandler<OutputStream.OutputEventArgs> OnPoseDetectionOutput
{
add => _poseDetectionStream.AddListener(value);
add => _poseDetectionStream.AddListener(value, timeoutMicrosec);
remove => _poseDetectionStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnPoseLandmarksOutput
{
add => _poseLandmarksStream.AddListener(value);
add => _poseLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _poseLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnFaceLandmarksOutput
{
add => _faceLandmarksStream.AddListener(value);
add => _faceLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _faceLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnLeftHandLandmarksOutput
{
add => _leftHandLandmarksStream.AddListener(value);
add => _leftHandLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _leftHandLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnRightHandLandmarksOutput
{
add => _rightHandLandmarksStream.AddListener(value);
add => _rightHandLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _rightHandLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnPoseWorldLandmarksOutput
{
add => _poseWorldLandmarksStream.AddListener(value);
add => _poseWorldLandmarksStream.AddListener(value, timeoutMicrosec);
remove => _poseWorldLandmarksStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnSegmentationMaskOutput
{
add => _segmentationMaskStream.AddListener(value);
add => _segmentationMaskStream.AddListener(value, timeoutMicrosec);
remove => _segmentationMaskStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnPoseRoiOutput
{
add => _poseRoiStream.AddListener(value);
add => _poseRoiStream.AddListener(value, timeoutMicrosec);
remove => _poseRoiStream.RemoveListener(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,57 +112,57 @@ protected override IEnumerator WaitForNextValue()
private void OnPoseDetectionOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(Detection.Parser);
var value = packet == null ? default : packet.GetProto(Detection.Parser);
_poseDetectionAnnotationController.DrawLater(value);
}

private void OnFaceLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(NormalizedLandmarkList.Parser);
var value = packet == null ? default : packet.GetProto(NormalizedLandmarkList.Parser);
_holisticAnnotationController.DrawFaceLandmarkListLater(value);
}

private void OnPoseLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(NormalizedLandmarkList.Parser);
var value = packet == null ? default : packet.GetProto(NormalizedLandmarkList.Parser);
_holisticAnnotationController.DrawPoseLandmarkListLater(value);
}

private void OnLeftHandLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(NormalizedLandmarkList.Parser);
var value = packet == null ? default : packet.GetProto(NormalizedLandmarkList.Parser);
_holisticAnnotationController.DrawLeftHandLandmarkListLater(value);
}

private void OnRightHandLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(NormalizedLandmarkList.Parser);
var value = packet == null ? default : packet.GetProto(NormalizedLandmarkList.Parser);
_holisticAnnotationController.DrawRightHandLandmarkListLater(value);
}

private void OnPoseWorldLandmarksOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(LandmarkList.Parser);
var value = packet == null ? default : packet.GetProto(LandmarkList.Parser);
_poseWorldLandmarksAnnotationController.DrawLater(value);
}

private void OnSegmentationMaskOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetImageFrame();
var value = packet == null ? default : packet.GetImageFrame();
_segmentationMaskAnnotationController.DrawLater(value);
value?.Dispose();
}

private void OnPoseRoiOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(NormalizedRect.Parser);
var value = packet == null ? default : packet.GetProto(NormalizedRect.Parser);
_poseRoiAnnotationController.DrawLater(value);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,19 @@ public class IrisTrackingGraph : GraphRunner
{
public event EventHandler<OutputStream.OutputEventArgs> OnFaceDetectionsOutput
{
add => _faceDetectionsStream.AddListener(value);
add => _faceDetectionsStream.AddListener(value, timeoutMicrosec);
remove => _faceDetectionsStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnFaceRectOutput
{
add => _faceRectStream.AddListener(value);
add => _faceRectStream.AddListener(value, timeoutMicrosec);
remove => _faceRectStream.RemoveListener(value);
}

public event EventHandler<OutputStream.OutputEventArgs> OnFaceLandmarksWithIrisOutput
{
add => _faceLandmarksWithIrisStream.AddListener(value);
add => _faceLandmarksWithIrisStream.AddListener(value, timeoutMicrosec);
remove => _faceLandmarksWithIrisStream.RemoveListener(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,21 +49,21 @@ protected override IEnumerator WaitForNextValue()
private void OnFaceDetectionsOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(Detection.Parser);
var value = packet == null ? default : packet.GetProtoList(Detection.Parser);
_faceDetectionsAnnotationController.DrawLater(value);
}

private void OnFaceRectOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(NormalizedRect.Parser);
var value = packet == null ? default : packet.GetProto(NormalizedRect.Parser);
_faceRectAnnotationController.DrawLater(value);
}

private void OnFaceLandmarksWithIrisOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProto(NormalizedLandmarkList.Parser);
var value = packet == null ? default : packet.GetProto(NormalizedLandmarkList.Parser);
_faceLandmarksWithIrisAnnotationController.DrawLater(value);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class MediaPipeVideoGraph : GraphRunner

public event EventHandler<OutputStream.OutputEventArgs> OnOutput
{
add => _outputVideoStream.AddListener(value);
add => _outputVideoStream.AddListener(value, timeoutMicrosec);
remove => _outputVideoStream.RemoveListener(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class ObjectDetectionGraph : GraphRunner
{
public event EventHandler<OutputStream.OutputEventArgs> OnOutputDetectionsOutput
{
add => _outputDetectionsStream.AddListener(value);
add => _outputDetectionsStream.AddListener(value, timeoutMicrosec);
remove => _outputDetectionsStream.RemoveListener(value);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ protected override IEnumerator WaitForNextValue()
private void OnOutputDetectionsOutput(object stream, OutputStream.OutputEventArgs eventArgs)
{
var packet = eventArgs.packet;
var value = packet.IsEmpty() ? default : packet.GetProtoList(Detection.Parser);
var value = packet == null ? default : packet.GetProtoList(Detection.Parser);
_outputDetectionsAnnotationController.DrawLater(value);
}
}
Expand Down
Loading

0 comments on commit 7e1b939

Please sign in to comment.