Beispiel #1
0
t_jit_err GainMatrixCalc(t_gain* self, void *inputs, void *outputs)
{
    t_jit_err			err = JIT_ERR_NONE;
    long				in_savelock;
    long				out_savelock;
    void				*in_matrix;
    void				*out_matrix;

    in_matrix 	= jit_object_method(inputs,_jit_sym_getindex,0);
    out_matrix 	= jit_object_method(outputs,_jit_sym_getindex,0);

    if (self && in_matrix && out_matrix) {
        in_savelock = TTMatrixReferenceJitterMatrix(*self->m_x, in_matrix, false);		// we're just scaling, and this is a trivial example, so we don't copy
        out_savelock = TTMatrixReferenceJitterMatrix(*self->m_y, out_matrix, false);	// we're just scaling, and this is a trivial example, so we don't copy

        self->m_gain->calculate(*self->m_x, *self->m_y);

        jit_object_method(out_matrix, _jit_sym_lock, out_savelock);
        jit_object_method(in_matrix, _jit_sym_lock, in_savelock);
    }
    else
        return JIT_ERR_INVALID_PTR;

    return err;
}
t_jit_err StencilMatrixCalc(StencilObjectPtr self, void *inputs, void *outputs)
{
	t_jit_err			err = JIT_ERR_NONE;
	long				in_savelock;
	long				out_savelock;
	void				*in_matrix;
	void				*out_matrix;
	
	in_matrix 	= jit_object_method(inputs,_jit_sym_getindex,0);
	out_matrix 	= jit_object_method(outputs,_jit_sym_getindex,0);

	if (self && in_matrix && out_matrix) {
		in_savelock = TTMatrixReferenceJitterMatrix(self->x, in_matrix);
		out_savelock = TTMatrixReferenceJitterMatrix(self->y, out_matrix);
		
		TTMatrixCopyDataFromJitterMatrix(self->x, in_matrix);
		self->stencilObject->calculate(self->x, self->y);
		TTMatrixCopyDataToJitterMatrix(self->y, out_matrix);
	
		jit_object_method(out_matrix, _jit_sym_lock, out_savelock);
		jit_object_method(in_matrix, _jit_sym_lock, in_savelock);
	}
	else
		return JIT_ERR_INVALID_PTR;
	
	return err;
}