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@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to