Matrox Imaging Library (MIL) 9.0 Update 58
Total Page:16
File Type:pdf, Size:1020Kb
------------------------------------------------------------------------------- Matrox Imaging Library (MIL) 9.0 Update 58. Release Notes (Whatsnew) September 2012 (c) Copyright Matrox Electronic Systems Ltd., 1992-2012. ------------------------------------------------------------------------------- For more information and what's new in processing, display, drivers, Linux, ActiveMIL, and all MIL 9 updates, consult their respective readme files. Main table of contents Section 1 : What's new in Mil 9.0 Update 58 Section 2 : What's new in MIL 9.0 Release 2. Section 3 : What's new in MIL 9.0. Section 4 : Differences between MIL Lite 8.0 and 7.5 Section 5 : Differences between MIL Lite 7.5 and 7.1 Section 6 : Differences between MIL Lite 7.1 and 7.0 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Section 1: What's new in MIL 9.0 Update 58. Table of Contents for Section 1 1. Overview. 2. Mseq API function definition 2.1 MseqAlloc 2.2 MseqControl 2.3 MseqDefine 2.4 MseqFeed 2.5 MseqFree 2.6 MseqGetHookInfo 2.7 MseqHookFunction 2.8 MseqInquire 2.9 MseqProcess 3. Examples 4. Operating system information 1. Overview. The main goal for MIL 9.0 Update 58 is to add a new module called Mseq, which offers a user-friendly interface for H.264 compression. 2. Mseq API function definition 2.1 MseqAlloc - Synopsis: Allocate a sequence context. - Syntax: MIL_ID MseqAlloc( MIL_ID SystemID, MIL_INT64 SequenceType, MIL_INT64 Operation, MIL_UINT32 OutputFormat, MIL_INT64 InitFlag, MIL_ID* ContextSeqIdPtr) - Parameters: * SystemID: Specifies the identifier of the system on which to allocate the sequence context. This parameter must be given a valid system identifier. * SequenceType: Specifies the type of sequence to allocate: Values: M_DEFAULT - Specifies the sequence as a context in which the related operation should be performed. * Operation: Specifies the operation to be performed by the context. Values: M_SEQ_COMPRESS - Specifies that the context should encode the buffers as they are fed. M_SEQ_DECOMPRESS - Specifies that the context should decode the source and notify by a hook function that the buffer is ready. * OutputFormat: Specifies the data format to be generated. Values: M_DEFAULT - Specifies the type of data to be generated by the context * InitFlag: Specifies the engine to be used for the operation. Values: M_DEFAULT - Specifies to use the default engine(M_QSV) M_QSV + - Specifies that the engine to be used is the Intel Hardware acceleration built in 2nd and 3rd generation Intel® Core™ processors. Can be combines with either: M_HARDWARE - Force the engine to be hardware accelerated M_SOFTWARE - Force the engine to use the software implementation * ContextSeqIdPtr: Specifies the address of the variable in which to write the sequence context identifier. Since MseqAlloc() also returns the sequence context identifier, you can set this parameter to M_NULL. If allocation fails, M_NULL is written as the identifier. 2.2 MseqControl - Synopsis: Control the context operation. - Syntax: void MseqControl( MIL_ID ContextSeqId, MIL_INT SequenceIndex, MIL_INT64 ControlType, MIL_DOUBLE ControlValue); - Parameters: * ContextSeqId: Specifies the identifier of the sequence context. * SequenceIndex: Specifies the context or the index of the container Values: M_SEQ_SRC(n): - Specifies the source container at index 'n', where n must be between 0 to 32. M_SEQ_DEST(n): - Specifies the destination container at index 'n', where n must be between 0 to 32. M_ALL: - Specifies to control all sources and destinations at once. M_CONTEXT: - Specifies that the control will affect the context itself * ControlType: Specifies the sequence context setting to control. See the Parameter associations section for possible values that can be specified. * ControlValue: Specifies the value to assign to the sequence context setting. See the Parameter associations section for possible values that can be specified. - Parameter Associations: Control types: Control Values: * M_BUFFER_SAMPLE: Sets the information concerning the input buffer format to validate operation parameters. - MIL buffer identifier: Specifies the identifier of an M_IMAGE buffer used as input for the compression. * M_STREAM_BIT_RATE: Sets the expected encoded stream bitrate. - Value(MIL_INT): Specifies the expected encoded stream bitrate (in kbps). * M_STREAM_BIT_RATE_MAX: Sets the maximum allowed encoded stream bitrate. - Value(MIL_INT): Specifies the maximum encoded stream bit rate (in kbps). * M_STREAM_BIT_RATE_MODE: Sets the bitrate control method. - M_VARIABLE: Specifies that the engine uses a variable bitrate control algorithm. - M_CONSTANT: Specifies that the engine uses a constant bitrate control algorithm. * M_STREAM_FRAME_RATE + : Sets the frame rate of the generated output stream. - Value(MIL_DOUBLE): Specifies the value for the output stream framerate. For example if you are using an NTSC-M(23.97) framerate use the following equation to set the exact framerate: 24.0 * (1000.0/1001.0) * M_STREAM_GROUP_OF_PICTURE_SIZE: Sets the I-frame interval, which is also known as the Group of Picture size. - Value(MIL_INT): Specifies the distance between 2 I-frames in the encoded stream. * M_STREAM_LEVEL: Sets the H.264 encoding level. - M_LEVEL_1: - M_LEVEL_1B: - M_LEVEL_1_1: - M_LEVEL_1_2: - M_LEVEL_1_3: - M_LEVEL_2: - M_LEVEL_2_1: - M_LEVEL_2_2: - M_LEVEL_3: - M_LEVEL_3_1: - M_LEVEL_3_2: - M_LEVEL_4: - M_LEVEL_4_1: - M_LEVEL_4_2: - M_LEVEL_5: - M_LEVEL_5_1: Specifies the level that the encoding engine should use. * M_STREAM_PROFILE: Sets the H.264 encoding profile. - M_PROFILE_BASELINE: - M_PROFILE_MAIN: - M_PROFILE_HIGH: Specifies the profile that the encoding engine should use. * M_STREAM_QUALITY: Sets the H.264 encoding engine priority. - 0 to 100: Specifies the speed/quality priority where 0 is for best speed and 100 for best quality. * M_SETTING_AUTO_ADJUSTMENT: Sets the switch to ignore an error if the engine managed to fix the conflict between parameters. - M_ENABLE: Conflict will be solved automaticaly and no error will be raised. - M_DISABLE: An error will be raised if a conflict occurs between parameters. Combination constant for M_STREAM_FRAME_RATE; * M_VARIABLE: Specifies that the timestamp used for encoding will be inquired on each call to MseqFeed(). Plus, when closing the file, it will specify the average frame rate (AVI only). 2.3 MseqDefine - Synopsis: Associate an input or an output container to the specific sequence context or control parameters of an input or output container inside a specific sequence context. - Syntax: void MseqDefine( MIL_ID ContextSeqId, MIL_INT SequenceIndex, MIL_INT64 SequenceType, const void *Param1Ptr, MIL_DOUBLE Param2); - Parameters: * ContextSeqId: Specifies the identifier of the sequence context. * SequenceIndex: Specifies the container to access. Values: M_SEQ_SRC(n): - Specifies the source container at index 'n', where n must be between 0 to 32. M_SEQ_DEST(n): - Specifies the destination container at index 'n', where n must be between 0 to 32. * SequenceType: - M_FILE: Specifies that the container is a file. Param1Ptr Data Type: MIL_CONST_TEXT_PTR * Param1Ptr: - When specifying SequenceType as M_FILE: * Value: Specifies the file path of the file to be used. * Param2: - M_FILE_FORMAT_H264: Generates a raw H.264 Elementary Stream. - M_FILE_FORMAT_AVI: Generates a AVI containing the encoded stream. - M_FILE_FORMAT_MP4: Generates a MP4 containing the encoded stream. 2.4 MseqFeed - Synopsis: Enqueue a buffer for the context operation. The operation can wait for the buffer to be queued if the operation context's FIFO is full. - Syntax: void MseqFeed( MIL_ID ContextSeqId, MIL_ID ImageBufId, MIL_INT64 InitFlag) - Parameters: * ContextSeqId: Specifies the identifier of the sequence context. * ImageBufId: Specifies the identifier of the buffer to add to the queue for encoding. * InitFlag: Reserved for future use. Should be set to M_DEFAULT. 2.5 MseqFree - Synopsis: Free a sequence context. - Syntax: void MseqFree( MIL_ID ContextSeqId) - Parameters: * ContextSeqId: Specifies the sequence identifier to be freed. 2.6 MseqGetHookInfo - Synopsis: Retrieves information about the sequence hook event. - Syntax: void MseqGetHookInfo( MIL_ID EventID, MIL_INT InfoType, void* UserVarPtr ) - Parameters: * EventID: Specifies the sequence event identifier received by the hook-handler function to be called. MseqGetHookInfo() should only be called within the scope of a sequence hook-handler identification. * InfoType: Specifies a combination of two values: the event type and the type of information about the event to return. See the Parameter associations section for possible values that can be specified. * UserVarPtr: Accepts the address of one of the following (see the Parameter associations section for specifics on which is expected): - MIL_ID Specifies the address in which to write the requested information. See the Parameter associations section for possible values that can be returned. - Parameter Associations: Control types: Control Values: * M_MODIFIED_BUFFER+: Retrieves information about a modified buffer type of event. This event only occurs if the hook-handler function was hooked using MseqProcess(). -UserVarPtr data type info: MIL_ID * Combination constants for M_MODIFIED_BUFFER You must add one of the following values to the above-mentioned value to specify the type of information to return. - M_BUFFER_ID: Returns the MIL identifier of the buffer modified by MseqProcess().