Saturday, May 29, 2004

ONL & MIL for Matrox

The Native Library for Matrox Odyssey is a board-specific library that consists of
an extensive set of functions for image processing and specialized operations such
as the scheduling and synchronization of parallel operations. It provides explicit
control over grabbing, processing, and transferring to the Host. The library was
designed for the efficient use of the Matrox Odyssey board, as well as for fast
application development.
The Odyssey Native Library (ONL) is a C-callable library (C-binding) that runs
on the Host platform. It is simply a set of small stub functions, one for each
function supported by the board. Each function prepares a "message" that consists of an operation code (opcode) and various optional parameters. Messages are sent to the board to perform a specific operation.
You can write Matrox Odyssey applications using either ONL, or the
hardware-independent Matrox Imaging Library (MIL). Your specific application
requirements will determine whether the best solution for you is MIL, ONL, or
a combination of both. Some of the factors affecting the decision are listed below.
Reasons for using MIL:
- You need to use some functionality that is only available in MIL. Typically, this
would mean high-level functions, such as certain pattern recognition
operations, OCR, bar and matrix code recognition, or JPEG2000.
- You are porting an existing MIL application to Matrox Odyssey, or you simply
want your current application to be portable between different Matrox boards.
Reasons for using ONL:
- You are porting an existing Genesis Native Library application to Matrox
Odyssey.
- You need to use some functionality that is only available in ONL. For example,
functions which control some of the more specialized features of the hardware.
- You want to use the ONL DTK low-level processing API, which simplifies the
task of writing your own processing functions for the G4 PowerPC and the
Pixel Accelerator.

You can mix MIL code and native (board-specific) code. So when one particular
library is best suited to your needs, but you also require some features of the other,
you can write a hybrid application. For example, you might choose this method
when:
• You want the bulk of your application to use MIL for portability, but you need to
make a few ONL calls.
• You have an existing ONL application and you want to add calls to a high-level
module that is only available in MIL.

No comments:

Post a Comment