Skip to main content

J2kEncodeStageAccelerator

Trait J2kEncodeStageAccelerator 

Source
pub trait J2kEncodeStageAccelerator {
Show 16 methods // Provided methods fn dispatch_report(&self) -> J2kEncodeDispatchReport { ... } fn encode_deinterleave( &mut self, _job: J2kDeinterleaveToF32Job<'_>, ) -> Result<Option<Vec<Vec<f32>>>, &'static str> { ... } fn encode_forward_rct( &mut self, _job: J2kForwardRctJob<'_>, ) -> Result<bool, &'static str> { ... } fn encode_forward_ict( &mut self, _job: J2kForwardIctJob<'_>, ) -> Result<bool, &'static str> { ... } fn encode_forward_dwt53( &mut self, _job: J2kForwardDwt53Job<'_>, ) -> Result<Option<J2kForwardDwt53Output>, &'static str> { ... } fn encode_forward_dwt97( &mut self, _job: J2kForwardDwt97Job<'_>, ) -> Result<Option<J2kForwardDwt97Output>, &'static str> { ... } fn encode_quantize_subband( &mut self, _job: J2kQuantizeSubbandJob<'_>, ) -> Result<Option<Vec<i32>>, &'static str> { ... } fn encode_tier1_code_block( &mut self, _job: J2kTier1CodeBlockEncodeJob<'_>, ) -> Result<Option<EncodedJ2kCodeBlock>, &'static str> { ... } fn encode_tier1_code_blocks( &mut self, _jobs: &[J2kTier1CodeBlockEncodeJob<'_>], ) -> Result<Option<Vec<EncodedJ2kCodeBlock>>, &'static str> { ... } fn encode_ht_code_block( &mut self, _job: J2kHtCodeBlockEncodeJob<'_>, ) -> Result<Option<EncodedHtJ2kCodeBlock>, &'static str> { ... } fn encode_ht_code_blocks( &mut self, _jobs: &[J2kHtCodeBlockEncodeJob<'_>], ) -> Result<Option<Vec<EncodedHtJ2kCodeBlock>>, &'static str> { ... } fn encode_ht_subband( &mut self, _job: J2kHtSubbandEncodeJob<'_>, ) -> Result<Option<Vec<EncodedHtJ2kCodeBlock>>, &'static str> { ... } fn encode_htj2k_tile( &mut self, _job: J2kHtj2kTileEncodeJob<'_>, ) -> Result<Option<Vec<u8>>, &'static str> { ... } fn prefer_parallel_cpu_code_block_fallback(&self) -> bool { ... } fn prefer_parallel_cpu_tile_encode(&self) -> bool { ... } fn encode_packetization( &mut self, _job: J2kPacketizationEncodeJob<'_>, ) -> Result<Option<Vec<u8>>, &'static str> { ... }
}
Expand description

Adapter JPEG 2000 encode-stage accelerator for backend experimentation.

Provided Methods§

Source

fn dispatch_report(&self) -> J2kEncodeDispatchReport

Report cumulative backend dispatches completed by this accelerator.

Source

