Skip to content

Commit

Permalink
add Audios class in csharp
Browse files Browse the repository at this point in the history
  • Loading branch information
ajindal1 committed Feb 26, 2025
1 parent 0b14543 commit 321b1c5
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
50 changes: 50 additions & 0 deletions src/csharp/Audios.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.Runtime.InteropServices;

namespace Microsoft.ML.OnnxRuntimeGenAI
{
public class Audios : IDisposable
{
private IntPtr _audiosHandle;
private bool _disposed = false;

private Audios(IntPtr audiosHandle)
{
_audiosHandle = audiosHandle;
}

internal IntPtr Handle { get { return _audiosHandle; } }

public static Audios Load(string[] audioPaths)
{
Result.VerifySuccess(NativeMethods.OgaCreateStringArray(out IntPtr stringArray));
foreach (string audioPath in audioPaths)
{
Result.VerifySuccess(NativeMethods.OgaStringArrayAddString(stringArray, StringUtils.ToUtf8(audioPath)));
}
Result.VerifySuccess(NativeMethods.OgaLoadAudios(stringArray, out IntPtr audiosHandle));
NativeMethods.OgaDestroyStringArray(stringArray);
return new Audios(audiosHandle);
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (_disposed)
{
return;
}
NativeMethods.OgaDestroyAudios(_audiosHandle);
_audiosHandle = IntPtr.Zero;
_disposed = true;
}
}
}
7 changes: 7 additions & 0 deletions src/csharp/NativeMethods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -276,9 +276,16 @@ public static extern UIntPtr OgaSequencesGetSequenceCount(IntPtr /* const OgaSeq
public static extern IntPtr /* OgaResult* */ OgaLoadImages(IntPtr /* const OgaStringArray* */ imagePaths,
out IntPtr /* const OgaImages** */ images);

[DllImport(NativeLib.DllName, CallingConvention = CallingConvention.Winapi)]
public static extern IntPtr /* OgaResult* */ OgaLoadAudios(IntPtr /* const OgaStringArray* */ audioPaths,
out IntPtr /* const OgaAudios** */ audios);

[DllImport(NativeLib.DllName, CallingConvention = CallingConvention.Winapi)]
public static extern void OgaDestroyImages(IntPtr /* OgaImages* */ images);

[DllImport(NativeLib.DllName, CallingConvention = CallingConvention.Winapi)]
public static extern void OgaDestroyAudios(IntPtr /* OgaAudios* */ audios);

[DllImport(NativeLib.DllName, CallingConvention = CallingConvention.Winapi)]
public static extern void OgaDestroyNamedTensors(IntPtr /* OgaNamedTensors* */ namedTensors);

Expand Down

0 comments on commit 321b1c5

Please sign in to comment.