Shared XDM Definitions

Data Structures

struct  XDM_BufDesc
 Buffer descriptor for multiple buffers. More...
struct  XDM_SingleBufDesc
 Single buffer descriptor. More...
struct  XDM1_SingleBufDesc
 Single buffer descriptor. More...
struct  XDM1_BufDesc
 Buffer descriptor. More...
struct  XDM_AlgBufInfo
 Buffer information descriptor for input and output buffers. More...
struct  XDM_Date
 Date and time. More...
struct  XDM_Point
 2-dimensional point More...
struct  XDM_Rect
 Rectangle. More...
struct  XDM_ContextInfo
 Buffer information descriptor for input and output buffers. More...
struct  XDM_Context
 Context used by split codecs. More...

Defines

#define XDM_EOK   IALG_EOK
#define XDM_EFAIL   IALG_EFAIL
#define XDM_EUNSUPPORTED   -3
#define XDM_ERUNTIME   -2
 General runtime failure.
#define XDM_MAX_IO_BUFFERS   16
#define XDM_ISACCESSMODE_READ(x)   (((x) >> XDM_ACCESSMODE_READ) & 0x1)
 Check an access mask for CPU read access.
#define XDM_ISACCESSMODE_WRITE(x)   (((x) >> XDM_ACCESSMODE_WRITE) & 0x1)
 Check an access mask for CPU write access.
#define XDM_CLEARACCESSMODE_READ(x)   ((x) &= (~(0x1 << XDM_ACCESSMODE_READ)))
 Clear the "CPU read access" bit in an access mask.
#define XDM_CLEARACCESSMODE_WRITE(x)   ((x) &= (~(0x1 << XDM_ACCESSMODE_WRITE)))
 Clear the "CPU write access" bit in an access mask.
#define XDM_SETACCESSMODE_READ(x)   ((x) |= (0x1 << XDM_ACCESSMODE_READ))
 Set the bit to indicate CPU read access in an access mask.
#define XDM_SETACCESSMODE_WRITE(x)   ((x) |= (0x1 << XDM_ACCESSMODE_WRITE))
 Set the bit to indicate CPU write access in an access mask.
#define XDM_CUSTOMENUMBASE   0x100
 Base of algorithm-specific enum values.
#define XDM_CUSTOMCMDBASE   0x100
 Base of algorithm-specific commands.
#define XDM_ISFATALERROR(x)   (((x) >> XDM_FATALERROR) & 0x1)
#define XDM_ISUNSUPPORTEDPARAM(x)   (((x) >> XDM_UNSUPPORTEDPARAM) & 0x1)
#define XDM_ISUNSUPPORTEDINPUT(x)   (((x) >> XDM_UNSUPPORTEDINPUT) & 0x1)
#define XDM_ISCORRUPTEDHEADER(x)   (((x) >> XDM_CORRUPTEDHEADER) & 0x1)
#define XDM_ISCORRUPTEDDATA(x)   (((x) >> XDM_CORRUPTEDDATA) & 0x1)
#define XDM_ISINSUFFICIENTDATA(x)   (((x) >> XDM_INSUFFICIENTDATA) & 0x1)
#define XDM_ISAPPLIEDCONCEALMENT(x)   (((x) >> XDM_APPLIEDCONCEALMENT) & 0x1)
#define XDM_SETFATALERROR(x)   ((x) |= (0x1 << XDM_FATALERROR))
#define XDM_SETUNSUPPORTEDPARAM(x)   ((x) |= (0x1 << XDM_UNSUPPORTEDPARAM))
#define XDM_SETUNSUPPORTEDINPUT(x)   ((x) |= (0x1 << XDM_UNSUPPORTEDINPUT))
#define XDM_SETCORRUPTEDHEADER(x)   ((x) |= (0x1 << XDM_CORRUPTEDHEADER))
#define XDM_SETCORRUPTEDDATA(x)   ((x) |= (0x1 << XDM_CORRUPTEDDATA))
#define XDM_SETINSUFFICIENTDATA(x)   ((x) |= (0x1 << XDM_INSUFFICIENTDATA))
#define XDM_SETAPPLIEDCONCEALMENT(x)   ((x) |= (0x1 << XDM_APPLIEDCONCEALMENT))
#define XDM_MAX_CONTEXT_BUFFERS   32
 Maximum number of context buffers.

