Skip to content

Commit d221203

Browse files
authored
Merge pull request #129 from openvinotoolkit/rhecker/openvino_2025.3.0
OpenVINO 2025.3
2 parents 46041a2 + f062e14 commit d221203

File tree

60 files changed

+1218
-357
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1218
-357
lines changed

.github/workflows/build-and-test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ jobs:
2323
build-linux-bindings:
2424
uses: ./.github/workflows/build-linux-bindings.yml
2525
with:
26-
OPENVINO_VERSION: "2025.0"
26+
OPENVINO_VERSION: '2025.3'
2727

2828
build-windows-bindings:
2929
uses: ./.github/workflows/build-windows-bindings.yml
3030

3131
build-macos-bindings:
3232
uses: ./.github/workflows/build-macos-bindings.yml
3333
with:
34-
OPENVINO_VERSION: "2025.0"
34+
OPENVINO_VERSION: '2025.3'
3535

3636
package:
3737
name: Package combined release

.github/workflows/build-linux-bindings.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
OPENVINO_VERSION: ${{ inputs.OPENVINO_VERSION }}
4848
run: |
4949
sudo mkdir -p /opt/intel
50-
curl -L https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/2025.0/linux/openvino_genai_ubuntu22_2025.0.0.0_x86_64.tar.gz \
50+
curl -L https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/2025.3/linux/openvino_genai_ubuntu22_2025.3.0.0_x86_64.tar.gz \
5151
--output openvino.tgz && tar -xf openvino.tgz && \
5252
sudo mv openvino_genai_ubuntu22_"$OPENVINO_VERSION".0.0_x86_64 /opt/intel/openvino && rm openvino.tgz
5353
cd /opt/intel/openvino && sudo ./install_dependencies/install_openvino_dependencies.sh -y

.github/workflows/build-macos-bindings.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
env:
3030
OPENVINO_VERSION: ${{ inputs.OPENVINO_VERSION }}
3131
run: |
32-
curl -L https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/2025.0/macos/openvino_genai_macos_12_6_2025.0.0.0_arm64.tar.gz \
32+
curl -L https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/2025.3/macos/openvino_genai_macos_12_6_2025.3.0.0_arm64.tar.gz \
3333
-o /tmp/openvino.tar.gz
3434
sudo mkdir /opt/intel
3535
sudo tar -xvf /tmp/openvino.tar.gz -C /opt/intel

.github/workflows/build-windows-bindings.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,13 @@ jobs:
9999
C:\vcpkg\vcpkg install
100100
101101
# Step 10: Download and Install OpenVINO Runtime
102-
- name: Download and Install OpenVINO Runtime 24.6.0
102+
- name: Download and Install OpenVINO Runtime
103103
shell: powershell
104104
run: |
105-
Invoke-WebRequest -Uri https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/2025.0/windows/openvino_genai_windows_2025.0.0.0_x86_64.zip -OutFile openvino_runtime.zip
105+
Invoke-WebRequest -Uri https://storage.openvinotoolkit.org/repositories/openvino_genai/packages/2025.3/windows/openvino_genai_windows_2025.3.0.0_x86_64.zip -OutFile openvino_runtime.zip
106106
Expand-Archive -Path openvino_runtime.zip -DestinationPath C:/Intel/
107-
Rename-Item -Path "C:/Intel/openvino_genai_windows_2025.0.0.0_x86_64" -NewName "openvino_2025.0.0"
108-
dir C:/Intel/openvino_2025.0.0/
107+
Rename-Item -Path "C:/Intel/openvino_genai_windows_2025.3.0.0_x86_64" -NewName "openvino_2025.3.0"
108+
dir C:/Intel/openvino_2025.3.0/
109109
110110
# Step 11: Install Mediapipe Requirements
111111
- name: Install Mediapipe Requirements

