Skip to content

Commit

Permalink
feat(windows_ai): add MachineLearning APIs (#255)
Browse files Browse the repository at this point in the history
  • Loading branch information
halildurmus committed Jun 20, 2023
1 parent bfc65a0 commit c1c1eca
Show file tree
Hide file tree
Showing 97 changed files with 9,444 additions and 3 deletions.
58 changes: 58 additions & 0 deletions packages/windows_ai/lib/src/exports.g.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,62 @@

// THIS FILE IS GENERATED AUTOMATICALLY AND SHOULD NOT BE EDITED DIRECTLY.

export 'machinelearning/iimagefeaturedescriptor.dart';
export 'machinelearning/iimagefeaturedescriptor2.dart';
export 'machinelearning/iimagefeaturevalue.dart';
export 'machinelearning/ilearningmodel.dart';
export 'machinelearning/ilearningmodelbinding.dart';
export 'machinelearning/ilearningmodeldevice.dart';
export 'machinelearning/ilearningmodelevaluationresult.dart';
export 'machinelearning/ilearningmodelfeaturedescriptor.dart';
export 'machinelearning/ilearningmodelfeaturevalue.dart';
export 'machinelearning/ilearningmodeloperatorprovider.dart';
export 'machinelearning/ilearningmodelsession.dart';
export 'machinelearning/ilearningmodelsessionoptions.dart';
export 'machinelearning/ilearningmodelsessionoptions2.dart';
export 'machinelearning/ilearningmodelsessionoptions3.dart';
export 'machinelearning/imagefeaturedescriptor.dart';
export 'machinelearning/imagefeaturevalue.dart';
export 'machinelearning/imapfeaturedescriptor.dart';
export 'machinelearning/isequencefeaturedescriptor.dart';
export 'machinelearning/itensor.dart';
export 'machinelearning/itensorboolean.dart';
export 'machinelearning/itensordouble.dart';
export 'machinelearning/itensorfeaturedescriptor.dart';
export 'machinelearning/itensorfloat.dart';
export 'machinelearning/itensorfloat16bit.dart';
export 'machinelearning/itensorint16bit.dart';
export 'machinelearning/itensorint32bit.dart';
export 'machinelearning/itensorint64bit.dart';
export 'machinelearning/itensorint8bit.dart';
export 'machinelearning/itensorstring.dart';
export 'machinelearning/itensoruint16bit.dart';
export 'machinelearning/itensoruint32bit.dart';
export 'machinelearning/itensoruint64bit.dart';
export 'machinelearning/itensoruint8bit.dart';
export 'machinelearning/learningmodel.dart';
export 'machinelearning/learningmodelbinding.dart';
export 'machinelearning/learningmodeldevice.dart';
export 'machinelearning/learningmodeldevicekind.dart';
export 'machinelearning/learningmodelevaluationresult.dart';
export 'machinelearning/learningmodelfeaturekind.dart';
export 'machinelearning/learningmodelpixelrange.dart';
export 'machinelearning/learningmodelsession.dart';
export 'machinelearning/learningmodelsessionoptions.dart';
export 'machinelearning/mapfeaturedescriptor.dart';
export 'machinelearning/sequencefeaturedescriptor.dart';
export 'machinelearning/tensorboolean.dart';
export 'machinelearning/tensordouble.dart';
export 'machinelearning/tensorfeaturedescriptor.dart';
export 'machinelearning/tensorfloat.dart';
export 'machinelearning/tensorfloat16bit.dart';
export 'machinelearning/tensorint16bit.dart';
export 'machinelearning/tensorint32bit.dart';
export 'machinelearning/tensorint64bit.dart';
export 'machinelearning/tensorint8bit.dart';
export 'machinelearning/tensorkind.dart';
export 'machinelearning/tensorstring.dart';
export 'machinelearning/tensoruint16bit.dart';
export 'machinelearning/tensoruint32bit.dart';
export 'machinelearning/tensoruint64bit.dart';
export 'machinelearning/tensoruint8bit.dart';
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
// Copyright (c) 2023, Dart | Windows. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// THIS FILE IS GENERATED AUTOMATICALLY AND SHOULD NOT BE EDITED DIRECTLY.

// ignore_for_file: constant_identifier_names, non_constant_identifier_names
// ignore_for_file: unnecessary_import, unused_import

import 'dart:async';
import 'dart:ffi';

import 'package:ffi/ffi.dart';
import 'package:win32/win32.dart' hide DocumentProperties;
import 'package:windows_foundation/internal.dart';
import 'package:windows_foundation/windows_foundation.dart';
import 'package:windows_graphics/windows_graphics.dart';

/// @nodoc
const IID_IImageFeatureDescriptor = '{365585a5-171a-4a2a-985f-265159d3895a}';

class IImageFeatureDescriptor extends IInspectable {
// vtable begins at 6, is 4 entries long.
IImageFeatureDescriptor.fromPtr(super.ptr);

factory IImageFeatureDescriptor.from(IInspectable interface) =>
IImageFeatureDescriptor.fromPtr(
interface.toInterface(IID_IImageFeatureDescriptor));

BitmapPixelFormat get bitmapPixelFormat {
final retValuePtr = calloc<Int32>();

try {
final hr = ptr.ref.vtable
.elementAt(6)
.cast<
Pointer<
NativeFunction<
HRESULT Function(
VTablePointer lpVtbl, Pointer<Int32> retValuePtr)>>>()
.value
.asFunction<
int Function(VTablePointer lpVtbl,
Pointer<Int32> retValuePtr)>()(ptr.ref.lpVtbl, retValuePtr);

if (FAILED(hr)) throw WindowsException(hr);

return BitmapPixelFormat.from(retValuePtr.value);
} finally {
free(retValuePtr);
}
}

BitmapAlphaMode get bitmapAlphaMode {
final retValuePtr = calloc<Int32>();

try {
final hr = ptr.ref.vtable
.elementAt(7)
.cast<
Pointer<
NativeFunction<
HRESULT Function(
VTablePointer lpVtbl, Pointer<Int32> retValuePtr)>>>()
.value
.asFunction<
int Function(VTablePointer lpVtbl,
Pointer<Int32> retValuePtr)>()(ptr.ref.lpVtbl, retValuePtr);

if (FAILED(hr)) throw WindowsException(hr);

return BitmapAlphaMode.from(retValuePtr.value);
} finally {
free(retValuePtr);
}
}

int get width {
final retValuePtr = calloc<Uint32>();

try {
final hr = ptr.ref.vtable
.elementAt(8)
.cast<
Pointer<
NativeFunction<
HRESULT Function(VTablePointer lpVtbl,
Pointer<Uint32> retValuePtr)>>>()
.value
.asFunction<
int Function(VTablePointer lpVtbl,
Pointer<Uint32> retValuePtr)>()(ptr.ref.lpVtbl, retValuePtr);

if (FAILED(hr)) throw WindowsException(hr);

return retValuePtr.value;
} finally {
free(retValuePtr);
}
}

int get height {
final retValuePtr = calloc<Uint32>();

try {
final hr = ptr.ref.vtable
.elementAt(9)
.cast<
Pointer<
NativeFunction<
HRESULT Function(VTablePointer lpVtbl,
Pointer<Uint32> retValuePtr)>>>()
.value
.asFunction<
int Function(VTablePointer lpVtbl,
Pointer<Uint32> retValuePtr)>()(ptr.ref.lpVtbl, retValuePtr);

if (FAILED(hr)) throw WindowsException(hr);

return retValuePtr.value;
} finally {
free(retValuePtr);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// Copyright (c) 2023, Dart | Windows. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// THIS FILE IS GENERATED AUTOMATICALLY AND SHOULD NOT BE EDITED DIRECTLY.

// ignore_for_file: constant_identifier_names, non_constant_identifier_names
// ignore_for_file: unnecessary_import, unused_import

import 'dart:async';
import 'dart:ffi';

import 'package:ffi/ffi.dart';
import 'package:win32/win32.dart' hide DocumentProperties;
import 'package:windows_foundation/internal.dart';
import 'package:windows_foundation/windows_foundation.dart';

import 'learningmodelpixelrange.dart';

/// @nodoc
const IID_IImageFeatureDescriptor2 = '{2b27cca7-d533-5862-bb98-1611b155b0e1}';

class IImageFeatureDescriptor2 extends IInspectable {
// vtable begins at 6, is 1 entries long.
IImageFeatureDescriptor2.fromPtr(super.ptr);

factory IImageFeatureDescriptor2.from(IInspectable interface) =>
IImageFeatureDescriptor2.fromPtr(
interface.toInterface(IID_IImageFeatureDescriptor2));

LearningModelPixelRange get pixelRange {
final retValuePtr = calloc<Int32>();

try {
final hr = ptr.ref.vtable
.elementAt(6)
.cast<
Pointer<
NativeFunction<
HRESULT Function(
VTablePointer lpVtbl, Pointer<Int32> retValuePtr)>>>()
.value
.asFunction<
int Function(VTablePointer lpVtbl,
Pointer<Int32> retValuePtr)>()(ptr.ref.lpVtbl, retValuePtr);

if (FAILED(hr)) throw WindowsException(hr);

return LearningModelPixelRange.from(retValuePtr.value);
} finally {
free(retValuePtr);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Copyright (c) 2023, Dart | Windows. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// THIS FILE IS GENERATED AUTOMATICALLY AND SHOULD NOT BE EDITED DIRECTLY.

// ignore_for_file: constant_identifier_names, non_constant_identifier_names
// ignore_for_file: unnecessary_import, unused_import

import 'dart:async';
import 'dart:ffi';

import 'package:ffi/ffi.dart';
import 'package:win32/win32.dart' hide DocumentProperties;
import 'package:windows_foundation/internal.dart';
import 'package:windows_foundation/windows_foundation.dart';
import 'package:windows_media/windows_media.dart';

/// @nodoc
const IID_IImageFeatureValue = '{f0414fd9-c9aa-4405-b7fb-94f87c8a3037}';

class IImageFeatureValue extends IInspectable {
// vtable begins at 6, is 1 entries long.
IImageFeatureValue.fromPtr(super.ptr);

factory IImageFeatureValue.from(IInspectable interface) =>
IImageFeatureValue.fromPtr(interface.toInterface(IID_IImageFeatureValue));

VideoFrame? get videoFrame {
final retValuePtr = calloc<COMObject>();

final hr = ptr.ref.vtable
.elementAt(6)
.cast<
Pointer<
NativeFunction<
HRESULT Function(VTablePointer lpVtbl,
Pointer<COMObject> retValuePtr)>>>()
.value
.asFunction<
int Function(VTablePointer lpVtbl,
Pointer<COMObject> retValuePtr)>()(ptr.ref.lpVtbl, retValuePtr);

if (FAILED(hr)) {
free(retValuePtr);
throw WindowsException(hr);
}

if (retValuePtr.ref.isNull) {
free(retValuePtr);
return null;
}

return VideoFrame.fromPtr(retValuePtr);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// Copyright (c) 2023, Dart | Windows. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// THIS FILE IS GENERATED AUTOMATICALLY AND SHOULD NOT BE EDITED DIRECTLY.

// ignore_for_file: constant_identifier_names, non_constant_identifier_names
// ignore_for_file: unnecessary_import, unused_import

import 'dart:async';
import 'dart:ffi';

import 'package:ffi/ffi.dart';
import 'package:win32/win32.dart' hide DocumentProperties;
import 'package:windows_foundation/internal.dart';
import 'package:windows_foundation/windows_foundation.dart';
import 'package:windows_media/windows_media.dart';

import 'imagefeaturevalue.dart';

/// @nodoc
const IID_IImageFeatureValueStatics = '{1bc317fd-23cb-4610-b085-c8e1c87ebaa0}';

class IImageFeatureValueStatics extends IInspectable {
// vtable begins at 6, is 1 entries long.
IImageFeatureValueStatics.fromPtr(super.ptr);

factory IImageFeatureValueStatics.from(IInspectable interface) =>
IImageFeatureValueStatics.fromPtr(
interface.toInterface(IID_IImageFeatureValueStatics));

ImageFeatureValue? createFromVideoFrame(VideoFrame? image) {
final retValuePtr = calloc<COMObject>();
final imagePtr = image == null ? nullptr : image.ptr.ref.lpVtbl;

final hr =
ptr.ref.vtable
.elementAt(6)
.cast<
Pointer<
NativeFunction<
HRESULT Function(
VTablePointer lpVtbl,
VTablePointer image,
Pointer<COMObject> retValuePtr)>>>()
.value
.asFunction<
int Function(VTablePointer lpVtbl, VTablePointer image,
Pointer<COMObject> retValuePtr)>()(
ptr.ref.lpVtbl, imagePtr, retValuePtr);

if (FAILED(hr)) {
free(retValuePtr);
throw WindowsException(hr);
}

if (retValuePtr.ref.isNull) {
free(retValuePtr);
return null;
}

return ImageFeatureValue.fromPtr(retValuePtr);
}
}
Loading

0 comments on commit c1c1eca

Please sign in to comment.