Enumerations

enum  XDM_AccessMode {
  XDM_ACCESSMODE_READ = 0,
  XDM_ACCESSMODE_WRITE = 1
}
 

Access modes used to declare how the algorithm accessed buffers.

More...
enum  XDM_CmdId {
  XDM_GETSTATUS = 0,
  XDM_SETPARAMS = 1,
  XDM_RESET = 2,
  XDM_SETDEFAULT = 3,
  XDM_FLUSH = 4,
  XDM_GETBUFINFO = 5,
  XDM_GETVERSION = 6,
  XDM_GETCONTEXTINFO = 7
}
 

Standard control commands that must be implemented by XDM compliant multimedia algorithms.

More...
enum  XDM_ErrorBit {
  XDM_PARAMSCHANGE = 8,
  XDM_APPLIEDCONCEALMENT = 9,
  XDM_INSUFFICIENTDATA = 10,
  XDM_CORRUPTEDDATA = 11,
  XDM_CORRUPTEDHEADER = 12,
  XDM_UNSUPPORTEDINPUT = 13,
  XDM_UNSUPPORTEDPARAM = 14,
  XDM_FATALERROR = 15
}
 

Extended error information.

More...
enum  XDM_DataFormat {
  XDM_BYTE = 1,
  XDM_LE_16 = 2,
  XDM_LE_32 = 3,
  XDM_LE_64 = 4,
  XDM_BE_16 = 5,
  XDM_BE_32 = 6,
  XDM_BE_64 = 7
}
 

Endianness of data.

More...
enum  XDM_EncodingPreset {
  XDM_DEFAULT = 0,
  XDM_HIGH_QUALITY = 1,
  XDM_HIGH_SPEED = 2,
  XDM_USER_DEFINED = 3
}
 

Encoding presets.

More...
enum  XDM_DecMode {
  XDM_DECODE_AU = 0,
  XDM_PARSE_HEADER = 1
}
 

Decode entire access unit or only header.

More...
enum  XDM_EncMode {
  XDM_ENCODE_AU = 0,
  XDM_GENERATE_HEADER = 1
}
 

Encode entire access unit or only header.

More...
enum  XDM_ChromaFormat {
  XDM_CHROMA_NA = -1,
  XDM_YUV_420P = 1,
  XDM_YUV_422P = 2,
  XDM_YUV_422IBE = 3,
  XDM_YUV_422ILE = 4,
  XDM_YUV_444P = 5,
  XDM_YUV_411P = 6,
  XDM_GRAY = 7,
  XDM_RGB = 8,
  XDM_YUV_420SP = 9,
  XDM_ARGB8888 = 10,
  XDM_RGB555 = 11,
  XDM_RGB565 = 12,
  XDM_YUV_444ILE = 13,
  XDM_CHROMAFORMAT_DEFAULT = XDM_YUV_422ILE
}
 

Chroma formats.

More...

Detailed Description

This is the XDM interface.


Define Documentation

#define XDM_EOK   IALG_EOK

Success.

#define XDM_EFAIL   IALG_EFAIL

General failure.

#define XDM_EUNSUPPORTED   -3

Request is unsupported.

#define XDM_ERUNTIME   -2

General runtime failure.

Deprecated:
This is only supported on 0.9 XDM. To use it, you must define "XDM_INCLUDE_DOT9_SUPPORT". In XDM 1.00+, it is required that codecs return "EFAIL", as "ERUNTIME" is not supported.
#define XDM_MAX_IO_BUFFERS   16

Max I/O Buffers

