However, when I call decoder.GetFrame(&dataIn, &dataOut)I receive an error: UMC_ERR_NOT_ENOUGH_DATA.
My understanding was that I-Frames were complete images. If I'm correct, then why does the decoder fail?
Can anyone help, or suggest a workaround?
When GetFrame() returns UMC_ERR_NOT_ENOUGH_DATA it doesn't indeedmean an error.
Please check the call for GetFrame()with NULL parameter passed, after the decoding loop in in order to get the buffered frames.
Please check this usefularticle: "Getting Started with Intel IPP Unified Media Classes Sample"
Also, check the UMC Reference Manual (umc-manual.pdf)->Example 4-38 H.264 Decoder Main Working Cycle.Regards,
Jmason and Tamer's suggestionlooks right.May you try to call GetFrame() with NULL parameterto get buffered frame andlet us know how it works.
Thereare somelong dicussions about H.264 decoder frame delay. I search one for your reference
Thanks Ying and everyone else offering help. I'm still having problems.
To clarify, I have only one I-Frame prefixed with SPS/PPS and no more data.
I have the following code fragment and it does notexit from the do-while loop:
// Decompress the frame
UMC::Status status= m_decoder.GetFrame(&m_dataIn, &m_dataOut);
// Check if decompression was successful, otherwise try again
if (status != UMC::UMC_OK)
// Retrieve any data that has been buffered by IPP
status= m_decoder.GetFrame(NULL, &m_dataOut);
while (status == UMC::UMC_ERR_NOT_ENOUGH_DATA);
What am I doing wrong?
Try overriding the value set/stored in TaskSupplier::SetDPBSize(). I have not tried overriding the stored value with 0 but it might give you the result you are looking for.