private SafeCoTaskMemHandle CreateHeifWriter() { if (!this.stream.CanWrite) { throw new IOException(Resources.StreamCannotWrite); } this.writerErrors = new WriterErrors(); var writerHandle = SafeCoTaskMemHandle.Allocate(MarshalHelper.SizeOf <heif_writer>()); unsafe { var writer = (heif_writer *)writerHandle.DangerousGetHandle(); writer->heif_writer_version = 1; writer->write = Marshal.GetFunctionPointerForDelegate(this.writeDelegate); } return(writerHandle); }
protected HeifWriter() { this.heifWriterHandle = new DisposableLazy <SafeCoTaskMemHandle>(CreateHeifWriter); this.writerErrors = new WriterErrors(); this.writeDelegate = Write; }