Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }