Skip to main content

CudaBatchDecoder

Struct CudaBatchDecoder 

Source
pub struct CudaBatchDecoder { /* private fields */ }
Expand description

Persistent CUDA batch decoder that reuses one CudaSession.

Implementations§

Source§

impl CudaBatchDecoder

Source

pub fn new() -> Self

Create a decoder with a lazily initialized CUDA session and strict shared batch options.

Source

pub fn with_options(options: BatchDecodeOptions) -> Self

Create a decoder with explicit shared preparation options.

Source

pub fn with_session(session: CudaSession) -> Self

Create a decoder around an existing CUDA session.

Source

pub const fn with_session_and_options( session: CudaSession, options: BatchDecodeOptions, ) -> Self

Create a decoder around an existing session and preparation policy.

Source

pub const fn options(&self) -> BatchDecodeOptions

Shared preparation options used by Self::prepare and Self::decode_batch.

Source

pub const fn session(&self) -> &CudaSession

Borrow the persistent session for diagnostics.

Source

pub fn decode_pool_diagnostics( &self, ) -> Result<CudaDecodePoolDiagnostics, Error>

Snapshot the persistent session’s two private decode buffer pools.

Source

pub fn diagnostics(&self) -> Result<CudaSessionDiagnostics, Error>

Snapshot CUDA transfer/event counters and retained decode-pool memory.

Source

pub fn session_mut(&mut self) -> &mut CudaSession

Mutably borrow the persistent session for advanced configuration.

Source

pub fn prepare( &self, inputs: Vec<EncodedImage>, ) -> Result<PreparedBatch, BatchInfrastructureError>

Inspect and group owned inputs without copying their compressed bytes.

Source

pub fn prepare_prepared_images( &self, images: Vec<PreparedImage>, ) -> Result<PreparedBatch, BatchInfrastructureError>

Regroup caller-supplied prepared images without reparsing codestream bytes.

Returned source indices are positions in images; each image retains its original PreparedImage::source_index for provenance.

Source

pub fn decode_batch( &mut self, inputs: Vec<EncodedImage>, ) -> Result<CudaBatchDecodeResult, CudaBatchError>

Prepare and strictly decode one owned batch to CUDA-resident groups.

Source

pub fn decode_prepared_images( &mut self, images: Vec<PreparedImage>, ) -> Result<CudaBatchDecodeResult, CudaBatchError>

Regroup and decode prepared images without reparsing their encoded bytes.

Source

pub fn decode_prepared( &mut self, prepared: &PreparedBatch, ) -> Result<CudaBatchDecodeResult, CudaBatchError>

Strictly decode a reusable shared codec batch to CUDA-resident groups.

Explicit CUDA execution never falls back to CPU-decoded pixels. A CUDA execution error discards the entire affected dense group.

Source

pub unsafe fn decode_batch_into( &mut self, group: &PreparedBatchGroup, destination: &mut CudaExternalDeviceBufferViewMut<'_>, ) -> Result<CudaExternalBatchGroup, CudaBatchError>

Decode one prepared exact-native Gray/RGB/RGBA group directly into a validated caller-owned CUDA allocation range.

The destination must belong to this decoder’s CUDA context and cover the tightly concatenated group output. Decoded pixels are never staged through host memory or copied through an intermediate device output.

§Safety

The destination allocation must remain live until this method returns success. If CUDA completion cannot be proven and an error is returned, the caller must quarantine the allocation rather than free or reuse it.

Source

pub unsafe fn submit_batch_into( &mut self, group: &PreparedBatchGroup, destination: &mut CudaExternalDeviceBufferViewMut<'_>, ) -> Result<SubmittedCudaExternalBatch, CudaBatchError>

Submit one prepared exact-native Gray/RGB/RGBA group into CUDA storage without a host completion wait.

Callers integrating another CUDA runtime must use j2k_cuda_runtime::CudaContext::with_primary_stream_ordering around this submission, then retain the returned value alongside the tensor so codec-internal resources outlive the ordered final store.

§Safety

The destination allocation must remain live and may only be consumed on a CUDA stream ordered after codec completion until this value is waited or dropped. No unordered host or device access may overlap the decode. Stream completion alone does not validate entropy status: callers must not expose the destination as decoded pixels until SubmittedCudaExternalBatch::wait succeeds. If CUDA completion cannot be proven, the external allocation must be quarantined rather than freed or reused.

Source§

impl CudaBatchDecoder

Source

pub fn submit_batch( &mut self, inputs: Vec<EncodedImage>, ) -> Result<SubmittedCudaResidentBatch, CudaBatchError>

Prepare and asynchronously submit a codec-owned CUDA resident batch.

Source

pub fn submit_prepared( &mut self, prepared: &PreparedBatch, ) -> Result<SubmittedCudaResidentBatch, CudaBatchError>

Asynchronously submit reusable prepared inputs to codec-owned CUDA output.

Recoverable execution failures remain group-local and do not suppress later groups. No decoded host staging or final device copy is used.

Trait Implementations§

Source§

impl BatchDecoder for CudaBatchDecoder

Source§

type Output = CudaBatchDecodeResult

Backend-specific successful output.
Source§

type Error = CudaBatchError

Backend-specific infrastructure or execution error.
Source§

fn decode_prepared( &mut self, prepared: &PreparedBatch, ) -> Result<Self::Output, Self::Error>

Decode a reusable prepared batch without consuming its encoded inputs or plans.
Source§

fn options(&self) -> BatchDecodeOptions

Preparation and output policy retained by this persistent session.
Source§

fn prepare_batch( &self, inputs: Vec<EncodedImage>, ) -> Result<PreparedBatch, Self::Error>

Inspect and group owned inputs without consuming their encoded byte owners.
Source§

fn prepare_prepared_images( &self, images: Vec<PreparedImage>, ) -> Result<PreparedBatch, Self::Error>

Regroup caller-supplied prepared images without reparsing their encoded bytes.
Source§

fn decode_batch( &mut self, inputs: Vec<EncodedImage>, ) -> Result<Self::Output, Self::Error>

Prepare and decode one owned batch through the common session boundary.
Source§

fn decode_prepared_images( &mut self, images: Vec<PreparedImage>, ) -> Result<Self::Output, Self::Error>

Regroup and decode caller-supplied prepared images without reparsing them.
Source§

impl Clone for CudaBatchDecoder

Source§

fn clone(&self) -> CudaBatchDecoder

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CudaBatchDecoder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CudaBatchDecoder

Source§

fn default() -> CudaBatchDecoder

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.