#define XDM_ISACCESSMODE_READ (  )     (((x) >> XDM_ACCESSMODE_READ) & 0x1)

Check an access mask for CPU read access.

Parameters:
x access mask.
Remarks:
This is typically used by an application.
See also:
XDM1_SingleBufDesc::accessMask
XDM_ISACCESSMODE_WRITE
#define XDM_ISACCESSMODE_WRITE (  )     (((x) >> XDM_ACCESSMODE_WRITE) & 0x1)

Check an access mask for CPU write access.

Parameters:
x access mask.
Remarks:
This is typically used by an application.
See also:
XDM1_SingleBufDesc::accessMask
XDM_ISACCESSMODE_READ
#define XDM_CLEARACCESSMODE_READ (  )     ((x) &= (~(0x1 << XDM_ACCESSMODE_READ)))

Clear the "CPU read access" bit in an access mask.

Parameters:
x access mask.
Remarks:
This is typically used by an algorithm.
See also:
XDM_SETACCESSMODE_READ
XDM1_SingleBufDesc::accessMask
#define XDM_CLEARACCESSMODE_WRITE (  )     ((x) &= (~(0x1 << XDM_ACCESSMODE_WRITE)))

Clear the "CPU write access" bit in an access mask.

Parameters:
x access mask.
Remarks:
This is typically used by an algorithm.
See also:
XDM_SETACCESSMODE_WRITE
XDM1_SingleBufDesc::accessMask
#define XDM_SETACCESSMODE_READ (  )     ((x) |= (0x1 << XDM_ACCESSMODE_READ))

Set the bit to indicate CPU read access in an access mask.

Parameters:
x access mask.
Remarks:
This is typically used by an algorithm.
See also:
XDM1_SingleBufDesc::accessMask
#define XDM_SETACCESSMODE_WRITE (  )     ((x) |= (0x1 << XDM_ACCESSMODE_WRITE))

Set the bit to indicate CPU write access in an access mask.

Parameters:
x access mask.
Remarks:
This is typically used by an algorithm.
See also:
XDM1_SingleBufDesc::accessMask
#define XDM_CUSTOMENUMBASE   0x100

Base of algorithm-specific enum values.

Remarks:
This is provided to ensure that future updates to XDM-defined enumerations don't conflict with algorithm-proprietary enumerations.
Custom enumerations should be defined like the following (USERENUM0 and USERENUM1 are simply examples):
  #define MYMODULE_MYVENDOR_USERENUM0 (XDM_CUSTOMENUMBASE + 0)
  #define MYMODULE_MYVENDOR_USERENUM1 (XDM_CUSTOMENUMBASE + 1)
#define XDM_CUSTOMCMDBASE   0x100

Base of algorithm-specific commands.

Remarks:
This is provided to ensure that future updates to XDM_CmdId's enumeration don't conflict with algorithm-proprietary command ID's.
Custom command ID's should be defined like the following (USERCMD0 and USERCMD1 are simply examples):
  #define MYMODULE_MYVENDOR_USERCMD0 (XDM_CUSTOMCMDBASE + 0)
  #define MYMODULE_MYVENDOR_USERCMD1 (XDM_CUSTOMCMDBASE + 1)
See also:
XDM_CmdId
#define XDM_ISFATALERROR (  )     (((x) >> XDM_FATALERROR) & 0x1)

Check for fatal error

#define XDM_ISUNSUPPORTEDPARAM (  )     (((x) >> XDM_UNSUPPORTEDPARAM) & 0x1)

Check for unsupported parameter

#define XDM_ISUNSUPPORTEDINPUT (  )     (((x) >> XDM_UNSUPPORTEDINPUT) & 0x1)

Check for unsupported input

#define XDM_ISCORRUPTEDHEADER (  )     (((x) >> XDM_CORRUPTEDHEADER) & 0x1)

Check for corrupted header

