pub struct CudaBatchDecoder { /* private fields */ }Expand description
Persistent CUDA batch decoder that reuses one CudaSession.
Implementations§
Source§impl CudaBatchDecoder
impl CudaBatchDecoder
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a decoder with a lazily initialized CUDA session and strict shared batch options.
Sourcepub fn with_options(options: BatchDecodeOptions) -> Self
pub fn with_options(options: BatchDecodeOptions) -> Self
Create a decoder with explicit shared preparation options.
Sourcepub fn with_session(session: CudaSession) -> Self
pub fn with_session(session: CudaSession) -> Self
Create a decoder around an existing CUDA session.
Sourcepub const fn with_session_and_options(
session: CudaSession,
options: BatchDecodeOptions,
) -> Self
pub const fn with_session_and_options( session: CudaSession, options: BatchDecodeOptions, ) -> Self
Create a decoder around an existing session and preparation policy.
Sourcepub const fn options(&self) -> BatchDecodeOptions
pub const fn options(&self) -> BatchDecodeOptions
Shared preparation options used by Self::prepare and
Self::decode_batch.
Sourcepub const fn session(&self) -> &CudaSession
pub const fn session(&self) -> &CudaSession
Borrow the persistent session for diagnostics.
Sourcepub fn decode_pool_diagnostics(
&self,
) -> Result<CudaDecodePoolDiagnostics, Error>
pub fn decode_pool_diagnostics( &self, ) -> Result<CudaDecodePoolDiagnostics, Error>
Snapshot the persistent session’s two private decode buffer pools.
Sourcepub fn diagnostics(&self) -> Result<CudaSessionDiagnostics, Error>
pub fn diagnostics(&self) -> Result<CudaSessionDiagnostics, Error>
Snapshot CUDA transfer/event counters and retained decode-pool memory.
Sourcepub fn session_mut(&mut self) -> &mut CudaSession
pub fn session_mut(&mut self) -> &mut CudaSession
Mutably borrow the persistent session for advanced configuration.
Sourcepub fn prepare(
&self,
inputs: Vec<EncodedImage>,
) -> Result<PreparedBatch, BatchInfrastructureError>
pub fn prepare( &self, inputs: Vec<EncodedImage>, ) -> Result<PreparedBatch, BatchInfrastructureError>
Inspect and group owned inputs without copying their compressed bytes.
Sourcepub fn prepare_prepared_images(
&self,
images: Vec<PreparedImage>,
) -> Result<PreparedBatch, BatchInfrastructureError>
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.
Sourcepub fn decode_batch(
&mut self,
inputs: Vec<EncodedImage>,
) -> Result<CudaBatchDecodeResult, CudaBatchError>
pub fn decode_batch( &mut self, inputs: Vec<EncodedImage>, ) -> Result<CudaBatchDecodeResult, CudaBatchError>
Prepare and strictly decode one owned batch to CUDA-resident groups.
Sourcepub fn decode_prepared_images(
&mut self,
images: Vec<PreparedImage>,
) -> Result<CudaBatchDecodeResult, CudaBatchError>
pub fn decode_prepared_images( &mut self, images: Vec<PreparedImage>, ) -> Result<CudaBatchDecodeResult, CudaBatchError>
Regroup and decode prepared images without reparsing their encoded bytes.
Sourcepub fn decode_prepared(
&mut self,
prepared: &PreparedBatch,
) -> Result<CudaBatchDecodeResult, CudaBatchError>
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.
Sourcepub unsafe fn decode_batch_into(
&mut self,
group: &PreparedBatchGroup,
destination: &mut CudaExternalDeviceBufferViewMut<'_>,
) -> Result<CudaExternalBatchGroup, CudaBatchError>
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.
Sourcepub unsafe fn submit_batch_into(
&mut self,
group: &PreparedBatchGroup,
destination: &mut CudaExternalDeviceBufferViewMut<'_>,
) -> Result<SubmittedCudaExternalBatch, CudaBatchError>
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
impl CudaBatchDecoder
Sourcepub fn submit_batch(
&mut self,
inputs: Vec<EncodedImage>,
) -> Result<SubmittedCudaResidentBatch, CudaBatchError>
pub fn submit_batch( &mut self, inputs: Vec<EncodedImage>, ) -> Result<SubmittedCudaResidentBatch, CudaBatchError>
Prepare and asynchronously submit a codec-owned CUDA resident batch.
Sourcepub fn submit_prepared(
&mut self,
prepared: &PreparedBatch,
) -> Result<SubmittedCudaResidentBatch, CudaBatchError>
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
impl BatchDecoder for CudaBatchDecoder
Source§type Output = CudaBatchDecodeResult
type Output = CudaBatchDecodeResult
Source§type Error = CudaBatchError
type Error = CudaBatchError
Source§fn decode_prepared(
&mut self,
prepared: &PreparedBatch,
) -> Result<Self::Output, Self::Error>
fn decode_prepared( &mut self, prepared: &PreparedBatch, ) -> Result<Self::Output, Self::Error>
Source§fn options(&self) -> BatchDecodeOptions
fn options(&self) -> BatchDecodeOptions
Source§fn prepare_batch(
&self,
inputs: Vec<EncodedImage>,
) -> Result<PreparedBatch, Self::Error>
fn prepare_batch( &self, inputs: Vec<EncodedImage>, ) -> Result<PreparedBatch, Self::Error>
Source§fn prepare_prepared_images(
&self,
images: Vec<PreparedImage>,
) -> Result<PreparedBatch, Self::Error>
fn prepare_prepared_images( &self, images: Vec<PreparedImage>, ) -> Result<PreparedBatch, Self::Error>
Source§fn decode_batch(
&mut self,
inputs: Vec<EncodedImage>,
) -> Result<Self::Output, Self::Error>
fn decode_batch( &mut self, inputs: Vec<EncodedImage>, ) -> Result<Self::Output, Self::Error>
Source§fn decode_prepared_images(
&mut self,
images: Vec<PreparedImage>,
) -> Result<Self::Output, Self::Error>
fn decode_prepared_images( &mut self, images: Vec<PreparedImage>, ) -> Result<Self::Output, Self::Error>
Source§impl Clone for CudaBatchDecoder
impl Clone for CudaBatchDecoder
Source§fn clone(&self) -> CudaBatchDecoder
fn clone(&self) -> CudaBatchDecoder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CudaBatchDecoder
impl Debug for CudaBatchDecoder
Source§impl Default for CudaBatchDecoder
impl Default for CudaBatchDecoder
Source§fn default() -> CudaBatchDecoder
fn default() -> CudaBatchDecoder
Auto Trait Implementations§
impl Freeze for CudaBatchDecoder
impl RefUnwindSafe for CudaBatchDecoder
impl Send for CudaBatchDecoder
impl Sync for CudaBatchDecoder
impl Unpin for CudaBatchDecoder
impl UnsafeUnpin for CudaBatchDecoder
impl UnwindSafe for CudaBatchDecoder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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