Skip to content

Commit

Permalink
v1.2.4
Browse files Browse the repository at this point in the history
  • Loading branch information
pablonosh committed Oct 25, 2023
1 parent 0ffde8c commit 1106971
Show file tree
Hide file tree
Showing 25 changed files with 61 additions and 44 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## v1.2.5 - 2023-10-24

### Fixed
- iOS17 Performance

## v1.2.4 - 2023-10-05

### Added
Expand Down
2 changes: 1 addition & 1 deletion QuickPoseCamera.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'QuickPoseCamera'
s.version = '1.2.4'
s.version = '1.2.5'
s.summary = 'QuickPoseCamera'
s.homepage = 'https://quickpose.ai'
s.authors = 'QuickPose.ai'
Expand Down
2 changes: 1 addition & 1 deletion QuickPoseCore.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'QuickPoseCore'
s.version = '1.2.4'
s.version = '1.2.5'
s.summary = 'QuickPoseCore'
s.homepage = 'https://quickpose.ai'
s.authors = 'QuickPose.ai'
Expand Down
12 changes: 6 additions & 6 deletions QuickPoseCore.xcframework/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,31 @@
<key>BinaryPath</key>
<string>QuickPoseCore.framework/QuickPoseCore</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<string>ios-x86_64-simulator</string>
<key>LibraryPath</key>
<string>QuickPoseCore.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>QuickPoseCore.framework/QuickPoseCore</string>
<key>LibraryIdentifier</key>
<string>ios-x86_64-simulator</string>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>QuickPoseCore.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>x86_64</string>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -20106,7 +20106,7 @@
"kind": "StringLiteral",
"offset": 47736,
"length": 7,
"value": "\"1.2.4\""
"value": "\"1.2.5\""
},
{
"filePath": "\/Users\/peter\/40love\/quickpose-ios-sdk-private\/Private\/QuickPose\/QuickPose.swift",
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
</data>
<key>Modules/QuickPoseCore.swiftmodule/arm64-apple-ios.abi.json</key>
<data>
VJY82XcBr63ANH3FXrdK1La3tx8=
w8xcIvnXkepmy3s7RSREcAx2AAU=
</data>
<key>Modules/QuickPoseCore.swiftmodule/arm64-apple-ios.private.swiftinterface</key>
<data>
Expand All @@ -34,7 +34,7 @@
</data>
<key>Modules/QuickPoseCore.swiftmodule/arm64-apple-ios.swiftmodule</key>
<data>
N+9bnC8ipLb8etDc3V0vJWZnams=
a9xuHGPHg/SWhXaESE62QIMsRgQ=
</data>
<key>Modules/module.modulemap</key>
<data>
Expand Down Expand Up @@ -157,7 +157,7 @@
<dict>
<key>hash2</key>
<data>
9re5jNMtl9htmZs5v0l0LmZq4gc8FhQgKY5R0U5TB9k=
6fRam1R4iB7sypA6key+kDqjk96QG3pJLDm50krTRcM=
</data>
</dict>
<key>Modules/QuickPoseCore.swiftmodule/arm64-apple-ios.private.swiftinterface</key>
Expand Down Expand Up @@ -185,7 +185,7 @@
<dict>
<key>hash2</key>
<data>
TrkFca1F0Nn8ufD+EyJkuzNRkp/yLpTIeKUVOq5Hugs=
KVjzh3IkVLdpTfvwQz8+PcAQIaGNjowv4iQWvFvHj+0=
</data>
</dict>
<key>Modules/module.modulemap</key>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -20106,7 +20106,7 @@
"kind": "StringLiteral",
"offset": 47736,
"length": 7,
"value": "\"1.2.4\""
"value": "\"1.2.5\""
},
{
"filePath": "\/Users\/peter\/40love\/quickpose-ios-sdk-private\/Private\/QuickPose\/QuickPose.swift",
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
</data>
<key>Modules/QuickPoseCore.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
<data>
VJY82XcBr63ANH3FXrdK1La3tx8=
w8xcIvnXkepmy3s7RSREcAx2AAU=
</data>
<key>Modules/QuickPoseCore.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
<data>
Expand All @@ -34,7 +34,7 @@
</data>
<key>Modules/QuickPoseCore.swiftmodule/x86_64-apple-ios-simulator.swiftmodule</key>
<data>
TDbG8XCTvYdV7PSbxm6ucEVZ9DQ=
qLAXccebxlPfmL4wZpDqR3R/DP4=
</data>
<key>Modules/module.modulemap</key>
<data>
Expand Down Expand Up @@ -157,7 +157,7 @@
<dict>
<key>hash2</key>
<data>
9re5jNMtl9htmZs5v0l0LmZq4gc8FhQgKY5R0U5TB9k=
6fRam1R4iB7sypA6key+kDqjk96QG3pJLDm50krTRcM=
</data>
</dict>
<key>Modules/QuickPoseCore.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface</key>
Expand Down Expand Up @@ -185,7 +185,7 @@
<dict>
<key>hash2</key>
<data>
xFMyo+wcRjY9F1uYePwju2sJk6EvSMJnh0Vuz9EC2UQ=
aXJQtFDIgHwoSm+CnbNHriIG867gwXA5oJRPoWxX9D4=
</data>
</dict>
<key>Modules/module.modulemap</key>
Expand Down
4 changes: 4 additions & 0 deletions QuickPoseMP.xcframework/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>QuickPoseMP.framework/QuickPoseMP</string>
<key>LibraryIdentifier</key>
<string>ios-x86_64-simulator</string>
<key>LibraryPath</key>
Expand All @@ -19,6 +21,8 @@
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>QuickPoseMP.framework/QuickPoseMP</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@
@class QuickPoseMP;

@protocol QuickPoseMediaPipeDelegate <NSObject>
- (void) mediaPipeImpl: (QuickPoseMP*)mediaPipeImpl poseLandmarks: (nullable NSArray<NSNumber*> *) poseLandmarks worldPoseLandmarks: (nullable NSArray<NSNumber*> *) worldPoseLandmarks faceLandmarks: (nullable NSArray<NSNumber*> *) faceLandmarks leftHandLandmarks: (nullable NSArray<NSNumber*> *)leftHandLandmarks rightHandLandmarks: (nullable NSArray<NSNumber*> *)rightHandLandmarks frame: (nullable CVPixelBufferRef) frame timestamp:(CMTime)timestamp absoluteTime:(CFAbsoluteTime) absoluteTime;
- (void) mediaPipeImpl: (nonnull QuickPoseMP*)mediaPipeImpl poseLandmarks: (nullable NSArray<NSNumber*> *) poseLandmarks worldPoseLandmarks: (nullable NSArray<NSNumber*> *) worldPoseLandmarks faceLandmarks: (nullable NSArray<NSNumber*> *) faceLandmarks leftHandLandmarks: (nullable NSArray<NSNumber*> *)leftHandLandmarks rightHandLandmarks: (nullable NSArray<NSNumber*> *)rightHandLandmarks frame: (nullable CVPixelBufferRef) frame timestamp:(CMTime)timestamp absoluteTime:(CFAbsoluteTime) absoluteTime;

@end

@interface QuickPoseMP : NSObject
- (instancetype)initWithFaceTracking: (BOOL) faceTracking andHandTracking: (BOOL) handTracking;
- (nonnull instancetype)initWithFaceTracking: (BOOL) faceTracking andHandTracking: (BOOL) handTracking;
- (void)startGraphWithModelComplexity: (int) modelComplexity andSmoothLandmarks: (BOOL) smoothLandmarks;
- (void) waitUntilGraphStarted;
- (void)stopGraph;
- (void)processVideoFrame:(CVPixelBufferRef)imageBuffer timestamp:(CMTime)timestamp absoluteTime:(CFAbsoluteTime) absoluteTime;
- (void)processVideoFrame:(nonnull CVPixelBufferRef)imageBuffer timestamp:(CMTime)timestamp absoluteTime:(CFAbsoluteTime) absoluteTime;

@property (readwrite, nonatomic) int rotationDegrees;
@property (readwrite, nonatomic) BOOL handTrackingEnabled;
@property (readwrite, nonatomic) BOOL faceTrackingEnabled;
@property (weak, nonatomic) id <QuickPoseMediaPipeDelegate> delegate;
@property (readwrite, nonatomic) NSString* libVersion;
@property (readwrite, nonatomic) NSString* tfVersion;
@property (weak, nonatomic, nullable) id <QuickPoseMediaPipeDelegate> delegate;
@property (readwrite, nonatomic, nonnull) NSString* libVersion;
@property (readwrite, nonatomic, nonnull) NSString* tfVersion;

@end

Expand Down
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@
@class QuickPoseMP;

@protocol QuickPoseMediaPipeDelegate <NSObject>
- (void) mediaPipeImpl: (QuickPoseMP*)mediaPipeImpl poseLandmarks: (nullable NSArray<NSNumber*> *) poseLandmarks worldPoseLandmarks: (nullable NSArray<NSNumber*> *) worldPoseLandmarks faceLandmarks: (nullable NSArray<NSNumber*> *) faceLandmarks leftHandLandmarks: (nullable NSArray<NSNumber*> *)leftHandLandmarks rightHandLandmarks: (nullable NSArray<NSNumber*> *)rightHandLandmarks frame: (nullable CVPixelBufferRef) frame timestamp:(CMTime)timestamp absoluteTime:(CFAbsoluteTime) absoluteTime;
- (void) mediaPipeImpl: (nonnull QuickPoseMP*)mediaPipeImpl poseLandmarks: (nullable NSArray<NSNumber*> *) poseLandmarks worldPoseLandmarks: (nullable NSArray<NSNumber*> *) worldPoseLandmarks faceLandmarks: (nullable NSArray<NSNumber*> *) faceLandmarks leftHandLandmarks: (nullable NSArray<NSNumber*> *)leftHandLandmarks rightHandLandmarks: (nullable NSArray<NSNumber*> *)rightHandLandmarks frame: (nullable CVPixelBufferRef) frame timestamp:(CMTime)timestamp absoluteTime:(CFAbsoluteTime) absoluteTime;

@end

@interface QuickPoseMP : NSObject
- (instancetype)initWithFaceTracking: (BOOL) faceTracking andHandTracking: (BOOL) handTracking;
- (nonnull instancetype)initWithFaceTracking: (BOOL) faceTracking andHandTracking: (BOOL) handTracking;
- (void)startGraphWithModelComplexity: (int) modelComplexity andSmoothLandmarks: (BOOL) smoothLandmarks;
- (void) waitUntilGraphStarted;
- (void)stopGraph;
- (void)processVideoFrame:(CVPixelBufferRef)imageBuffer timestamp:(CMTime)timestamp absoluteTime:(CFAbsoluteTime) absoluteTime;
- (void)processVideoFrame:(nonnull CVPixelBufferRef)imageBuffer timestamp:(CMTime)timestamp absoluteTime:(CFAbsoluteTime) absoluteTime;

@property (readwrite, nonatomic) int rotationDegrees;
@property (readwrite, nonatomic) BOOL handTrackingEnabled;
@property (readwrite, nonatomic) BOOL faceTrackingEnabled;
@property (weak, nonatomic) id <QuickPoseMediaPipeDelegate> delegate;
@property (readwrite, nonatomic) NSString* libVersion;
@property (readwrite, nonatomic) NSString* tfVersion;
@property (weak, nonatomic, nullable) id <QuickPoseMediaPipeDelegate> delegate;
@property (readwrite, nonatomic, nonnull) NSString* libVersion;
@property (readwrite, nonatomic, nonnull) NSString* tfVersion;

@end

Expand Down
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion QuickPoseSwiftUI.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'QuickPoseSwiftUI'
s.version = '1.2.4'
s.version = '1.2.5'
s.summary = 'QuickPoseSwiftUI'
s.homepage = 'https://quickpose.ai'
s.authors = 'QuickPose.ai'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ struct QuickPoseBasicView: View {
.onAppear {
quickPose.start(features: [.overlay(.wholeBody)], onFrame: { status, image, features, feedback, landmarks in
overlayImage = image
if case .success(_, _) = status {
if case .success = status {

} else {
// show error feedback
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct QuickPoseBasicView: View {

private var quickPose = QuickPose(sdkKey: "YOUR SDK KEY HERE") // register for your free key at https://dev.quickpose.ai
@State private var overlayImage: UIImage?
@State private var frameRate: Double? = 90
@State private var frameRate: Double? = 60

var body: some View {
GeometryReader { geometry in
Expand Down
2 changes: 1 addition & 1 deletion SampleApps/SwiftUI/PickerDemo/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.2.4</string>
<string>1.2.5</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ struct QuickPosePickerView: View {
@State var counter = QuickPoseThresholdCounter()
@State var timer = QuickPoseThresholdTimer()

private var quickPose = QuickPose(sdkKey: "01GS5J4JEQQZDZZB0EYSE974BV") // register for your free key at https://dev.quickpose.ai
private var quickPose = QuickPose(sdkKey: "YOUR SDK KEY HERE") // register for your free key at https://dev.quickpose.ai
@State private var overlayImage: UIImage?

@State var useFrontCamera: Bool = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,32 @@ struct QuickPoseBasicView: View {
@State private var overlayImage: UIImage?
@State private var filename: String? = nil
@State private var fileProcessingProgress: Int? = nil
@State private var complete: URL? = nil

var body: some View {
GeometryReader { geometry in
VStack {
if let filename = filename {
Text("Processing\n\(filename)").multilineTextAlignment(.center)
}
if let progress = fileProcessingProgress {
Text("\(progress)%").padding(.top, 20)
if let complete = complete {
Text("Processed\n\(filename ?? "")\n\(complete.absoluteString)").multilineTextAlignment(.center)

} else {
if let filename = filename {
Text("Processing\n\(filename)").multilineTextAlignment(.center)
}
if let progress = fileProcessingProgress {
Text("\(progress)%").padding(.top, 20)
}
}

}
.font(.system(size: 16, weight: .semibold)).foregroundColor(.white)
.frame(width: geometry.size.width, height: geometry.size.height, alignment: .center)
.edgesIgnoringSafeArea(.all)
.onAppear() {
DispatchQueue.global(qos: .userInteractive).async {
let quickPosePP = QuickPosePostProcessor(sdkKey: "YOUR SDK KEY HERE") // register for your free key at https://dev.quickpose.ai

let request = QuickPosePostProcessor.Request(input: Bundle.main.url(forResource: "tennis_240fps.mov", withExtension: nil)!, output: FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("tennis_240fps.mov"), outputType: .mov)
let outputDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("tennis_240fps.mov")
let request = QuickPosePostProcessor.Request(input: Bundle.main.url(forResource: "tennis_240fps.mov", withExtension: nil)!, output:outputDir, outputType: .mov)

fileProcessingProgress = nil
filename = request.input.lastPathComponent
Expand All @@ -43,17 +50,18 @@ struct QuickPoseBasicView: View {
let features: [QuickPose.Feature] = [.rangeOfMotion(.shoulder(side: .right, clockwiseDirection: true), style: QuickPose.Style(relativeFontSize: 0.5, relativeArcSize: 0.5, relativeLineWidth: 0.5))]


try quickPosePP.process(features: features, isFrontCamera: true, request: request) { progress, time, _, _, features, _, _ in
try quickPosePP.process(features: features, isFrontCamera: false, request: request) { progress, time, _, _, features, _, _ in
fileProcessingProgress = Int(progress * 100)
if let feature = features.first {
print("\(time), \(feature.key.displayString) \(feature.value.stringValue)")
} else {
print("\(time)")
}
// quickPosePP.update(features: [QuickPose.Feature]) // you can update the features based on the video, like in real time.

}
complete = outputDir
fileProcessingProgress = 100
print("Video output to \(outputDir)")
} catch {
print("\(request.input.lastPathComponent): file could not be processed: \(error)")
}
Expand Down

0 comments on commit 1106971

Please sign in to comment.