Buffering Input Data from a Touch or Pen-based Computer
Original Publication Date: 2000-Mar-01
Included in the Prior Art Database: 2003-Jun-19
Disclosed is a plurality of memory buffers allocated from shared memory which is addressable by all applications in a pen or touch-based computer system. In the preferred embodiment, individual buffers are allocated to store pen/touch sensor resolution coordinates, display resolution coordinates, standard resolution (1/1000") coordinates, ink coordinates, auxiliary pen data and stroke information. These buffers consume in excess of 1 MB of RAM in the aggregate when the shared memory is allocated at system startup, however a minimum (typically 32KB) of the shared memory is actually committed which drastically reduces the amount of system working store. The size of the buffer pool is empirically derived. The 1 MB of memory allocated by present embodiment stores approximately 1365 strokes which equate to roughly 1000 handwritten characters requiring 40,000 ink points. Any single stroke can be up to 8000 points in length. Eight thousand points is equivalent to holding the pen down for 1 minute and 20 seconds which is reasonable if the user is drawing or shading. The minimum and maximum size of each buffer is predetermined with the minimum sufficient to store any gesture and up to 12 text characters. As the user continues to write, the buffers are grown real-time by committing more memory. Once writing has ceased and recognition is performed, the extra memory is gradually decommitted until memory is once again at its mimimum commitment size. In order to reduce the number of commitment/decommitment cycles, a 'high water' mark is tracked for each buffer. As long as the user is actively writing. the extra memory required to buffer the additional stroke input stays committed. As the user continues to write or draw and the six buffers are nearing fullness, more memory is added to each buffer, one at a time, in a staggered commitment scheme. Committing memory requires the operating system to swap out old memory pages and swap in the newly committed pages which could potentially delay the processing of pen points which are arriving at a typical periodicity of 10 milliseconds. By ensuring that no more than 1 buffer is grown at a time, the total delay incurred by swapping in memory pages for the total 6 buffers, roughly 48 milliseconds, is spread out over 450 milliseconds so that the gathering and inking of pen points continues smoothly, without preemption. The buffer management remains indiscernible to the end-user. Thusly, the user is able to write a full display screen of characters, 1) without pausing for recognition, 2) with no loss of input and 3) no disruption in the flow of ink from the tip of the stylus or finger.