Changes between Version 69 and Version 70 of rfc24_progressive_data_support
- Timestamp:
- Apr 8, 2009, 4:57:49 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
rfc24_progressive_data_support
v69 v70 61 61 [[Image(gdalsequence.PNG)]] 62 62 63 1.GDALGetDatasetDriver63 1. GDALGetDatasetDriver 64 64 65 Fetch the driver to which this dataset relates. 66 1. Open 65 Fetch the driver to which this dataset relates. 67 66 68 If the filename contained in the GDALOpenInfo object has a case insensitive URI scheme of jpip or jpips the JPIPKAKDataset is created and initialised, otherwise NULL is returned. 69 1. Initialize 67 2. Open 70 68 71 Initialisation involves making an initial connection to the JPIP Server to establish a session and to retrieve the initial metadata about the image (ref. JPIP Sequence Diagram).[[BR]] 72 If the connection fails, the function returns false and the Open function returns NULL indicating that opening the dataset with this driver failed.[[BR]] 73 If the connection is successful, then subsequent requests to the JPIP server are made to retrieve all the available metadata about the image. Metadata items are set using the GDALMajorObject->SetMetadataItem in the "JPIP" domain.[[BR]] 74 If the metadata returned from the server includes GeoJP2 UUID box, or a GMLJP2 XML box then this metadata is parsed and sets the geographic metadata of this dataset. 75 1. GDALGetMetadata 69 If the filename contained in the GDALOpenInfo object has a case insensitive URI scheme of jpip or jpips the JPIPKAKDataset is created and initialised, otherwise NULL is returned. 76 70 77 C API to JPIPKAKDataset->GetMetadata 78 1. GetMetadata 71 3. Initialize 72 73 Initialisation involves making an initial connection to the JPIP Server to establish a session and to retrieve the initial metadata about the image (ref. JPIP Sequence Diagram). 74 75 If the connection fails, the function returns false and the Open function returns NULL indicating that opening the dataset with this driver failed. 76 77 If the connection is successful, then subsequent requests to the JPIP server are made to retrieve all the available metadata about the image. Metadata items are set using the GDALMajorObject->SetMetadataItem in the "JPIP" domain. 78 79 If the metadata returned from the server includes GeoJP2 UUID box, or a GMLJP2 XML box then this metadata is parsed and sets the geographic metadata of this dataset. 80 81 4. GDALGetMetadata 82 83 C API to JPIPKAKDataset->GetMetadata 84 85 5. GetMetadata 86 79 87 returns metadata for the "JPIP" domain, keys are "JPIP_NQUALITYLAYERS", "JPIP_NRESOLUTIONLEVELS", "JPIP_NCOMPS" and "JPIP_SPRECISION" 80 1. GDALEndAsyncRasterIO 88 89 6. GDALEndAsyncRasterIO 90 81 91 If the asynchronous raster IO is active and not required, the C API calls JPIPKAKDataset->EndAsyncRasterIO 82 1. EndAsyncRasterIO 92 93 7. EndAsyncRasterIO 94 83 95 The JPIPKAKAsyncRasterIO object is deleted 84 1. delete 85 1. GDALBeginAsyncRasterIO 96 97 8. delete 98 99 9. GDALBeginAsyncRasterIO 100 86 101 C API to JPIPKAKDataset->BeginAsyncRasterIO 87 1. BeginAsyncRasterIO 102 103 10. BeginAsyncRasterIO 104 88 105 The client has set the requested view window at 1:1 and have optionally set the discard level, quality layers and thread priority metadata items. 89 1. Create 106 107 11. Create 108 90 109 Creates a JPIPKAKAsyncRasterIO Object 91 1. Start 110 111 12. Start 112 92 113 Configures the kakadu machinery and starts a background thread (if not already running) to communicate to the server the current view window request. The background thread results in the kdu_cache object being updated until the JPIP server sends an "End Of Response" (EOR) message for the current view window request. 93 1. GDALLockBuffer 114 115 13. GDALLockBuffer 116 94 117 C API to LockBuffer 95 1. LockBuffer 118 119 14. LockBuffer 120 96 121 Not implemented in JPIPKAKAsyncRasterIO, a lock is acquired in JPIPKAKAsyncRasterIO->GetNextUpdatedRegion 97 1. GDALGetNextUpdatedRegion 122 123 15. GDALGetNextUpdatedRegion 124 98 125 C API to GetNextUpdatedRegion 99 1. GetNextUpdatedRegion 126 127 16. GetNextUpdatedRegion 128 100 129 The function decompresses the available data to generate an image (according to the dataset buffer type set in JPIPKAKDataset->BeginAsyncRasterIO) The window width, height (at the requested discard level) decompressed is returned in the region pointer and can be rendered by the client. The status of the rendering operation is one of GARIO_PENDING, GARIO_UPDATE, GARIO_ERROR, GARIO_COMPLETE from the GDALAsyncStatusType structure. GARIO_UPDATE, GARIO_PENDING require more reads of GetNextUpdatedRegion to get the full image data, this is the progressive rendering of JPIP. GARIO_COMPLETE indicates the window is complete. 101 130 … … 103 132 104 133 The region passed into this function is passed by reference, and the caller can read this region when the result returns to find the region that has been decompressed. The image data is packed into the buffer, e.g. RGB if the region requested has 3 components. 105 1. GDALUnlockBuffer 134 135 17. GDALUnlockBuffer 136 106 137 C Api to UnlockBuffer 107 1. UnlockBuffer 138 139 18. UnlockBuffer 140 108 141 Not implemented in JPIPKAKAsyncRasterIO, a lock is acquired in JPIPKAKAsyncRasterIO->GetNextUpdatedRegion 109 1. Draw 142 143 19. Draw 144 110 145 Client renders image data 111 1. GDALLockBuffer 112 1. LockBuffer 113 1. GDALGetNextUpdatedRegion 114 1. GetNextUpdatedRegion 115 1. GDALUnlockBuffer 116 1. UnlockBuffer 117 1. Draw 146 147 20. GDALLockBuffer 148 149 21. LockBuffer 150 151 22. GDALGetNextUpdatedRegion 152 153 23. GetNextUpdatedRegion 154 155 24. GDALUnlockBuffer 156 157 # UnlockBuffer 158 159 # Draw