MODALIZER SDK  3.2.2.2
Handling of Encapsulated Pixel Data and Multiframe Images

Get the length in bytes of a frame This method is useful when implementing a viewer for faster processing of encapsulated formats. For example if the object encapsulates a multi-frame jpeg sequence, you can use this call to extract the jpeg frames directly from the file into buffer and display them. More...

Functions

HRESULT IDCXOBJ::GetEncapsulatedFrameLength ([in] long frameNumber, [out, retval] long *length)
 
HRESULT IDCXOBJ::GetEncapsulatedFrameData ([in] long frameNumber, [in] unsigned __int3264 bufPtr, [in] long bufLen)
 Get the data of one encapsulated frame. More...
 
HRESULT IDCXOBJ::GetEncapsulatedFrameRef ([in] long frameNumber, [out] unsigned __int3264 *ptr, [out, retval] long *length)
 Get a reference to the memory of one encapsulated frame. More...
 

Detailed Description

Get the length in bytes of a frame This method is useful when implementing a viewer for faster processing of encapsulated formats. For example if the object encapsulates a multi-frame jpeg sequence, you can use this call to extract the jpeg frames directly from the file into buffer and display them.

DICOM objects stores encoded/compressed images in pixel data sequnce. The pixel data sequence holds multiple items, each can hold part or all of the data of a single frame of the image. MODALIZER-SDK supports fragmented pixel data only for single frame objects. i.e. either every frame is stored in a single item or all the items comprise a single frame. The case in which multiple frames are stored in the object and there may be frames that are fragmented into multiple sequence items is not supported. For this case, use IDCXELM to get the pixel data element and then use IDCXSEQ to access the data of every item.

If the image is a fragmented sigle frame image and frameNumber = 0 is passed the reult is the total sum of the items lengthes When frameNumber > 1, the result is the length of the item numberd frameNumber (0 based).

See also
GetEncapsulatedFrameData
GetEncapsulatedFrameRef
FrameCount

Fragmented frames in \Note There's an assumption here that the entire frame is stored in one fragment.

Function Documentation

◆ GetEncapsulatedFrameData()

HRESULT IDCXOBJ::GetEncapsulatedFrameData ( [in] long  frameNumber,
[in] unsigned __int3264  bufPtr,
[in] long  bufLen 
)

Get the data of one encapsulated frame.

For fragmented single frame images, when frameNumber == 0, the result is the concatenation of all items. When frameNumber > 0 the result is the data of the matching item. See GetEncapsulatedFrameLength

Parameters
frameNumberThe requested frame number
bufPtrA pointer to a pre-allocated buffer where the data should be copied to
bufLenThe length in bytes of bufPtr (the pre-allocated buffer)

◆ GetEncapsulatedFrameLength()

HRESULT IDCXOBJ::GetEncapsulatedFrameLength ( [in] long  frameNumber,
[out, retval] long *  length 
)
Parameters
frameNumberThe requested frame number
length(out) The length in bytes of the requested frame

◆ GetEncapsulatedFrameRef()

HRESULT IDCXOBJ::GetEncapsulatedFrameRef ( [in] long  frameNumber,
[out] unsigned __int3264 *  ptr,
[out, retval] long *  length 
)

Get a reference to the memory of one encapsulated frame.

This call is similar to GetEncapsulatedFrameData but instead of making a copy of the data it return a pointer to the internal memory of the object where the frame is stored.

This function ignores any fragmentation and returns the reference and length of the mathing item.

See GetEncapsulatedFrameLength and GetEncapsulatedFrameData