j2k-metal 0.10.0

Metal decoder and encode-stage adapter for j2k
Documentation
#include <metal_stdlib>
using namespace metal;

struct J2kClassicCleanupBatchJob {
    uint coded_offset;
    uint coded_len;
    uint segment_offset;
    uint segment_count;
    uint width;
    uint height;
    uint output_stride;
    uint output_offset;
    uint missing_msbs;
    uint total_bitplanes;
    uint roi_shift;
    uint number_of_coding_passes;
    uint sub_band_type;
    uint style_flags;
    uint strict;
    uint irreversible_midpoint;
    float dequantization_step;
};

struct J2kClassicSegment {
    uint data_offset;
    uint data_length;
    uint start_coding_pass;
    uint end_coding_pass;
    uint use_arithmetic;
};

struct J2kClassicStatus {
    uint code;
    uint detail;
    uint reserved0;
    uint reserved1;
};

struct J2kClassicRepeatedBatchParams {
    uint job_count;
    uint output_plane_len;
    uint batch_count;
};

struct J2kQeData {
    uint qe;
    uchar nmps;
    uchar nlps;
    uchar switch_mps;
};

struct J2kArithmeticDecoder {
    device const uchar *data;
    uint data_len;
    uint c;
    uint a;
    uint base_pointer;
    uint shift_count;
};

struct J2kBypassDecoder {
    device const uchar *data;
    uint data_len;
    uint bit_pos;
    uint strict;
};