public AssTrack CreateTrack(AssLibrary library) { byte[] data; if (_data == null) { data = _encoding.GetBytes(_str); _data = data; } else { data = _data; } IntPtr trackPtr; unsafe { fixed(byte *bufferPtr = data) { var buffer = new IntPtr(bufferPtr); trackPtr = NativeMethods.ass_read_memory(library.NativePointer, buffer, data.Length, _codePage); } } if (trackPtr == IntPtr.Zero) { throw new AssException("Cannot create track from memory"); } return(new AssTrack(trackPtr)); }
public AssTrack CreateTrack(AssLibrary library) { var trackPtr = NativeMethods.ass_read_file(library.NativePointer, _fileName, _codePage); if (trackPtr == IntPtr.Zero) { throw new AssException("Cannot create track from file"); } return(new AssTrack(trackPtr)); }
public AssTrack CreateTrack(AssLibrary library) { var buffer = Marshal.AllocHGlobal(_data.Length); Marshal.Copy(_data, 0, buffer, _data.Length); var trackPtr = NativeMethods.ass_read_memory(library.NativePointer, buffer, _data.Length, _codePage); Marshal.FreeHGlobal(buffer); if (trackPtr == IntPtr.Zero) { throw new AssException("Cannot create track from memory"); } return(new AssTrack(trackPtr)); }