Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Failure to decode (UIC Failure)

rudy_B_
Beginner
353 Views

Hi, 

I installed ipp samples (7.1.1) correctly. And, I used UIC examples.

It works fine for only certain images. To be exact, it only worked for the images encoded using UIC.

For example, I had few "jpeg" images, and then using the IPP UIC tool, I enocded them to "jp2" format. Then I used the generated "jp2" format to convert it to different formst (e.g. "bmp", "png" or even back to "jpeg"). And they all worked fine.

But, then I tried to compare the performance with j2k-codec. So, since I had worked with j2k-coded before, I have bunch of "jp2" files, from past.

But, when I tried to use my old files (which had worked fine on "j2k-codec before), they didn't work with IPP UIC !!!

Those files that I tested, had actually been encoded by different tools; but they all are valid encoded streams and all can get decoded fine with j2k-codec.

I know that these files, are encoded fine, because I am able to open all these files with Photoshop.

I am uploading few of these files. And, I would appreicate if someone tells me whether this is a limmiation of IPP UIC, or I am missing something.

Thanks,

--Rudy 

 

0 Kudos
2 Replies
rudy_B_
Beginner
353 Views

UPDATE:

Just as a suplement, I tried to walk through the debugger to see where it is breaking:

failure mode #1:

---------------------------------------------------------------------------------------------

When I try the files: "house_bad.jp2" and "rgb_bad.jp2"

In file "jpeg2k.cpp", line 355:

geometry.ReduceByGCD();

nOfComponents = geometry.NOfComponents();

nOfComponents is set to "4", and that is why it exits line 402:

switch(nOfComponents)

since 4 is not a valid case!!!

---------------------------------------------------------------------------------------------

failure mode #2:

---------------------------------------------------------------------------------------------

When I try the file: "pic3_in2pix_bad.jp2":

In file "jpeg2k.cpp", line 333:

isJP2 = IsJP2(in);

I doesn't recognize it as a valid JP2, and "isJP2 = 0"

And, accordingly, it exits on line 381:

if(ExcStatusOk != decoder->ReadData(imagePn.Buffer().DataPtr(),dataOrderPn))
     return IE_RDATA;

---------------------------------------------------------------------------------------------

Thanks,

--Rudy

0 Kudos
Sergey_K_Intel
Employee
353 Views

Hi Rudy,

Yes, you right, UIC's J2K doesn't support number of components other than 1 or 3. Regarding pic3_in2pix_bad.jp2, this file contains unknown type of marker 0xFF23 which is not recognized, so the decoding fails. By the way, Jasper and OpenJPEG don't decode this file too with diagnostics like:

    [ERROR] Expected JP Marker
    [ERROR] Failed to decode jp2 structure
    ERROR -> j2k_to_image: failed to decode image!

UIC's J2K never been a product-like tool.

Regards,
Sergey 

0 Kudos
Reply