Releases: Raster-Lab/J2KSwift
Release v2.4.0
J2KSwift v2.4.0 Release Notes
Release Date: 2027-03-30
Phase: Phase 21 — Comprehensive CLI Enhancement (Weeks 336–365)
Previous Version: 2.3.0
Headline Feature: Comprehensive CLI Enhancement
v2.4.0 transforms the j2k command-line tool into a full-featured interface that exercises every major capability of the J2KSwift library: 2D codec variants, lossless transcoding, 3D volumetric imaging (JP3D), JPIP network streaming, batch processing, image comparison, format conversion, and shell completions. The CLI is designed with cross-library syntax consistency so that sister tools in the Raster-Lab repository can adopt the same patterns.
What's New
New Commands
| Command | Description |
|---|---|
encode3d |
Compress volumetric / 3D data to JP3D format |
decode3d |
Decompress JP3D volumetric data to slices or raw volumes |
jpip server |
Start a JPIP streaming server for JPEG 2000 images |
jpip client |
Connect to a JPIP server and retrieve image data interactively |
batch |
Batch encode, decode, or transcode entire directories |
compare |
Compare two images with PSNR, SSIM, and MSE metrics |
convert |
Convert between image formats (PGM, PPM, raw, JP2, J2K, JPH) |
completions |
Generate shell completions for Bash, Zsh, and Fish |
Enhanced Existing Commands
encode— new--htj2k/--format jphshortcuts for High Throughput JPEG 2000, multi-spectral support, improved--jsonoutput with timing breakdowndecode— enhanced region-of-interest decoding, component selection, marker inspection outputtranscode— lossless J2K ↔ HTJ2K transcoding with--losslessflag, batch supportinfo— deeper codestream inspection, JP3D metadata, JPIP capability reportingvalidate—--strictmode, JP3D and HTJ2K validation supportbenchmark— JPIP benchmarking mode, 3D volumetric benchmarks, comparison against baseline
3D Volumetric CLI (JP3D)
- Encode directories of 2D slices into JP3D volumes
- Decode JP3D volumes to individual slices or raw binary
- Support for medical imaging (DICOM) workflows
- Configurable 3D tile sizes, codeblock sizes, and slice ordering
- Region-based 3D decoding with
--region x,y,z,w,h,d
JPIP Network Streaming
- Server: Serve JP2/J2K/JPH/JP3D files with session management, configurable concurrency, and graceful shutdown
- Client: Single-request and interactive modes with progressive delivery, region/resolution/quality selection
- Signal handling for clean server shutdown (SIGINT, SIGTERM)
- 3D streaming mode for volumetric data
Batch Processing
- Parallel encoding, decoding, and transcoding of entire directories
- Configurable worker count (defaults to CPU core count)
--continue-on-errorfor resilient production pipelines--dry-runfor previewing operations- Recursive directory scanning with
--recursive - Progress tracking with
--verboseand JSON summary with--json
Cross-Library Syntax Consistency
- Unified flag naming conventions (GNU-style long options, kebab-case)
- Reserved short aliases (
-i,-o,-v,-q,-h) consistent across all commands - Standard exit codes (0–7) for scripted pipelines
- Stdin/stdout piping support (
-i -/-o -) - Shell completion generation for Bash, Zsh, and Fish
Source Files
| File | Lines | Description |
|---|---|---|
Encode3D.swift |
239 | 3D volumetric encoding command |
JPIPClient.swift |
277 | JPIP client with interactive mode |
JPIPServer.swift |
172 | JPIP server with signal handling |
MultiFileProcessor.swift |
342 | Parallel batch file processing engine |
Testing
New Tests: 193 tests, 0 failures
| Test Suite | Tests | Description |
|---|---|---|
Batch3DTests |
Volumetric batch processing | |
BatchCommandTests |
Batch encode/decode/transcode | |
CodecVariantTests |
HTJ2K, lossless, lossy codec modes | |
CompareCommandTests |
Image comparison (PSNR/SSIM/MSE) | |
CompletionTests |
Shell completion generation | |
ConvertCommandTests |
Format conversion | |
Decode3DTests |
3D volumetric decoding | |
DecodeEnhancedTests |
Enhanced decode features | |
DiagnosticsTests |
Diagnostic and info output | |
Encode3DTests |
3D volumetric encoding | |
ErrorHandlingTests |
Error paths and invalid inputs | |
JPIPClientTests |
JPIP client operations | |
JPIPEndToEndTests |
JPIP client-server integration | |
JPIPServerTests |
JPIP server operations | |
MultiFileInputTests |
Multi-file and glob input | |
MultiSpectralCLITests |
Multi-spectral CLI workflows | |
TranscodeBatchTests |
Batch transcoding | |
TranscodeLosslessTests |
Lossless transcoding verification |
Documentation
New Documentation
| Document | Description |
|---|---|
CLI_REFERENCE.md |
Complete command reference for all j2k commands |
CLI_JPIP_GUIDE.md |
JPIP server and client usage guide |
CLI_3D_GUIDE.md |
3D volumetric CLI guide |
CLI_BATCH_GUIDE.md |
Batch processing guide |
CLI_CROSS_LIBRARY_SYNTAX.md |
Cross-library syntax specification |
Updated Documentation
CHANGELOG.md— v2.4.0 entryMILESTONES.md— Phase 21 completionREADME.md— Updated CLI section with new commands
Bug Fixes
- Swift 6 Sendable fix: Redesigned
J2KUnifiedMemoryManagerto useMemoryHandle(aSendablestruct wrapping address asUInt) instead of passingUnsafeMutableRawPointeracross actor boundaries, resolving strict concurrency errors
Breaking Changes
None. v2.4.0 is fully backward compatible with v2.3.0.
Migration
No migration required. All existing APIs remain unchanged. The new CLI commands are additive.
Requirements
- Swift 6.2 or later
- macOS 15+ / iOS 17+ / tvOS 17+ / watchOS 10+ / visionOS 1+ / Linux / Windows
Installation
dependencies: [
.package(url: "https://github.com/Raster-Lab/J2KSwift.git", from: "2.4.0")
]What's Next
Phase 22 planning is underway. See MILESTONES.md for details.
Release v2.0.0
J2KSwift v2.0.0 Release Notes
Release Date: February 21, 2026
Release Type: Major Release
GitHub Tag: v2.0.0
Overview
J2KSwift v2.0.0 is a major release delivering performance refactoring across all platforms, full ISO/IEC 15444-4 conformance, verified OpenJPEG interoperability, a complete CLI toolset, and comprehensive documentation — completing Phase 17 of the development roadmap (Weeks 236–295). This version brings 800+ new tests, hardware-specific SIMD and GPU optimisations, and establishes J2KSwift as a production-ready, standards-compliant JPEG 2000 reference implementation.
Key Highlights
- ⚡ Swift 6.2 Concurrency Hardening: Strict concurrency across all 8 modules with Mutex-based synchronisation
- 🦾 ARM Neon SIMD Optimisation: Vectorised entropy coding, wavelet lifting, and colour transforms
- 🍎 Accelerate Framework Deep Integration: vDSP, vImage, and BLAS/LAPACK for Apple platforms
- 🎮 Metal GPU Compute Refactoring: Optimised DWT shaders, Metal 3 mesh shader support, async compute
- 🐧 Vulkan GPU Compute for Linux/Windows: Cross-platform SPIR-V compute shaders with device feature tiers
- 🖥️ Intel x86-64 SSE/AVX SIMD: SSE4.2, AVX2, and FMA optimisations with runtime CPUID detection
- 📋 ISO/IEC 15444-4 Conformance: 304 conformance tests across Parts 1, 2, 3, 10, and 15
- 🔄 OpenJPEG Interoperability: 165 bidirectional interoperability tests with performance benchmarking
- 🛠️ Complete CLI Toolset: encode/decode/info/transcode/validate/benchmark commands with shell completions
- 📚 Documentation Overhaul: DocC catalogues for all 8 modules, 8 usage guides, 8 runnable examples
- 🧪 2,900+ Total Tests: 800+ new tests bringing the total from 2,100+ to 2,900+
- 🏁 Production-Ready: Full standards compliance, cross-platform validation, and performance targets met
What's New
1. Swift 6.2 Concurrency Hardening (Weeks 236–241) — Phase 17a
Complete migration to Swift 6.2 strict concurrency across all 8 modules.
Features
- Strict concurrency across all modules: Full Swift 6.2 strict concurrency mode enabled for J2KCore, J2KCodec, J2KAccelerate, J2KFileFormat, JPIP, J2K3D, J2KCLI, and J2KConformance
- Minimal @unchecked Sendable: Only 7 justified
@unchecked Sendableannotations in J2KCore, each documented with rationale - Mutex-based synchronisation: All NSLock-based synchronisation replaced with
Mutexfor improved safety and diagnostics - TaskGroup-based pipeline: Work-stealing task groups for parallel tile encoding/decoding
- Actor contention analysis: Instrumented actor isolation boundaries to detect and eliminate contention hotspots
- Concurrent result collectors: Lock-free result aggregation for parallel encode/decode passes
- 26 concurrency stress tests: ThreadSanitizer-clean validation under high contention
Performance Impact
Component | Performance Gain | Platforms
--------------------------------|------------------------|------------------
TaskGroup pipeline | 1.3–1.8× throughput | All platforms
Mutex vs NSLock | ~5% lower overhead | Apple platforms
Actor contention reduction | 15–25% fewer hops | All platforms
2. ARM Neon SIMD Optimisation (Weeks 242–243)
Vectorised core codec operations for Apple Silicon and ARM64 Linux.
Features
- Vectorised entropy coding: SIMD-accelerated context formation, bit-plane coding, and MQ-coder state transitions
- 5/3 & 9/7 wavelet lifting: SIMD4 vectorised lifting steps for forward and inverse DWT
- ICT/RCT colour transforms: Neon-accelerated irreversible and reversible colour transforms
- Architecture guards:
#if arch(arm64)guards with automatic scalar fallback on non-ARM platforms - 41 tests: Correctness and accuracy validation across all vectorised paths
Performance Impact
Component | Scalar (M3) | Neon SIMD (M3) | Speedup
-------------------------|--------------|----------------|--------
MQ-coder encode | 12.1 ms | 4.8 ms | 2.5×
5/3 DWT forward | 8.3 ms | 3.1 ms | 2.7×
9/7 DWT forward | 10.7 ms | 3.9 ms | 2.7×
ICT colour transform | 2.4 ms | 0.9 ms | 2.7×
3. Accelerate Framework Deep Integration (Weeks 244–246)
Comprehensive integration with Apple's Accelerate framework for maximum CPU throughput.
Features
- vDSP vectorised quantisation: vDSP-accelerated quantise and dequantise for all subband types
- vDSP DFT/IDFT: Discrete Fourier Transform for spectral analysis and MCT optimisation
- vImage 16-bit↔float conversion: Hardware-accelerated bit-depth conversion for medical imaging pipelines
- vImage tiled split/assemble: Efficient tile extraction and reassembly for large images
- BLAS/LAPACK eigendecomposition: Eigenvalue decomposition for multi-component transform (MCT) optimisation
- Cache-aligned memory allocation: Aligned buffers for optimal vDSP and vImage throughput
- Copy-on-write buffers: COW semantics for large coefficient arrays to minimise allocations
- 35+ tests: vDSP, vImage, and BLAS/LAPACK correctness and accuracy validation
Performance Impact
Component | Without Accelerate | With Accelerate | Speedup
-----------------------------|--------------------|-----------------|---------
Quantise (1024×1024) | 4.2 ms | 1.1 ms | 3.8×
Dequantise (1024×1024) | 3.8 ms | 0.9 ms | 4.2×
16-bit→float conversion | 2.1 ms | 0.4 ms | 5.3×
MCT eigendecomposition | 0.8 ms | 0.2 ms | 4.0×
4. Metal GPU Compute Refactoring (Weeks 247–249)
Optimised Metal compute pipelines for maximum GPU throughput on Apple platforms.
Features
- Optimised DWT shaders: Refactored 2D and 3D DWT compute kernels with reduced register pressure
- Metal 3 mesh shader support: Mesh shader–based tile dispatch for M3/M4 GPUs
- Tile-based dispatch: Optimal threadgroup sizing with tile-aligned dispatch for all shader functions
- Indirect command buffers: GPU-driven dispatch for multi-tile encode/decode without CPU round-trips
- Async compute with double-buffered submission: Overlapped encode/decode with pipelined command buffer submission
- GPU profiling and occupancy analysis: Built-in GPU timeline capture and occupancy reporting
- Bottleneck detection: Automated identification of ALU-bound, memory-bound, and dispatch-bound shaders
- 62 tests: Shader correctness, dispatch, profiling, and occupancy validation
Performance Impact
Operation | Metal (v1.9) | Metal (v2.0) | Improvement
-----------------------------|--------------|--------------|------------
2D DWT forward (4096×4096) | 1.8 ms | 0.9 ms | 2.0×
3D DWT forward (256³) | 50 ms | 28 ms | 1.8×
Multi-tile encode (8 tiles) | 12.4 ms | 5.1 ms | 2.4×
Pipeline latency (end-to-end)| 18 ms | 9.2 ms | 2.0×
5. Vulkan GPU Compute for Linux/Windows (Weeks 250–251)
Cross-platform GPU compute via SPIR-V shaders for Linux and Windows.
Features
- Cross-platform SPIR-V compute shaders: 16 shader functions covering DWT, quantisation, colour transforms, and entropy coding
- Device feature tiers: Automatic feature detection for NVIDIA, AMD, and Intel GPUs with tiered capability selection
- Buffer pool with size-bucketed reuse: GPU memory recycling to minimise allocation overhead
- Metal/Vulkan/CPU backend selector: Unified API that automatically selects the optimal backend per platform
- Conditional compilation:
#if canImport(CVulkan)guards with automatic CPU fallback on unsupported platforms - 70 tests: Shader correctness, device tier selection, buffer pooling, and backend switching validation
Performance Impact
Operation | CPU (Linux) | Vulkan (RTX 4090) | Speedup
-----------------------------|--------------|-------------------|--------
2D DWT forward (4096×4096) | 42 ms | 2.1 ms | 20×
Quantisation (4096×4096) | 18 ms | 0.8 ms | 22×
Colour transform (4096×4096) | 8.2 ms | 0.4 ms | 21×
Full encode pipeline | 310 ms | 18 ms | 17×
6. Intel x86-64 SSE/AVX SIMD Optimisation (Weeks 252–255) — Phase 17c
Platform-specific SIMD optimisations for Intel and AMD processors.
Features
- SSE4.2 entropy coding: SIMD-accelerated MQ-coder and context formation using SSE4.2 intrinsics
- AVX2 DWT/quantisation/colour: 256-bit wide SIMD for wavelet lifting, quantisation, and colour transforms
- FMA support: Fused multiply-add for 9/7 wavelet lifting steps on supported processors
- Runtime CPUID-based feature detection: Automatic detection of SSE4.2, AVX, AVX2, and FMA at startup
- Cache-oblivious DWT: Recursive DWT decomposition that adapts to L1/L2/L3 cache hierarchy
- NUMA-aware allocation: Memory allocation respecting NUMA topology for multi-socket systems
- Isolated source directories: All x86 SIMD code in
Sources/*/x86/directories, removable for v3.0 - 59 tests: SSE4.2, AVX2, FMA, cache-oblivious, and NUMA validation
Performance Impact
Component | Scalar (Xeon) | SSE4.2 (Xeon) | AVX2 (Xeon) | Speedup (AVX2)
-------------------------|---------------|---------------|-------------|---------------
MQ-coder encode | 18.4 ms | 9.2 ms | 5.8 ms | 3.2×
5/3 DWT forward | 14.1 ms | 7.5 ms | 4.2 ms | 3.4×
9/7 DWT forward (FMA) | 17.3 ms | 9.1 ms | 4.8 ms | 3.6×
Colour transform | 4.8 ms | 2.6 ms | 1.4 ms | 3.4×
7. ISO/IEC 15444-4 Conformance Hardening (Weeks 256–265) —...
Release v1.9.0
J2KSwift v1.9.0 Release Notes
Release Date: February 20, 2026
Release Type: Minor Release
GitHub Tag: v1.9.0
Overview
J2KSwift v1.9.0 is a minor release that delivers comprehensive JP3D volumetric JPEG 2000 support, completing Phase 16 of the development roadmap (Weeks 211-235). This release provides full ISO/IEC 15444-10 compliance for three-dimensional image encoding and decoding, including 3D wavelet transforms, GPU-accelerated processing via Metal, HTJ2K-accelerated volumetric encoding, JPIP streaming of 3D datasets, and cross-platform support.
Key Highlights
- 🏥 JP3D Volumetric JPEG 2000: Complete ISO/IEC 15444-10 encoding and decoding
- 🧊 3D Wavelet Transforms: 5/3 Le Gall and 9/7 CDF lifting filters, Metal GPU 20–50× speedup
- ⚡ HTJ2K Integration: 5–10× faster volumetric encoding with block-coding acceleration
- 🌊 JPIP 3D Streaming: View-dependent progressive delivery of volumetric datasets
- 🎯 ROI Decoding: Spatial subset decoding for large volumes
- 📐 Part 4 Compliance Testing: Full ISO/IEC 15444-10 conformance test suite
- 🧪 350+ New Tests: Comprehensive unit, integration, compliance, and performance tests
- 📚 9 Documentation Guides: Complete JP3D reference documentation
What's New
1. JP3D Core Types & Foundational Volumetric Support (Weeks 211-213)
Complete JP3D type system and foundational data structures for ISO/IEC 15444-10.
Features
- J2KVolume: Core volumetric image container with width, height, depth, and component data
- J2KVolumeComponent: Per-component volumetric sample data with precision and signedness
- JP3DRegion: 3D spatial region for ROI specification and progressive delivery
- JP3DTile: Volumetric tile container with spatial coordinates and coded data
- JP3DPrecinct: 3D precinct structure for packet-level spatial organisation
- JP3DTilingConfiguration: Configurable 3D tiling with independent XYZ tile sizes
- JP3DProgressionOrder: All five volumetric progression orders (LRCP, RLCP, RPCL, PCRL, CPRL)
- JP3DCompressionMode: Lossless, lossy, and near-lossless compression mode selection
- J2K3DCoefficients: Multi-level 3D wavelet coefficient storage with subband addressing
- JP3DSubband: Named 3D subbands (LLL, LLH, LHL, LHH, HLL, HLH, HHL, HHH, …)
- 60 Tests: Complete core type validation
Performance Impact
Component | Performance Gain | Platforms
-------------------------|------------------|------------------
Volume construction | N/A | All platforms
JP3D region math | < 1ms | All platforms
Tiling configuration | < 1ms | All platforms
2. 3D Wavelet Transforms (Weeks 214-217)
High-performance separable 3D wavelet transforms with CPU and Metal GPU implementations.
Features
- JP3DWaveletTransform: Actor-based thread-safe 3D DWT driver
- 5/3 Le Gall reversible lifting: Integer lossless forward and inverse transform
- 9/7 CDF irreversible lifting: Floating-point lossy forward and inverse transform
- Symmetric boundary extension: ISO-compliant boundary handling for arbitrary volume sizes
- Multi-level decomposition: Configurable decomposition depth per axis (Nx, Ny, Nz)
- JP3DAcceleratedDWT: vDSP-accelerated separable convolution on Apple platforms
- JP3DMetalDWT: GPU compute pipeline with 10 Metal Shading Language compute kernels
- 30 Tests: Correctness, boundary, and accuracy validation
Performance Impact
Transform | Volume | CPU (M3) | Metal (M3) | Linux (ARM64) | Speedup (Metal)
-----------------|----------|----------|------------|---------------|----------------
5/3 forward | 256³ | 1.1s | 0.05s | 1.6s | 22×
9/7 forward | 256³ | 1.4s | 0.06s | 2.0s | 23×
5/3 inverse | 256³ | 1.0s | 0.05s | 1.5s | 20×
9/7 inverse | 256³ | 1.3s | 0.06s | 1.9s | 22×
5/3 forward | 512³ | 9.2s | 0.19s | 13.0s | 48×
3. JP3D Encoder (Weeks 218-221)
Full JP3D encoding pipeline with all five progression orders and configurable rate control.
Features
- JP3DEncoder: Actor-based encoder with async encode pipeline
- JP3DEncoderConfiguration: Configurable tile size, decomposition levels, quality layers, and compression mode
- JP3DEncoderResult: Structured encoding output with timing, size, and quality statistics
- JP3DTileDecomposer: Volume-to-tile decomposition with overlap handling
- JP3DRateController: Post-compression rate-distortion (PCRD) optimization for target bit rates
- JP3DPacketFormatter: ISO/IEC 15444-10 compliant packet header and body serialization
- JP3DStreamWriter: Actor for progressive multi-pass codestream writing
- JP3DCodestreamWriter: Low-level marker segment and SOC/EOC generation
- All 5 progression orders: LRCP, RLCP, RPCL, PCRL, CPRL fully implemented
- 50+ Tests: Encoding correctness, progression order, and rate control validation
API Example
import J2KCodec
// Configure encoder
var config = JP3DEncoderConfiguration()
config.tileSize = (x: 64, y: 64, z: 64)
config.decompositionLevels = (nx: 3, ny: 3, nz: 3)
config.qualityLayers = 6
config.compressionMode = .lossless
config.progressionOrder = .lrcp
// Encode volume
let encoder = JP3DEncoder(configuration: config)
let result = try await encoder.encode(volume)
print("Encoded \(result.byteCount) bytes in \(result.encodingTime)s")4. JP3D Decoder (Weeks 222-225)
Complete JP3D decoding pipeline with progressive, ROI, and transcoding support.
Features
- JP3DDecoder: Actor-based decoder with async decode pipeline
- JP3DDecoderConfiguration: Configurable quality layer limit, resolution reduction, and component selection
- JP3DDecoderResult: Structured decoding output with timing and quality metadata
- JP3DCodestreamParser: ISO/IEC 15444-10 marker segment and packet parser
- JP3DProgressiveDecoder: Layer-progressive and resolution-progressive incremental decoding
- JP3DROIDecoder: Spatial-subset decoding for arbitrary JP3DRegion without full-volume decode
- JP3DTranscoder: Direct volume transcoding between compression modes and quality layers
- 50+ Tests: Decoding correctness, progressive quality, ROI, and transcoding validation
API Example
import J2KCodec
// Decode full volume
let decoder = JP3DDecoder()
let volume = try await decoder.decode(codestreamData)
// Decode spatial ROI only
var roiConfig = JP3DDecoderConfiguration()
roiConfig.region = JP3DRegion(x: 0, y: 0, z: 64, width: 128, height: 128, depth: 64)
let roiDecoder = JP3DROIDecoder(configuration: roiConfig)
let subVolume = try await roiDecoder.decode(codestreamData)5. HTJ2K Integration (Weeks 226-228)
High-Throughput JPEG 2000 block coding for 5–10× faster volumetric encoding and decoding.
Features
- JP3DHTJ2KCodec: HTJ2K block encoder and decoder for 3D codeblocks
- JP3DHTJ2KConfiguration: Configurable HT block mode, irreversible/reversible selection
- JP3DHTJ2KBlockMode: HT block mode flags (FAST, MIXED, HT_ONLY)
- JP3DHTMarkers: HTJ2K marker segment extensions for JP3D codestreams
- losslessHTJ2K: Lossless mode using HT Cleanup + Refinement passes
- lossyHTJ2K: Lossy mode using single HT Cleanup pass for maximum throughput
- 5–10× faster encoding: Measured on volumetric medical and scientific datasets
- 25+ Tests: HTJ2K correctness, mode selection, and throughput validation
Performance Impact
Mode | Volume | Standard J2K (M3) | HTJ2K (M3) | Speedup
------------------|----------|-------------------|------------|--------
Lossless encode | 256³ | 2.1s | 0.38s | 5.5×
Lossless decode | 256³ | 1.4s | 0.22s | 6.4×
Lossy encode | 256³ | 1.8s | 0.18s | 10.0×
Lossy decode | 256³ | 1.1s | 0.14s | 7.9×
6. JPIP Extension for JP3D Streaming (Weeks 229-232)
View-dependent progressive delivery of volumetric datasets over JPIP.
Features
- JP3DJPIPClient: Actor-based JPIP client with 3D viewport and region negotiation
- JP3DJPIPServer: Actor-based JPIP server with JP3D codestream serving and session management
- JP3DStreamingTypes: Complete set of JP3D streaming types including:
JP3DViewport— camera frustum–based 3D region selectionJP3DStreamingRegion— spatial and quality-layer streaming regionJP3DDataBin— JP3D precinct and tile-part data binJP3DStreamingSession— persistent JPIP session with cache stateJP3DStreamingRequest— JPIP request message for 3D datasetsJP3DStreamingResponse— JPIP response with incremental data
- JP3DCacheManager: Client-side JP3D data bin cache with LRU eviction
- JP3DProgressiveDelivery: 8 progression modes for view-dependent streaming
- 40+ Tests: Client, server, streaming, and cache validation
API Example
import JPIP
// Connect JP3D JPIP client
let client = JP3DJPIPClient()
try await client.connect(to: serverURL)
// Request viewport-based streaming
var viewport = JP3DViewport(center: (128, 128, 128), radius: 64)
let session = try await client.openSession(volume: volumeID, viewport: viewport)
// Progressive delivery
for try await dataChunk in session.progressiveStream() {
await renderer.update(with: dataChunk)
}7. Compliance Testing & Part 4 Validation (Weeks 233-234)
Complete ISO/IEC 15444-10 conformance and interoperability testing.
Features
- ISO/IEC 15444-10 conformance test suite: Full Part 10 encoder and decoder conformance
- Part 4 validation: Compliance of all progression orders, tile sizes, and decomposition levels
- Round-trip accuracy tests: Bit-exact lossless round-trip for all compression modes
- **Cross-p...