User Guide > How to Work with... > Common Operations > Scanning > ISIS Scanning > Split a Pipe |
In addition to linking drivers into a single pipe, you can split a pipe so that the image data is sent to two destinations at the same time. This allows many possibilities; for example, an application that saves a 24-bit color image and a binary thumbnail image at the same time.
The function that splits a pipe is IG_ISIS_drv_split() . It is important to remember that IG_ISIS_drv_split() splits the input of one driver into the input of another driver.
ISIS drivers keep track of two handles: a child handle and a sibling handle. The child handle is the handle that gets linked from the output of the driver to the input of another driver in a linear ISIS pipe. The sibling handle is another handle that links the input of the driver to the input of another driver in a split pipe. Note in the diagram above that the split driver uses the other driver's sibling handle, not its child handle. You cannot split the output of a driver to the input of two drivers. The IG_ISIS_drv_link and IG_ISIS_drv_split functions that connect each driver are also shown in the diagram.
PIXDFLT makes each driver send its data to its siblings before the data is modified; therefore, the data goes to the siblings first. When all sibling splits have been satisfied, PIXDFLT then instructs the driver to send the processed data to its child (next driver). However, since data from scanners always arrives in chunks that are less than a page, the order that the data passes through a pipe with splits is almost never important to an application developer. Each chunk of data from its source (usually about 8K bytes) is processed through the entire pipe before the next chunk is received.