[gdal-dev] OpenJPEG2000 issues when reading blocks at a time

Chaitanya kumar CH chaitanya.ch at gmail.com
Mon Jun 13 23:13:10 EDT 2011


Derek,

Can you provide a screenshot of the displayed image. Especially the
scrambled blocks.

On Tue, Jun 14, 2011 at 4:22 AM, Cole, Derek <dcole at integrity-apps.com>wrote:

>  Hello,
>
> I have the following code:
>
>     qDebug("tilePosX: %i ", this->tilePosX);
>     qDebug("tilePosY: %i ", this->tilePosY);
>
>
>     float * floatData = (float *) CPLMalloc(sizeof(float)*nXSize*nYSize);
>     poBand->RasterIO( GF_Read, this->tilePosX*nXSize,
> this->tilePosY*nYSize, nXSize, nYSize, floatData, nXSize,
> nYSize,GDT_Float32, 0, 0 );
>
> I am using this to read in "tiles" from a larger image, to avoid having to
> do massive read operations.
>
> This seems to work great for an uncompressed nitf, however, when trying it
> on a JPEG2000 image, it seems to be highly unstable. Sometimes my software
> crashes, and sometimes I get no data back, and usually it gives a splurge of
> info like below, whee tilePosX and tilePosY is the "block" in the file I am
> trying to read. nX/nY Size variables are obtained from the GetBlockSize()
> function on the band., which is this case is 1024x1024.
>
> Is there a problem with OpenJPEG2000? I have tried to use jasper already,
> and it was painfully slow. Starting to run out of options here.
>
> Also, as a side note, I am doing this operation in a separate thread from
> my GUI, and it should be waiting for the data to be returned before
> returning to my main..which like i said is working fine when it is
> uncompressed - but does this driver perhaps return a simple allocated array
> or something it is populated asynchronously? Some of the blocks come back
> looking right, some are scrambled, and some are all black in my viewer.
>
>   ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 0, Y offset 0
>
> ERROR 1: GetBlockRef failed at X block offset 0, Y block offset 0
>
> Loading Pixmap
>
> tilePosX: 1
>
> tilePosY: 0
>
> ERROR 1: Stream too short, expected SOT
>
>  ERROR 1: opj_decode_tile_data() failed
>
> ERROR 1: IReadBlock failed at X offset 1, Y offset 0
>
> ERROR 1: GetBlockRef failed at X block offset 1, Y block offset 0
>
> Loading Pixmap
>
> tilePosX: 0
>
> tilePosY: 1
>
> Loading Pixmap
>
> tilePosX: 1
>
> tilePosY: 1
>
> Loading Pixmap
>
> tilePosX: 0
>
> tilePosY: 1
>
> Loading Pixmap
>
> tilePosX: 1
>
> tilePosY: 1
>
> ERROR 1: Stream too short
>
>  ERROR 1: opj_decode_tile_data() failed
>
> ERROR 1: IReadBlock failed at X offset 1, Y offset 1
>
> ERROR 1: GetBlockRef failed at X block offset 1, Y block offset 1
>
> Loading Pixmap
>
> tilePosX: 1
>
> tilePosY: 1
>
> Loading Pixmap
>
> tilePosX: 1
>
> tilePosY: 1
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosY: 0
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosY: 1
>
> ERROR 1: Expected a SOC marker
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 2, Y offset 0
>
> ERROR 1: GetBlockRef failed at X block offset 2, Y block offset 0
>
> ERROR 1: Marker is not compliant with its position
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 2, Y offset 1
>
> ERROR 1: GetBlockRef failed at X block offset 2, Y block offset 1
>
> Loading Pixmap
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosY: 0
>
> tilePosX: 2
>
> tilePosY: 1
>
> ERROR 1: Marker is not compliant with its position
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 2, Y offset 1
>
> ERROR 1: GetBlockRef failed at X block offset 2, Y block offset 1
>
> ERROR 1: Stream too short, expected SOT
>
>  ERROR 1: opj_decode_tile_data() failed
>
> ERROR 1: IReadBlock failed at X offset 2, Y offset 0
>
> ERROR 1: GetBlockRef failed at X block offset 2, Y block offset 0
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosY: 0
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosY: 0
>
> Loading Pixmap
>
> tilePosX: 0
>
> tilePosY: 2
>
> Loading Pixmap
>
> tilePosX: 1
>
> tilePosY: 2
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosY: 2
>
> ERROR 1: Stream too short
>
>  ERROR 1: opj_decode_tile_data() failed
>
> ERROR 1: IReadBlock failed at X offset 2, Y offset 2
>
> ERROR 1: GetBlockRef failed at X block offset 2, Y block offset 2
>
> Loading Pixmap
>
> tilePosX: 1
>
> tilePosY: 2
>
> Loading Pixmap
>
> tilePosX: 2
>
> Loading Pixmap
>
> tilePosY: 2
>
> tilePosX: 3
>
> tilePosY: 0
>
> Loading Pixmap
>
> tilePosX: 3
>
> tilePosY: 1
>
> Loading Pixmap
>
> tilePosX: 3
>
> tilePosY: 2
>
> ERROR 1: Expected a SOC marker
>
>  ERROR 1: Expected a SOC marker
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 3, Y offset 1
>
> ERROR 1: GetBlockRef failed at X block offset 3, Y block offset 1
>
> ERROR 1: IReadBlock failed at X offset 2, Y offset 2
>
> ERROR 1: GetBlockRef failed at X block offset 2, Y block offset 2
>
> ERROR 1: Marker is not compliant with its position
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 3, Y offset 2
>
> ERROR 1: GetBlockRef failed at X block offset 3, Y block offset 2
>
> ERROR 1: Stream too short, expected SOT
>
>  ERROR 1: opj_decode_tile_data() failed
>
> ERROR 1: IReadBlock failed at X offset 3, Y offset 0
>
> ERROR 1: GetBlockRef failed at X block offset 3, Y block offset 0
>
> Loading Pixmap
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosX: 3
>
> Loading Pixmap
>
> Loading Pixmap
>
> tilePosY: 0
>
> tilePosX: 3
>
> tilePosX: 3
>
> tilePosY: 2
>
> tilePosY: 1
>
> tilePosY: 2
>
> ERROR 1: Expected a SOC marker
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 2, Y offset 2
>
> ERROR 1: GetBlockRef failed at X block offset 2, Y block offset 2
>
> ERROR 1: Marker is not compliant with its position
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: Marker is not compliant with its position
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 3, Y offset 2
>
> ERROR 1: GetBlockRef failed at X block offset 3, Y block offset 2
>
> ERROR 1: IReadBlock failed at X offset 3, Y offset 1
>
> ERROR 1: GetBlockRef failed at X block offset 3, Y block offset 1
>
> Loading Pixmap
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosY: 2
>
> tilePosX: 3
>
> tilePosY: 0
>
> Loading Pixmap
>
> tilePosX: 3
>
> tilePosY: 2
>
> ERROR 1: Stream too short
>
>  ERROR 1: opj_decode_tile_data() failed
>
> ERROR 1: IReadBlock failed at X offset 3, Y offset 2
>
> ERROR 1: GetBlockRef failed at X block offset 3, Y block offset 2
>
> Loading Pixmap
>
> tilePosX: 0
>
> tilePosY: 3
>
> Loading Pixmap
>
> tilePosX: 1
>
> tilePosY: 3
>
> ERROR 1: Stream too short, expected SOT
>
>  ERROR 1: opj_decode_tile_data() failed
>
> ERROR 1: Marker is not compliant with its position
>
>  ERROR 1: opj_read_header() failed
>
> ERROR 1: IReadBlock failed at X offset 1, Y offset 3
>
> ERROR 1: GetBlockRef failed at X block offset 1, Y block offset 3
>
> ERROR 1: IReadBlock failed at X offset 0, Y offset 3
>
> ERROR 1: GetBlockRef failed at X block offset 0, Y block offset 3
>
> Loading Pixmap
>
> tilePosX: 2
>
> tilePosY: 3
>
> Loading Pixmap
>
> tilePosX: 3
>
> tilePosY: 3
>
> Loading Pixmap
>
> tilePosX: 3
>
> tilePosY: 3
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>



-- 
Best regards,
Chaitanya kumar CH.
/tʃaɪθənjə/ /kʊmɑr/
+91-9494447584
17.2416N 80.1426E
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20110614/afd4e691/attachment-0001.html


More information about the gdal-dev mailing list