MIL_ID SystemId, | //in |
MIL_INT SizeX, | //in |
MIL_INT SizeY, | //in |
MIL_INT Type, | //in |
MIL_INT64 Attribute, | //in |
MIL_ID *BufIdPtr | //out |
This function allocates a two-dimensional 1-band data buffer on the specified system.
After allocating a buffer, we recommend that you check if the operation was successful, using MappGetError() or by verifying that the buffer identifier returned is not M_NULL.
When a buffer is no longer required, release it, using MbufFree().
Specifies the MIL system on which to allocate the buffer. This parameter should be set to one of the following values:
For specifying the MIL
system
|
|||||||||||||||||||||||||||||||||||||||
Value | Description
|
||||||||||||||||||||||||||||||||||||||
M_DEFAULT_HOST |
Specifies the default Host system of the current MIL application. |
||||||||||||||||||||||||||||||||||||||
MIL system identifier |
Specifies a valid system identifier, previously allocated using MsysAlloc(). |
Specifies the buffer width. The units are determined by the selected buffer attribute. For example, if the buffer has an image buffer attribute, specify the width in pixels.
When dealing with monochrome (1-band) buffers, the buffer width must be a multiple of 4.
Specifies the buffer height. The units are determined by the selected buffer attribute. For example, if the buffer has an image buffer attribute, specify the height in pixels.
Specifies a combination of two values: the depth and type of the data. Specify the depth of the buffer as one of the following:
For the data depth of the
buffer
|
|||||||||||||||||||||||||||||||||||||||
Value | Description
|
||||||||||||||||||||||||||||||||||||||
1 + |
Specifies a 1-bit (packed binary) buffer. (more details...) |
||||||||||||||||||||||||||||||||||||||
8 + |
Specifies an 8-bit buffer. |
||||||||||||||||||||||||||||||||||||||
16 + |
Specifies a 16-bit buffer. |
||||||||||||||||||||||||||||||||||||||
32 + |
Specifies a 32-bit buffer. |
You can add one of the following values to the above-mentioned values to set the data type.
Supported data types depend on the specified depth.
For specifying the data type of the
buffer
|
|||||||||||||||||||||||||||||||||||||||
Combination value | Description
|
||||||||||||||||||||||||||||||||||||||
M_FLOAT |
Specifies that the type of data is floating-point. (more details...) |
||||||||||||||||||||||||||||||||||||||
M_SIGNED |
Specifies that the type of data is signed. (more details...) |
||||||||||||||||||||||||||||||||||||||
M_UNSIGNED |
Specifies that the type of data is unsigned. (more details...) |
Specifies the buffer usage. MIL uses this information to determine where to allocate the buffer in physical memory.
Set this parameter to one of the following values:
For specifying the buffer
usage
|
|||||||||||||||||||||||||||||||||||||||
Value |
Description
|
MIL system-specific tooltip (†) |
|||||||||||||||||||||||||||||||||||||
M_ARRAY + |
Specifies a buffer to store array type data. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
M_IMAGE + |
Specifies a buffer to store image data. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
MIL system specific | |||||||||||||||||||||||||||||||||||||||
Only single-band (monochrome) buffers with a depth of 8 or 16 bits can have an M_IMAGE attribute. |
† | d | |||||||||||||||||||||||||||||||||||||
M_KERNEL + |
[For
essential MIL-Lite information, see remarks ]
Specifies a kernel buffer to store a custom filter for convolution functions. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
M_LUT + |
Specifies a buffer to store lookup table data. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
M_STRUCT_ELEMENT + |
[For
essential MIL-Lite information, see remarks ]
Specifies a buffer to store structuring element data for morphology functions. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s |
You must add one or more of the following values to the above-mentioned value to set the intended purpose of the image buffer.
For specifying the intended purpose of
the image buffer
|
|||||||||||||||||||||||||||||||||||||||
Combination value |
Description
|
MIL system-specific tooltip (†) |
|||||||||||||||||||||||||||||||||||||
M_COMPRESS + |
[For
essential MIL-Lite information, see remarks ]
Specifies an image buffer that can hold compressed data. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
M_DISP |
Specifies an image buffer that can be displayed. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
MIL system specific | |||||||||||||||||||||||||||||||||||||||
Single-band display buffers with a depth greater than 16 bits cannot be allocated. 3-band display buffers can only be allocated with 8 bits per band. |
† | f | |||||||||||||||||||||||||||||||||||||
M_GRAB |
Specifies an image buffer in which to grab data. (more details...) |
† | a | b | c | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | |||||||||||||||||||
MIL system specific | |||||||||||||||||||||||||||||||||||||||
Only single-band (monochrome) buffers with a depth of 8 or 16 bits can have an M_GRAB attribute. |
† | c | j | k | l | m | o | p | q | r | s | ||||||||||||||||||||||||||||
Only single-band (monochrome) buffers with a depth of 8 bits can have an M_GRAB attribute. |
† | b | f | g | h | n | |||||||||||||||||||||||||||||||||
M_PROC + |
Specifies an image buffer that can be processed. |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s |
You can add the following value to the above-mentioned value to set the allocation of an overscan region.
This overrides the MsysControl() M_ALLOCATION_OVERSCAN system control setting and forces the allocation of an overscan region. When this attribute is set, the setting of the M_ALLOCATION_OVERSCAN_SIZE system control determines the size of the overscan region and the M_ALLOCATION_OVERSCAN setting is ignored.
Note that this attribute is only useful when added to a buffer on which you want to perform neighborhood processing operations.
For allocating an overscan
region
|
|||||||||||||||||||||||||||||||||||||||
Combination value | Description
|
||||||||||||||||||||||||||||||||||||||
M_ALLOCATION_OVERSCAN |
Specifies that the buffer is allocated with an overscan region. (more details...) |
You can add one of the following values to the above-mentioned value to set the compression type.
The image buffer's data depth dictates which compression type can be selected.
For specifying the compression
type INQ
|
|||||||||||||||||||||||||||||||||||||||
Combination value | Description
|
||||||||||||||||||||||||||||||||||||||
M_JPEG2000_LOSSLESS |
[For
essential MIL-Lite information, see remarks ]
Specifies that the buffer will be used to hold JPEG2000 lossless data. (more details...) |
||||||||||||||||||||||||||||||||||||||
M_JPEG2000_LOSSY |
[For
essential MIL-Lite information, see remarks ]
Specifies that the buffer will be used to hold JPEG2000 lossy data. (more details...) |
||||||||||||||||||||||||||||||||||||||
M_JPEG_LOSSLESS |
[For
essential MIL-Lite information, see remarks ]
Specifies that the buffer will be used to hold JPEG lossless data. (more details...) |
||||||||||||||||||||||||||||||||||||||
M_JPEG_LOSSLESS_INTERLACED |
[For
essential MIL-Lite information, see remarks ]
Specifies that the buffer will be used to hold JPEG lossless data in separate fields. (more details...) |
||||||||||||||||||||||||||||||||||||||
M_JPEG_LOSSY |
[For
essential MIL-Lite information, see remarks ]
Specifies that the buffer will be used to hold JPEG lossy data. (more details...) |
||||||||||||||||||||||||||||||||||||||
M_JPEG_LOSSY_INTERLACED |
[For
essential MIL-Lite information, see remarks ]
Specifies that the buffer will be used to hold JPEG lossy data in separate fields. (more details...) |
You can add one of the following values to the above-mentioned value to set a storage format and a location specifier.
MIL automatically selects the most appropriate storage format according to the specified intended usage attribute. For general processing, MIL will convert the data when the function requires a different format. If the default storage format is not appropriate and you want to avoid conversion during a time critical operation, you can add a storage format and a location specifier.
For specifying a storage format and a
location specifier
|
|||||||||||||||||||||||||||||||||||||||
Combination value | Description
|
MIL system-specific tooltip (†) |
|||||||||||||||||||||||||||||||||||||
M_DIB | † | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | |||||||||||||||||||
M_DIRECTX |
[This is
only applicable to Windows]
Forces the buffer to be a DirectX surface. |
† | a | b | c | d | e | g | h | i | j | k | l | m | n | o | p | q | r | s | |||||||||||||||||||
M_GDI |
Forces the buffer to be compatible with GDI. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
M_LINUX_MXIMAGE |
[This is
only applicable to Linux]
Forces the buffer to be an X11 Ximage. |
† | a | b | c | d | e | g | h | i | j | k | l | m | n | o | p | q | r | s |
You can add the following value to the above-mentioned values to specify that the buffer is FPGA accessible.
Note that the following value cannot be used with M_COMPRESS or values in the For specifying a storage format and a location specifier table.
For specifying that the buffer is
FPGA accessible
|
|||||||||||||||||||||||||||||||||||||||
Combination value | Description
|
MIL system-specific tooltip (†) |
|||||||||||||||||||||||||||||||||||||
M_FPGA_ACCESSIBLE + |
Forces the buffer to be allocated in a bank of memory that is accessible from the Processing FPGA. (more details...) |
† | j | l | m | p | r |
You can add one of the following values to the above-mentioned values to set a location for a buffer.
For specifying a location for a
buffer
|
|||||||||||||||||||||||||||||||||||||||
Combination value |
Description
|
MIL system-specific tooltip (†) |
|||||||||||||||||||||||||||||||||||||
M_HOST_MEMORY + |
Forces the buffer in Host memory. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
MIL system specific | |||||||||||||||||||||||||||||||||||||||
This is a MIL system specific default value. | † | a | b | c | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||||
M_MAPPABLE |
Forces the buffer to be allocated in non-paged memory that can be set in the address space of the process (Host memory). (more details...) |
† | a | b | c | e | f | g | h | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||||
M_OFF_BOARD |
Ensures that the buffer is not in on-board memory. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
MIL system specific | |||||||||||||||||||||||||||||||||||||||
To ensure that an M_OFF_BOARD buffer can be used by the bus master transfer section of the board, the buffer must be allocated in non-paged memory (M_OFF_BOARD + M_NON_PAGED or M_HOST_MEMORY + M_NON_PAGED). |
† | f | g | h | j | k | l | m | n | p | q | r | |||||||||||||||||||||||||||
M_ON_BOARD + |
Forces the buffer in on-board memory. (more details...) |
† | f | g | h | i | j | k | l | m | n | p | q | r | |||||||||||||||||||||||||
MIL system specific | |||||||||||||||||||||||||||||||||||||||
By default, all on-board buffers are allocated in memory that is not mapped on the PCI bus. This unshared memory cannot be accessed by the Host or any system other than the one on which it was allocated. See combination values below (M_SHARED) to change this default behavior. |
† | j | k | l | m | p | q | r | |||||||||||||||||||||||||||||||
This is only available for grab buffers (M_GRAB). |
† | f | |||||||||||||||||||||||||||||||||||||
This is only available for image buffers (M_IMAGE). |
† | g | h | i | k | n | |||||||||||||||||||||||||||||||||
This is only available for image (M_IMAGE) and LUT buffers (M_LUT). |
† | j | l | m | p | q | r | ||||||||||||||||||||||||||||||||
M_VIDEO_MEMORY |
[This is
only applicable to Windows]
Forces the buffer in (off-screen) display memory of your graphics controller. (more details...) |
† | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | ||||||||||||||||||
MIL system specific | |||||||||||||||||||||||||||||||||||||||
Buffers cannot be allocated in display memory when any of the following attributes are used: M_COMPRESS, M_DIB, M_GDI, or M_NON_PAGED. |
† | d | |||||||||||||||||||||||||||||||||||||
This is a MIL system specific default value. | † | d |
You can add the following value to the above-mentioned values to specify a memory bank to be used.
For specifying a memory bank to
be used
|
||||||||||||||||||||||||||||||||||||||||||
Combination value |
Description
|
MIL system-specific tooltip (†) |
||||||||||||||||||||||||||||||||||||||||
M_MEMORY_BANK_n |
Forces the buffer to be allocated in the specified memory bank. (more details...) |
† | † | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | |
Operating system specific | ||||||||||||||||||||||||||||||||||||||||||
[This is
only applicable to Windows]
Valid values for n are between 0 and 6, inclusive. However, not all memory banks are necessarily present on a given system. Typically, if there is more than 1 memory bank, it is NUMA-enabled. Note that, to ensure that you are accessing a NUMA-enabled memory bank, you must specify the M_HOST_MEMORY combination value. To determine the actual number of memory banks available on the MIL system, use MappInquireMp() with M_MEMORY_BANK_NUM and MappInquireMp() with M_MEMORY_BANK_AFFINITY_MASK. For more information, refer to the NUMA Support subsection of the Transparent multi-core use section of Chapter 30: Multi-processing, multi-core, and multi-threading. Note that this value cannot be used with M_COMPRESS or M_NON_PAGED. Also note that the combination of M_HOST_MEMORY with this value, in paged memory, is only useful when doing multi-core processing on a Host system. |
||||||||||||||||||||||||||||||||||||||||||
[This is
only applicable to Linux]
Note that this value is not available with the M_HOST_MEMORY combination value. |
||||||||||||||||||||||||||||||||||||||||||
MIL system specific | ||||||||||||||||||||||||||||||||||||||||||
Valid values for n are between 0 and 1, inclusive. Refer to your MIL Hardware-specific Notes for more information about on-board memory. Note that, to assure you are accessing an on-board memory bank, you must specify the M_ON_BOARD combination value.
|
† | j | p | r | ||||||||||||||||||||||||||||||||||||||
In this case, n must be set to 0. This is the default memory bank for an on-board buffer created with the M_GRAB attribute. Refer to your MIL Hardware-specific Notes for more information about on-board memory. Note that, to assure you are accessing an on-board memory bank, you must specify the M_ON_BOARD combination value. |
† | k | q | |||||||||||||||||||||||||||||||||||||||
Valid values for n are between 0 and 2, inclusive. Refer to your MIL Hardware-specific Notes for more information about on-board memory. Note that, to assure you are accessing an on-board memory bank, you must specify the M_ON_BOARD combination value.
|
† | l | m |
You can add one of the following values to the above-mentioned values to set a location in a specific type of memory.
For specifying a location in a
specific type of memory
|
|||||||||||||||||||||||||||||||||||||||
Combination value |
Description
|
MIL system-specific tooltip (†) |
|||||||||||||||||||||||||||||||||||||
M_FAST_MEMORY |
Specifies that the buffer is in the fastest memory available. (more details...) |
† | j | l | m | p | r | ||||||||||||||||||||||||||||||||
MIL system specific | |||||||||||||||||||||||||||||||||||||||
For Matrox Solios eA/XA and eCL/XCL, the fasted memory available is the SRAM. If SRAM is not present on your Matrox Solios, SDRAM will be used instead. This value is typically the same as using M_MEMORY_BANK_2. |
† | l | m | ||||||||||||||||||||||||||||||||||||
For Matrox Radient, the fasted memory available is the SRAM. If SRAM is not present on your Matrox Radient, SDRAM will be used instead. This value is typically the same as using M_MEMORY_BANK_1. |
† | j | p | r | |||||||||||||||||||||||||||||||||||
M_SHARED |
Specifies that the buffer is in shared processing memory. (more details...) |
† | j | k | l | m | p | q | r |
You can add one of the following values to the above-mentioned values to set the attribute of the specified physical memory type.
For specifying the attribute of
the specified physical memory type
|
|||||||||||||||||||||||||||||||||||||||
Combination value | Description
|
||||||||||||||||||||||||||||||||||||||
M_NON_PAGED |
Forces the buffer in MIL-reserved, non-pageable memory. |
||||||||||||||||||||||||||||||||||||||
M_PAGED |
Forces the buffer in pageable memory. |
Header | Include mil.h. |
Library | Use mil.lib. |
DLL | Requires mil.dll. |