[sane-devel] SANE2 standard revisited: image data format

Matto Marjanovic maddog@mir.com
Mon, 9 Dec 2002 18:21:30 -0500


 >On Monday 09 December 2002 17:51, Matto Marjanovic wrote:
 >
 >> So, how about this:  remove the "frames" concept altogether.  The whole
 >>  notion of calling start_scan() repeatedly to scan the same document was
 >>  always rather gruesome anyway.
 >
 >Hello Matto,
 >this is very similar to the frame type. In fact you do not change a lot with
 >this. When we want to remove the frames then I suggest to do it right:
 >only channel-interleaved data, no planes in SANE_(FRAME_)RAW.

Hi, Oliver,

The difference isn't so much the data format as the code flow:  all the
 planar data is returned after a single sane_start(), and the multi-frame
 flags for determining which 'frame' is currently being scanned can be
 removed from the standard.

 >In fact this makes the sane standard more simple. Three pass scanners
 >are not produced any more.

But people still keep using them (and sending bug reports).  :)

I think there is still some utility to a planar transfer mode, because 
 it might allow the backend to stay really lightweight.  (That telescope
 you mention below may send planar data, and it might be hooked up to a
 lonely embedded SANE server off on a mountain top....)

 >But we have to keep in mind that sane is not only made for scanners.
 >There may be e.g. a telescope that produces a visible image
 >(may be RGB, may be CMYK) and also additional infrared or
 >ultra-violett data. We still need a way to transmit such data!

I understand, and it's not an issue.
The PLANAR mode would still have N channels, just transmitted one channel 
 at a time instead of sample-interleaved.

I envision three SANE_Frame types:

  o SANE_FRAME_PACKED  --- sample-interleaved channels, following all the
                            current RAW specs.
  o SANE_FRAME_PLANAR  --- planar channels, following all the current RAW
                            specs.
  o SANE_FRAME_MIME    --- opaque image data, with a MIME type.

Each sane_start() cycle would return a single frame, and each frame would
 be a complete image.

-matt m.