LEADTOOLS Support
General
General Questions
Re: What structure IltmmSampleTarget->GetSample() actually return?
This topic and its replies were posted before the current version of LEADTOOLS was released and may no longer be applicable.
#1
Posted
:
Tuesday, March 1, 2011 8:57:08 PM(UTC)
Groups: Registered
Posts: 5
Hi,
I'm using IltmmConvert to decompress MPEG-4 frames into IYUV.
I'm setting it up this way:
IltmmConvert *pConvert;
IltmmSampleTarget *pTarget;
IltmmMediaTypeDisp *pTargetMediaType;
...
//CoCreateInstance( everything )
...
pTargetMediaType->put_Type (ltmmMEDIATYPE_Video);
pTargetMediaType->put_Subtype(ltmmMEDIASUBTYPE_IYUV);
pTarget->SetAcceptedMediaType(pTargetMediaType);
pConvert->put_TargetObject(pTarget);
pConvert->put_TargetFormat(ltmmConvert_TargetFormat_Still_Image);
pConvert->put_AllowedStreams(ltmmConvert_Stream_Video);
After I push a compressed frame into the source object (not shown above),
I should be able to get the uncompressed data this way:
IltmmMediaSampleDisp* pMediaSample; VARIANT varBuffer; void* pBuffer; pTarget->GetSample (1000, &pMediaSample); pMediaSample->get_Buffer (&varBuffer); SafeArrayAccessData(V_ARRAY(&varBuffer), &pBuffer);What structure does pBuffer contain? What can I cast it into?
Thanks,
David
#2
Posted
:
Wednesday, March 2, 2011 5:37:55 AM(UTC)
Groups: Registered, Tech Support
Posts: 1,326
Was thanked: 1 time(s) in 1 post(s)
David,
If the media subtype is not already IYUV, it must first be converted. One way for that to happen is that DirectShow will insert a processing filter similar to our LEAD color space converter.
You can check that by using the ltmmConvert.EditGraph() function, which lets you see the contents of the internal filter graph of the control.
In any case, if the needed filters are connected correctly, the format of a buffer that contains IYUV data is not directly explained in our documentation, but you can easily find it by searching the internet for "YUV pixel formats"
Thanks,
Maen Badwan
LEADTOOLS Technical Support
#3
Posted
:
Wednesday, March 2, 2011 12:34:24 PM(UTC)
Groups: Registered
Posts: 5
Maen,
I don't need the pixel formats, or how to convert between them.
I need the layout of the frame ... something that shows where the Y, U, and V data is located and how it is arranged.
I would be very surprised if that information (or at least a link to it) was not available someplace within LEAD.
Thanks,
David
#4
Posted
:
Thursday, March 3, 2011 5:34:39 AM(UTC)
Groups: Registered, Tech Support
Posts: 1,326
Was thanked: 1 time(s) in 1 post(s)
David,
The returned buffer will be a byte array that contains pixel data formatted according to the video subtype specification.
This means if the subtype is a planar YUV format, the buffer will contain the different Y, U and V planes arranged one after the other as detailed by that subtype's documentation.
The details of the common sub-types data configurations (planar or otherwise) are not available in our documentation. A typical programmer who's going to use our controls, codecs and DirectShow filters either together or with third-party codecs and filters, does not usually need this kind of information to successfully make these components work together.
A programmer who needs to work with YUV data himself is going a step beyond our toolkit, and I'm afraid that step is not documented by us. To do that, you will need additional references.
Please note that LEAD did not create the IYUV format, but if any of our components produces this format, our responsibility is limited to giving correctly-formatted video buffers. We are not required to explain the format to the user.
This is similar to any component that produces a file or video format. If that component works correctly, it does not necessarily document the internal details of the format.
Thanks,
Maen Badwan
LEADTOOLS Technical Support
LEADTOOLS Support
General
General Questions
Re: What structure IltmmSampleTarget->GetSample() actually return?
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.