pub struct ConverterRun<'data> { /* private fields */ }
Expand description
A planner / builder for converting frame colors.
This does the computation of Converter::run_to_completion
step-by-step. You begin by
supplying the layouts and can then alter the buffers on which it is run, make choices between
alternative conversion routes introspect the plan, before executing it.
Implementations§
Source§impl<'data> ConverterRun<'data>
impl<'data> ConverterRun<'data>
Sourcepub fn use_input(&mut self, frame_in: &'data Canvas)
pub fn use_input(&mut self, frame_in: &'data Canvas)
Define a canvas of input color data.
This replaces any existing input data.
Note on design: Calling this twice is pointless at the moment. There will be a method added to choose the frames after adding them to the converter. Then the panic will be delayed to runtime with methods of verifying your choice is appropriate to the color of the layouts, such as one plane for rgb, two planes for separate alpha, three planes when yuv420 sub-sampling and so on.
§Panics
The frames must have the layout with which the converter was initialized. This is not guaranteed to panic in future versions!
Sourcepub fn use_output(&mut self, frame_out: &'data mut Canvas)
pub fn use_output(&mut self, frame_out: &'data mut Canvas)
Define an owned output frame to write to.
See Self::use_input
for design and details and panics.
Sourcepub fn add_plane_in(
&mut self,
plane: BytePlaneRef<'data>,
) -> ConverterPlaneHandle<'_>
pub fn add_plane_in( &mut self, plane: BytePlaneRef<'data>, ) -> ConverterPlaneHandle<'_>
Add a read-only slice plane to the input.
Sourcepub fn add_cell_in(
&mut self,
plane: BytePlaneCells<'data>,
) -> ConverterPlaneHandle<'_>
pub fn add_cell_in( &mut self, plane: BytePlaneCells<'data>, ) -> ConverterPlaneHandle<'_>
Add a cell plane to the input.
Note that this plane may overlap be the same as planes added as an output, or overlap. This will fail at runtime when there is no algorithm to map the color data between the two.
Sourcepub fn add_atomic_in(
&mut self,
plane: BytePlaneAtomics<'data>,
) -> ConverterPlaneHandle<'_>
pub fn add_atomic_in( &mut self, plane: BytePlaneAtomics<'data>, ) -> ConverterPlaneHandle<'_>
Add an atomic plane to the input.
pub fn add_plane_out( &mut self, plane: BytePlaneMut<'data>, ) -> ConverterPlaneHandle<'_>
pub fn add_cell_out( &mut self, plane: BytePlaneCells<'data>, ) -> ConverterPlaneHandle<'_>
pub fn add_atomic_out( &mut self, plane: BytePlaneAtomics<'data>, ) -> ConverterPlaneHandle<'_>
Sourcepub fn run(self) -> Result<(), ConversionError>
pub fn run(self) -> Result<(), ConversionError>
Run on the first frames in input and output.
This chooses the image planes based on colors. (With current design rationale this is always a single plane but we’ll stay forward compatible here, I think).