#define XDM_ISCORRUPTEDDATA (  )     (((x) >> XDM_CORRUPTEDDATA) & 0x1)

Check for corrupted data

#define XDM_ISINSUFFICIENTDATA (  )     (((x) >> XDM_INSUFFICIENTDATA) & 0x1)

Check for insufficient data

#define XDM_ISAPPLIEDCONCEALMENT (  )     (((x) >> XDM_APPLIEDCONCEALMENT) & 0x1)

Check for applied concealment

#define XDM_SETFATALERROR (  )     ((x) |= (0x1 << XDM_FATALERROR))

Set fatal error bit

#define XDM_SETUNSUPPORTEDPARAM (  )     ((x) |= (0x1 << XDM_UNSUPPORTEDPARAM))

Set unsupported parameter bit

#define XDM_SETUNSUPPORTEDINPUT (  )     ((x) |= (0x1 << XDM_UNSUPPORTEDINPUT))

Set unsupported input bit

#define XDM_SETCORRUPTEDHEADER (  )     ((x) |= (0x1 << XDM_CORRUPTEDHEADER))

Set corrupted header bit

#define XDM_SETCORRUPTEDDATA (  )     ((x) |= (0x1 << XDM_CORRUPTEDDATA))

Set corrupted data bit

#define XDM_SETINSUFFICIENTDATA (  )     ((x) |= (0x1 << XDM_INSUFFICIENTDATA))

Set insufficient data bit

#define XDM_SETAPPLIEDCONCEALMENT (  )     ((x) |= (0x1 << XDM_APPLIEDCONCEALMENT))

Set applied concealment bit

#define XDM_MAX_CONTEXT_BUFFERS   32

Maximum number of context buffers.


Enumeration Type Documentation

Access modes used to declare how the algorithm accessed buffers.

Remarks:
This indicates how the algorithm's CPU accessed the buffer, independent of DMA or other hardware accellerators. For example, if the buffer was written to with DMA (as opposed to writing to the buffer with the CPU write instructions), the algorithm should not set the XDM_ACCESSMODE_WRITE bit.
The value of the enum is the bit offset into a mask. The value of the enum is not the value to assign the mask.
This enumeration data type should not be used for storage, but rather only for its constant values.
See also:
XDM1_SingleBufDesc
XDM1_BufDesc
Enumerator:
XDM_ACCESSMODE_READ 

The algorithm read from the buffer using the CPU.

See also:
XDM_SETACCESSMODE_READ
XDM_ISACCESSMODE_READ
XDM_ACCESSMODE_WRITE 

The algorithm wrote to the buffer using the CPU.

See also:
XDM_SETACCESSMODE_WRITE
XDM_ISACCESSMODE_WRITE
enum XDM_CmdId

Standard control commands that must be implemented by XDM compliant multimedia algorithms.

Remarks:
If an algorithm receives a command it doesn't handle or understand, it must return EUNSUPPORTED.
XDM_GETCONTEXTINFO need only be implemented by split codecs. Standard algorithms should return EUNSUPPORTED if they receive the XDM_GETCONTEXTINFO command.
Any control ID extension in IMOD interface should start from XDM_CUSTOMCMDBASE onward. The ID range from 0 to XDM_CUSTOMCMDBASE is reserved.
This enumeration data type should not be used for storage, but rather only for its constant values.
See also:
XDM_CUSTOMCMDBASE
Enumerator:
XDM_GETSTATUS 

Query algorithm to fill status structure.

XDM_SETPARAMS 

Set run time dynamic parameters.

XDM_RESET 

Reset the algorithm. All fields in the internal data structures are reset and all internal buffers are flushed.

XDM_SETDEFAULT 

Restore the algorithm's internal state to its original, default values.

Remarks:
The application only needs to initialize the dynamicParams.size and status.size fields prior to calling control() with XDM_SETDEFAULT.
The algorithm must only write to the status.extendedError field, and potentially algorithm specific, extended fields.
XDM_SETDEFAULT differs from XDM_RESET. In addition to restoring the algorithm's internal state, XDM_RESET additionally resets any channel related state.
XDM_FLUSH 