fn encode_deinterleave( &mut self, _job: J2kDeinterleaveToF32Job<'_>, ) -> Result<Option<Vec<Vec<f32>>>, &'static str>

Optionally deinterleave interleaved pixel bytes into f32 component planes.

Return Ok(Some(components)) with one plane per component. Return Ok(None) to use the CPU fallback.

Source

fn encode_forward_rct( &mut self, _job: J2kForwardRctJob<'_>, ) -> Result<bool, &'static str>

Optionally apply forward RCT in place.

Return Ok(true) after writing transformed planes. Return Ok(false) to use the CPU fallback.

Source

fn encode_forward_ict( &mut self, _job: J2kForwardIctJob<'_>, ) -> Result<bool, &'static str>

Optionally apply forward ICT in place.

Return Ok(true) after writing transformed planes. Return Ok(false) to use the CPU fallback.

Source

fn encode_forward_dwt53( &mut self, _job: J2kForwardDwt53Job<'_>, ) -> Result<Option<J2kForwardDwt53Output>, &'static str>

Optionally run a forward reversible 5/3 DWT.

Return Ok(Some(output)) with all subbands populated. Return Ok(None) to use the CPU fallback.

Source

fn encode_forward_dwt97( &mut self, _job: J2kForwardDwt97Job<'_>, ) -> Result<Option<J2kForwardDwt97Output>, &'static str>

Optionally run a forward irreversible 9/7 DWT.

Return Ok(Some(output)) with all subbands populated. Return Ok(None) to use the CPU fallback.

Source

fn encode_quantize_subband( &mut self, _job: J2kQuantizeSubbandJob<'_>, ) -> Result<Option<Vec<i32>>, &'static str>

Optionally quantize one sub-band.

Return Ok(Some(coefficients)) with one quantized coefficient for each input coefficient. Return Ok(None) to use the CPU fallback.

Source

fn encode_tier1_code_block( &mut self, _job: J2kTier1CodeBlockEncodeJob<'_>, ) -> Result<Option<EncodedJ2kCodeBlock>, &'static str>

Optionally encode one classic Tier-1 code-block.

Return Ok(Some(output)) with encoded bytes and pass metadata. Return Ok(None) to use the CPU fallback.

Source

fn encode_tier1_code_blocks( &mut self, _jobs: &[J2kTier1CodeBlockEncodeJob<'_>], ) -> Result<Option<Vec<EncodedJ2kCodeBlock>>, &'static str>

Optionally encode multiple classic Tier-1 code-blocks in one backend dispatch.

Return Ok(Some(outputs)) with one encoded output per input job. Return Ok(None) to use the per-block hook or CPU fallback.

Source

fn encode_ht_code_block( &mut self, _job: J2kHtCodeBlockEncodeJob<'_>, ) -> Result<Option<EncodedHtJ2kCodeBlock>, &'static str>

Optionally encode one HTJ2K code-block.

Return Ok(Some(output)) with encoded bytes and pass metadata. Return Ok(None) to use the CPU fallback.

Source

fn encode_ht_code_blocks( &mut self, _jobs: &[J2kHtCodeBlockEncodeJob<'_>], ) -> Result<Option<Vec<EncodedHtJ2kCodeBlock>>, &'static str>

Optionally encode multiple HTJ2K code-blocks in one backend dispatch.

Return Ok(Some(outputs)) with one encoded output per input job. Return Ok(None) to use the per-block hook or CPU fallback.

Source

fn encode_ht_subband( &mut self, _job: J2kHtSubbandEncodeJob<'_>, ) -> Result<Option<Vec<EncodedHtJ2kCodeBlock>>, &'static str>

Optionally quantize and encode one HTJ2K cleanup-only sub-band.

Return Ok(Some(outputs)) with one encoded output per code block in raster code-block order. Return Ok(None) to use the separate quantization and code-block hooks or CPU fallback.

Source

fn encode_htj2k_tile( &mut self, _job: J2kHtj2kTileEncodeJob<'_>, ) -> Result<Option<Vec<u8>>, &'static str>

Optionally encode the complete HTJ2K tile packet body.

Return Ok(Some(bytes)) with the complete tile bitstream body. CPU marker/header writing remains outside this hook. Return Ok(None) to use the normal staged encode pipeline.

Source

fn prefer_parallel_cpu_code_block_fallback(&self) -> bool

Return whether native CPU code-block fallback should use internal rayon parallelism.

External accelerators keep serial per-block fallback so their hooks still observe every fallback block after a declined batch hook.

Source

fn prefer_parallel_cpu_tile_encode(&self) -> bool

Return whether whole-tile CPU-only batch encode may be parallelized by callers.

This is narrower than Self::prefer_parallel_cpu_code_block_fallback: callers must only bypass the supplied accelerator when it is known to have no observable hooks.

Source

fn encode_packetization( &mut self, _job: J2kPacketizationEncodeJob<'_>, ) -> Result<Option<Vec<u8>>, &'static str>

Optionally packetize prepared packet contributions.

Return Ok(Some(bytes)) with the complete tile bitstream. Return Ok(None) to use the CPU fallback.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§