lib/annotation.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,12 @@ class ImageInferenceResult {
177177
final String? csv;
178178
final Map<String, dynamic>? json;
179179
final String? overlay;
180+
final String? source;
180181

181-
ImageInferenceResult({this.csv, this.json, this.overlay});
182+
ImageInferenceResult({this.csv, this.json, this.overlay, this.source});
182183

183184
factory ImageInferenceResult.fromJson(Map<String, dynamic> output) {
184-
return ImageInferenceResult(csv: output["csv"], json: output["json"], overlay: output["overlay"]);
185+
return ImageInferenceResult(csv: output["csv"], json: output["json"], overlay: output["overlay"], source: output["source"]);
185186
}
186187

187188
List<Annotation> parseAnnotations() {

lib/color.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ extension HexColor on Color {
1515

1616
/// Prefixes a hash sign if [leadingHashSign] is set to `true` (default is `true`).
1717
String toHex({bool leadingHashSign = true}) => '${leadingHashSign ? '#' : ''}'
18-
'${alpha.toRadixString(16).padLeft(2, '0')}'
19-
'${red.toRadixString(16).padLeft(2, '0')}'
20-
'${green.toRadixString(16).padLeft(2, '0')}'
21-
'${blue.toRadixString(16).padLeft(2, '0')}';
18+
'${a.toInt().toRadixString(16).padLeft(2, '0')}'
19+
'${r.toInt().toRadixString(16).padLeft(2, '0')}'
20+
'${g.toInt().toRadixString(16).padLeft(2, '0')}'
21+
'${b.toInt().toRadixString(16).padLeft(2, '0')}';
2222
}
2323

2424

2525
//float luminance = (0.299f*color.r() + 0.587f*color.g() + 0.114f*color.b());
2626
//
2727
Color foregroundColorByLuminance(Color color) {
28-
double luminance = 0.299 * color.red + 0.587 * color.green + 0.144 * color.blue;
28+
double luminance = 0.299 * color.r + 0.587 * color.g + 0.144 * color.b;
2929
if (luminance < 128) {
3030
return Colors.white;
3131
} else {

lib/deployment_processor.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ Future<List<Project>> loadProjectsFromStorage() async {
6161
projectFile.writeAsStringSync(encoder.convert(jsonContent));
6262
}
6363
final project = Project.fromJson(jsonContent, projectFolder);
64+
if (Config().externalModels.contains(projectFolder) && project is PublicProject) {
65+
project.manifest.npuEnabled = true;
66+
}
6467
project.loaded.complete();
6568
return project;
6669
} catch (exception, stack) {

lib/importers/model_directory_importer.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ class ModelDirImporter extends Importer {
3232

3333
final source = File(projectJson).readAsStringSync();
3434
final migrated = migrationManager.migrate(jsonDecode(source));
35-
project = Project.fromJson(migrated, directory);
35+
project = Project.fromJson(migrated, directory);
36+
if (project is PublicProject) { // Always allow npu when importing a model manually
37+
(project as PublicProject).manifest.npuEnabled = true;
38+
}
3639
}
3740
return project!;
3841
}

lib/importers/model_manifest.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ModelManifest {
1616
final String description;
1717
final String task;
1818
final String author;
19-
final bool npuEnabled;
19+
bool npuEnabled;
2020
String? architecture;
2121

2222
ModelManifest({

lib/interop/device.dart

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class Device {
1919
final result = await Isolate.run(() {
2020
final status = deviceOV.getAvailableDevices();
2121

22-
if (StatusEnum.fromValue(status.ref.status) != StatusEnum.OkStatus) {
22+
if (status.ref.status != StatusEnum.OkStatus) {
2323
throw "GetAvailableDevices error: ${status.ref.status} ${status.ref.message.toDartString()}";
2424
}
2525

@@ -39,24 +39,37 @@ class Device {
3939
}
4040
}
4141

42+
class Resolution {
43+
final int width;
44+
final int height;
45+
46+
const Resolution(this.width, this.height);
47+
}
48+
4249
class CameraDevice {
4350
final int id;
4451
final String name;
45-
const CameraDevice(this.id, this.name);
52+
final List<Resolution> resolutions;
53+
const CameraDevice(this.id, this.name, this.resolutions);
4654

4755
static Future<List<CameraDevice>> getDevices() async {
4856
final result = await Isolate.run(() {
4957
final status = deviceOV.getAvailableCameraDevices();
5058

51-
if (StatusEnum.fromValue(status.ref.status) != StatusEnum.OkStatus) {
59+
if (status.ref.status != StatusEnum.OkStatus) {
5260
throw "GetAvailableDevices error: ${status.ref.status} ${status.ref.message.toDartString()}";
5361
}
5462

5563
List<CameraDevice> devices = [];
5664
for (int i = 0; i < status.ref.size; i++) {
65+
List<Resolution> resolutions = [];
66+
for (int j = 0; j < status.ref.value[i].size; j++ ){
67+
resolutions.add(Resolution(status.ref.value[i].resolutions[j].width, status.ref.value[i].resolutions[j].height));
68+
}
5769
devices.add(CameraDevice(
5870
status.ref.value[i].id,
59-
status.ref.value[i].name.toDartString()
71+
status.ref.value[i].name.toDartString(),
72+
resolutions
6073
));
6174
}
6275
deviceOV.freeStatusOrCameraDevices(status);

0 commit comments

Comments
 (0)