Handle end of stream conditions. This command forces the algorithm to output data without additional input. The recommended sequence is to call the control() function (with XDM_FLUSH) followed by repeated calls to the process() function until it returns an error.

Remarks:
The algorithm should return the appropriate, class-specific "EFAIL" error (e.g. ISPHDEC1_EFAIL, IVIDENC1_EFAIL, etc), when flushing is complete.
XDM_GETBUFINFO 

Query algorithm instance regarding its properties of input and output buffers.

Remarks:
The application only needs to initialize the dynamicParams.size, the status.size, and set any buffer descriptor fields (e.g. status.data) to NULL prior to calling control() with XDM_GETBUFINFO.
XDM_GETVERSION 

Query the algorithm's version. The result will be returned in the data field of the respective _Status structure.

Remarks:
There is no specific format defined for version returned by the algorithm.
XDM_GETCONTEXTINFO 

Query a split codec part for its context needs.

Remarks:
Only split codecs are required to implement this command.

Extended error information.

Remarks:
When an internal error occurs, the algorithm will return an error return value (e.g. EFAIL, EUNSUPPORTED)
The value of each enum is the bit which is set.
Bits 31-16 are reserved. Bits 7-0 are codec and implementation specific.
The algorithm can set multiple bits to 1 based on conditions. e.g. it will set bits XDM_FATALERROR (fatal) and XDM_UNSUPPORTEDPARAM (unsupported params) in case of unsupported run time parameters.
This enumeration data type should not be used for storage, but rather only for its constant values.
Enumerator:
XDM_PARAMSCHANGE 

Bit 8 - Sequence Parameters Change.

Remarks:
This error is applicable for transcoders. It is set when some key parameter of the input sequence changes. The transcoder simply returns after setting this error field and the correct input sequence parameters are updated in outArgs.
XDM_APPLIEDCONCEALMENT 

Bit 9 - Applied concealment.

Remarks:
This error is applicable for decoders. It is set when the decoder was not able to able to decode the bitstream, and the decoder has concealed the bitstream error and produced the concealed output.
XDM_INSUFFICIENTDATA 

Bit 10 - Insufficient input data.

Remarks:
This error is typically applicable for decoders. This is set when the input data provided is not sufficient to produce of one frame of data. This can be also be set for encoders when the number of valid samples in the input frame is not sufficient to process a frame.
XDM_CORRUPTEDDATA 

Bit 11 - Data problem/corruption.

Remarks:
This error is typically applicable for decoders. This is set when the bitstream has an error and not compliant to the standard syntax.
XDM_CORRUPTEDHEADER 

Bit 12 - Header problem/corruption.

Remarks:
This error is typically applicable for decoders. This is set when the header information in the bitstream is incorrect. For example, it is set when Sequence/Picture/Slice etc. are incorrect in video decoders.
XDM_UNSUPPORTEDINPUT 

Bit 13 - Unsupported feature/parameter in input.

Remarks:
This error is set when the algorithm is not able process a certain input data/bitstream format. It can also be set when a subset of features in a standard are not supported by the algorithm.
For example, if a video encoder only supports 4:2:2 format, it can set this error for any other type of input video format.
XDM_UNSUPPORTEDPARAM 

Bit 14 - Unsupported input parameter or configuration.

Remarks:
This error is set when the algorithm doesn't support certain configurable parameters. For example, if the video decoder doesn't support the "display width" feature, it shall return XDM_UNSUPPORTEDPARAM when the control function is called for setting the displayWidth attribute.
XDM_FATALERROR 

Bit 15 - Fatal error (stop the codec). If there is an error and this bit is not set, the error is a recoverable one.

Remarks:
This error is set when the algorithm cannot recover from the current state. It informs the system not to try the next frame and possibly delete the multimedia algorithm instance. It implies the codec shall not work when reset.
The user should delete the current instance of the codec.

