def test_default_decoder_parameters(self): """Tests that the structure is clean upon initialization""" dparams = openjp2.set_default_decoder_parameters() self.assertEqual(dparams.DA_x0, 0) self.assertEqual(dparams.DA_y0, 0) self.assertEqual(dparams.DA_x1, 0) self.assertEqual(dparams.DA_y1, 0)
def tile_decoder(**kwargs): """Fixture called with various configurations by many tests. Reads a tile. That's all it does. """ stream = openjp2.stream_create_default_file_stream(kwargs['filename'], True) dparam = openjp2.set_default_decoder_parameters() dparam.decod_format = kwargs['codec_format'] # Do not use layer decoding limitation. dparam.cp_layer = 0 # do not use resolution reductions. dparam.cp_reduce = 0 codec = openjp2.create_decompress(kwargs['codec_format']) openjp2.set_info_handler(codec, None) openjp2.set_warning_handler(codec, None) openjp2.set_error_handler(codec, None) openjp2.setup_decoder(codec, dparam) image = openjp2.read_header(stream, codec) openjp2.set_decode_area(codec, image, kwargs['x0'], kwargs['y0'], kwargs['x1'], kwargs['y1']) data = np.zeros((1150, 2048, 3), dtype=np.uint8) while True: rargs = openjp2.read_tile_header(codec, stream) tidx = rargs[0] size = rargs[1] go_on = rargs[-1] if not go_on: break openjp2.decode_tile_data(codec, tidx, data, size, stream) openjp2.end_decompress(codec, stream) openjp2.destroy_codec(codec) openjp2.stream_destroy(stream) openjp2.image_destroy(image)