use alloc::vec::Vec;
use super::J2kPacketizationProgressionOrder;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct J2kPacketizationCodeBlock<'a> {
pub data: &'a [u8],
pub ht_cleanup_length: u32,
pub ht_refinement_length: u32,
pub num_coding_passes: u8,
pub num_zero_bitplanes: u8,
pub previously_included: bool,
pub l_block: u32,
pub block_coding_mode: J2kPacketizationBlockCodingMode,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum J2kPacketizationBlockCodingMode {
Classic,
HighThroughput,
}
#[derive(Debug, PartialEq, Eq)]
pub struct J2kPacketizationSubband<'a> {
pub code_blocks: Vec<J2kPacketizationCodeBlock<'a>>,
pub num_cbs_x: u32,
pub num_cbs_y: u32,
}
#[derive(Debug, PartialEq, Eq)]
pub struct J2kPacketizationResolution<'a> {
pub subbands: Vec<J2kPacketizationSubband<'a>>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct J2kPacketizationPacketDescriptor {
pub packet_index: u32,
pub state_index: u32,
pub layer: u8,
pub resolution: u32,
pub component: u16,
pub precinct: u64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct J2kPacketizationEncodeJob<'a> {
pub resolution_count: u32,
pub num_layers: u8,
pub num_components: u16,
pub code_block_count: u32,
pub progression_order: J2kPacketizationProgressionOrder,
pub packet_descriptors: &'a [J2kPacketizationPacketDescriptor],
pub resolutions: &'a [J2kPacketizationResolution<'a>],
}
crate::move_only::assert_move_only!(
J2kPacketizationSubband<'static>,
J2kPacketizationResolution<'static>,
);