Endianness of data.

Remarks:
This enumeration data type should not be used for storage, but rather only for its constant values.
This enumeration defines a base set of values. Algorithms which require proprietary enumeration values may define them - much like extended fields in base structures. These extended enums should be between XDM_CUSTOMENUMBASE and 0x7FFF.
See also:
XDM_CUSTOMENUMBASE
Enumerator:
XDM_BYTE 

Big endian stream.

XDM_LE_16 

16 bit little endian stream.

XDM_LE_32 

32 bit little endian stream.

XDM_LE_64 

64 bit little endian stream.

XDM_BE_16 

16 bit big endian stream.

XDM_BE_32 

32 bit big endian stream.

XDM_BE_64 

64 bit big endian stream.

Encoding presets.

Remarks:
This enumeration data type should not be used for storage, but rather only for its constant values.
This enumeration defines a base set of values. Algorithms which require proprietary enumeration values may define them - much like extended fields in base structures. These extended enums should be between XDM_CUSTOMENUMBASE and 0x7FFF.
See also:
XDM_CUSTOMENUMBASE
Enumerator:
XDM_DEFAULT 

Default setting of encoder. See codec specific documentation for its encoding behaviour.

XDM_HIGH_QUALITY 

High quality encoding.

XDM_HIGH_SPEED 

High speed encoding.

XDM_USER_DEFINED 

User defined configuration, using advanced parameters.

Decode entire access unit or only header.

Remarks:
This enumeration data type should not be used for storage, but rather only for its constant values.
This enumeration defines a base set of values. Algorithms which require proprietary enumeration values may define them - much like extended fields in base structures. These extended enums should be between XDM_CUSTOMENUMBASE and 0x7FFF.
See also:
XDM_CUSTOMENUMBASE
Enumerator:
XDM_DECODE_AU 

Decode entire access unit, including all the headers.

XDM_PARSE_HEADER 

Decode only header.

Encode entire access unit or only header.

Remarks:
This enumeration data type should not be used for storage, but rather only for its constant values.
This enumeration defines a base set of values. Algorithms which require proprietary enumeration values may define them - much like extended fields in base structures. These extended enums should be between XDM_CUSTOMENUMBASE and 0x7FFF.
See also:
XDM_CUSTOMENUMBASE
Enumerator:
XDM_ENCODE_AU 

Encode entire access unit, including the headers.

XDM_GENERATE_HEADER 

Encode only header.

Chroma formats.

Remarks:
This enumeration data type should not be used for storage, but rather only for its constant values.
This enumeration defines a base set of values. Algorithms which require proprietary enumeration values may define them - much like extended fields in base structures. These extended enums should be between XDM_CUSTOMENUMBASE and 0x7FFF.
See also:
XDM_CUSTOMENUMBASE
Enumerator:
XDM_CHROMA_NA 

Chroma format not applicable.

XDM_YUV_420P 

YUV 4:2:0 planer.

XDM_YUV_422P 

YUV 4:2:2 planer.

XDM_YUV_422IBE 

YUV 4:2:2 interleaved (big endian).

XDM_YUV_422ILE 

YUV 4:2:2 interleaved (little endian).

XDM_YUV_444P 

YUV 4:4:4 planer.

XDM_YUV_411P 

YUV 4:1:1 planer.

XDM_GRAY 

Gray format.

XDM_RGB 

RGB color format.

XDM_YUV_420SP 

YUV 420 semi_planar format.(Luma 1st plane, CbCr interleaved 2nd plane)

XDM_ARGB8888 

Alpha plane.

XDM_RGB555 

RGB 555 color format.

XDM_RGB565 

RGB 565 color format.

XDM_YUV_444ILE 

YUV 4:4:4 interleaved (little endian).

XDM_CHROMAFORMAT_DEFAULT 

Default setting.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Copyright 2010, Texas Instruments Incorporated