// Copyright (c) the JPEG XL Project Authors. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file.
/// A RenderPipeline that waits for all input to be ready before doing any rendering, and /// prioritizes simplicity over memory usage and computational efficiency. /// Eventually meant to be used only for verification purposes. pubstruct SimpleRenderPipeline {
shared: RenderPipelineShared<Image<f64>>,
input_buffers: Vec<Image<f64>>,
}
fn set_buffer_for_group<T: ImageDataType>(
&mutself,
channel: usize,
group_id: usize,
complete: bool,
buf: Image<T>,
buffer_splitter: &mut BufferSplitter,
) -> Result<()> {
debug!( "filling data for group {}, channel {}, using type {:?}",
group_id,
channel,
T::DATA_TYPE_ID,
); ifself.shared.channel_is_used[channel] { let sz = self.shared.group_size_for_channel(channel, T::DATA_TYPE_ID); let goffset = self.shared.group_offset(group_id); let ChannelInfo { ty, downsample } = self.shared.channel_info[0][channel]; let off = (goffset.0 >> downsample.0, goffset.1 >> downsample.1);
debug!(?sz, input_buffers_sz=?self.input_buffers[channel].size(), offset=?off, ?downsample, ?goffset); let ty = ty.unwrap();
assert_eq!(ty, T::DATA_TYPE_ID); let total_sz = self.input_buffers[channel].size(); for y in0..sz.1.min(total_sz.1 - off.1) { let row_in = buf.row(y); let row_out = self.input_buffers[channel].row_mut(y + off.1); for x in0..sz.0.min(total_sz.0 - off.0) {
row_out[x + off.0] = row_in[x].to_f64();
}
} self.shared.group_chan_complete[group_id][channel] = complete;
}
self.do_render(buffer_splitter)
}
fn check_buffer_sizes(&self, _buffers: &>mut [Option<JxlOutputBuffer>]) -> Result<()> { // This will be checked during rendering.
Ok(())
}
fn render_outside_frame(&mutself, _buffer_splitter: &e='color:red'>mut BufferSplitter) -> Result<()> { // Nothing to do in the simple pipeline.
Ok(())
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.