| Liboil Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
void oil_clip_f32 (float *dest,int dstr,const float *src,int sstr,int n,const float *s2_1,const float *s3_1); void oil_clip_f64 (double *dest,int dstr,const double *src,int sstr,int n,const double *s2_1,const double *s3_1); void oil_clip_s16 (int16_t *dest,int dstr,const int16_t *src,int sstr,int n,const int16_t *s2_1,const int16_t *s3_1); void oil_clip_s32 (int32_t *dest,int dstr,const int32_t *src,int sstr,int n,const int32_t *s2_1,const int32_t *s3_1); void oil_clip_s8 (int8_t *dest,int dstr,const int8_t *src,int sstr,int n,const int8_t *s2_1,const int8_t *s3_1); void oil_clip_u16 (uint16_t *dest,int dstr,const uint16_t *src,int sstr,int n,const uint16_t *s2_1,const uint16_t *s3_1); void oil_clip_u32 (uint32_t *dest,int dstr,const uint32_t *src,int sstr,int n,const uint32_t *s2_1,const uint32_t *s3_1); void oil_clip_u8 (uint8_t *dest,int dstr,const uint8_t *src,int sstr,int n,const uint8_t *s2_1,const uint8_t *s3_1); void oil_dequantize8x8_s16 (int16_t *d_8x8,int dstr,const int16_t *s1_8x8,int sstr1,const int16_t *s2_8x8,int sstr2); void oil_diffsquaresum_f64 (double *d_1,const double *src1,int sstr1,const double *src2,int sstr2,int n); void oil_md5 (uint32_t *i_4,const uint32_t *s_16); void oil_mix_u8 (uint8_t *dest,const uint8_t *src1,const uint8_t *src2,const uint8_t *src3,int n); void oil_null (); void oil_scanlinescale2_u8 (uint8_t *d,const uint8_t *s,int n); void oil_sincos_f64 (double *dest1,double *dest2,int n,const double *s1_1,const double *s2_1); void oil_utf8_validate (int32_t *d_1,const uint8_t *s,int n); void oil_diff8x8_s16_u8 (int16_t *d_8x8,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2); void oil_diff8x8_average_s16_u8 (int16_t *d_8x8,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2,const uint8_t *s3_8x8,int ss3); void oil_err_inter8x8_u8_avg (uint32_t *d_1,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,const uint8_t *s3_8x8,int ss2); void oil_recon8x8_inter (uint8_t *d_8x8,int ds,const uint8_t *s1_8x8,int ss1,const int16_t *s2_8x8); void oil_err_intra8x8_u8 (uint32_t *d_1,const uint8_t *s1_8x8,int ss1); void oil_recon8x8_intra (uint8_t *d_8x8,int ds,const int16_t *s_8x8); void oil_colsad8x8_u8 (uint32_t *d_1,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2); void oil_composite_over_u8 (uint8_t *i_n,const uint8_t *s1_n,int n); void oil_diff8x8_const128_s16_u8 (int16_t *d_8x8,const uint8_t *s1_8x8,int ss1); void oil_copy8x8_u8 (uint8_t *d_8x8,int ds,const uint8_t *s_8x8,int ss); void oil_err_inter8x8_u8 (uint32_t *d_1,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2); void oil_fdct8x8theora (const int16_t *s_8x8,int16_t *d_8x8); void oil_rowsad8x8_u8 (uint32_t *d_1,const uint8_t *s1_8x8,const uint8_t *s2_8x8); void oil_recon8x8_inter2 (uint8_t *d_8x8,int ds,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2,const int16_t *s3_8x8); void oil_composite_add_u8 (uint8_t *i_n,const uint8_t *s1_n,int n); void oil_sad8x8_u8_avg (uint32_t *d_1,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,const uint8_t *s3_8x8,int ss2);
void oil_clip_f32 (float *dest,int dstr,const float *src,int sstr,int n,const float *s2_1,const float *s3_1);
Clips each value in src to the range [s2_1,s3_1] and places
the result in dest.
void oil_clip_f64 (double *dest,int dstr,const double *src,int sstr,int n,const double *s2_1,const double *s3_1);
Clips each value in src to the range [s2_1,s3_1] and places
the result in dest.
void oil_clip_s16 (int16_t *dest,int dstr,const int16_t *src,int sstr,int n,const int16_t *s2_1,const int16_t *s3_1);
Clips each value in src to the range [s2_1,s3_1] and places
the result in dest.
void oil_clip_s32 (int32_t *dest,int dstr,const int32_t *src,int sstr,int n,const int32_t *s2_1,const int32_t *s3_1);
Clips each value in src to the range [s2_1,s3_1] and places
the result in dest.
void oil_clip_s8 (int8_t *dest,int dstr,const int8_t *src,int sstr,int n,const int8_t *s2_1,const int8_t *s3_1);
Clips each value in src to the range [s2_1,s3_1] and places
the result in dest.
void oil_clip_u16 (uint16_t *dest,int dstr,const uint16_t *src,int sstr,int n,const uint16_t *s2_1,const uint16_t *s3_1);
Clips each value in src to the range [s2_1,s3_1] and places
the result in dest.
void oil_clip_u32 (uint32_t *dest,int dstr,const uint32_t *src,int sstr,int n,const uint32_t *s2_1,const uint32_t *s3_1);
Clips each value in src to the range [s2_1,s3_1] and places
the result in dest.
void oil_clip_u8 (uint8_t *dest,int dstr,const uint8_t *src,int sstr,int n,const uint8_t *s2_1,const uint8_t *s3_1);
Clips each value in src to the range [s2_1,s3_1] and places
the result in dest.
void oil_dequantize8x8_s16 (int16_t *d_8x8,int dstr,const int16_t *s1_8x8,int sstr1,const int16_t *s2_8x8,int sstr2);
Multiplies each element in s1_8x8 by the corresponding element
in s2_8x8 and places the result in d_8x8.
void oil_diffsquaresum_f64 (double *d_1,const double *src1,int sstr1,const double *src2,int sstr2,int n);
Calculates the sum of squared differences between src1 and src2
and places the result in d_1.
void oil_md5 (uint32_t *i_4,const uint32_t *s_16);
Performs an MD5 checksum iteration. The iteration operates on
the 64 bytes contained in s_16, and changes the hash contained
in i_4. This only implements a portion of the MD5 algorithm.
The full MD5 algorithm requires initializing the hash
with a specific value and additional handling of bytes at the
end of the stream.
See also the md5 example in the Liboil source code.
FIXME: need a reference here
void oil_mix_u8 (uint8_t *dest,const uint8_t *src1,const uint8_t *src2,const uint8_t *src3,int n);
Performs the compisiting operation DEST = (SRC2 IN MASK) OVER SRC1, except it is done incorrectly, so this function should not be used.
FIXME: This function is broken.
|
DEST |
|
SRC1 |
|
SRC2 |
|
MASK |
void oil_null ();
Does nothing, and does it fast.
This function is useful for testing the overhead of calling a Liboil function.
void oil_scanlinescale2_u8 (uint8_t *d,const uint8_t *s,int n);
Upsamples the source array by a factor of two. That is, if the
values in s are A,B,C,D,E, the values written to d are
A,A,B,B,C,C,D,D,E,E. Note that n is the number of elements
written to d, and that half of s is not used.
|
destination array |
|
source array |
|
number of elements |
void oil_sincos_f64 (double *dest1,double *dest2,int n,const double *s1_1,const double *s2_1);
Calculates sin(x) and cos(x) and places the results in dest1 and
dest2 respectively. Values for x start at s1_1 and are incremented
by s2_1 for each destination element.
void oil_utf8_validate (int32_t *d_1,const uint8_t *s,int n);
Checks s for valid UTF-8 characters. If the entire s array
represents valid UTF-8 characters, n is written to d_1.
Otherwise, the index in the array of the beginning of the first
invalid UTF-8 character is written to d_1.
void oil_diff8x8_s16_u8 (int16_t *d_8x8,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2);
Calculates the difference of each value in s1_8x8 and s2_8x8
and places the result in d_8x8. Note that the destination type
is larger than the source type.
void oil_diff8x8_average_s16_u8 (int16_t *d_8x8,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2,const uint8_t *s3_8x8,int ss3);
Calculates the difference of each value in s1_8x8 and the
average of s2_8x8 and s3_8x8,
and places the result in d_8x8. Note that the destination type
is larger than the source type.
void oil_err_inter8x8_u8_avg (uint32_t *d_1,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,const uint8_t *s3_8x8,int ss2);
Calculates an intermediate 8x8 block where each element is the
difference between s1_8x8 and the average of s2_8x8 and s3_8x8.
The sum of squares of the difference of each element in the
intermediate block and the mean of the intermediate block is
placed into d_1.
This result is 64 times the variance of the mean of the intermediate
block.
FIXME: This function is broken, since the reference function uses
ss2 as the stride for both s2_8x8 and s3_8x8.
void oil_recon8x8_inter (uint8_t *d_8x8,int ds,const uint8_t *s1_8x8,int ss1,const int16_t *s2_8x8);
Adds each element in s1_8x8 and s2_8x8, clamps to the range [0,255],
and places the result in the destination array.
void oil_err_intra8x8_u8 (uint32_t *d_1,const uint8_t *s1_8x8,int ss1);
Calculates the sum of squared differences from the mean over
s1_8x8 and places the result in d_1. This result is 64 times
the variance of the mean of s1_8x8.
void oil_recon8x8_intra (uint8_t *d_8x8,int ds,const int16_t *s_8x8);
Adds 128 to each value in the source array, clamps to the range [0,255], and places the result in the destination array.
void oil_colsad8x8_u8 (uint32_t *d_1,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2);
Divides the 8x8 block into 16 1x4 regions, and calculates the
sum of absolute differences between s1_8x8 and s2_8x8 for
each region. The maximum of the results in each region is
placed in d_1.
void oil_composite_over_u8 (uint8_t *i_n,const uint8_t *s1_n,int n);
Performs the compositing operation DEST = SRC OVER DEST.
|
DEST |
|
SRC |
|
number of elements |
void oil_diff8x8_const128_s16_u8 (int16_t *d_8x8,const uint8_t *s1_8x8,int ss1);
Subtracts 128 from each value in s1_8x8
and places the result in d_8x8. Note that the destination type
is larger than the source type.
void oil_copy8x8_u8 (uint8_t *d_8x8,int ds,const uint8_t *s_8x8,int ss);
Copies an 8x8 block.
void oil_err_inter8x8_u8 (uint32_t *d_1,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2);
Calculates an intermediate 8x8 block where each element is the
difference between s1_8x8 and s2_8x8.
The sum of squares of the difference of each element in the
intermediate block and the mean of the intermediate block is
placed into d_1. This result is
equal to 64 times the variance of the mean of the intermediate block.
void oil_fdct8x8theora (const int16_t *s_8x8,int16_t *d_8x8);
Calculates the FDCT transformation of s_8x8 according to the Theora
specification and places the result in d_8x8.
Note that the source and destination arrays are reversed compared to normal Liboil order.
void oil_rowsad8x8_u8 (uint32_t *d_1,const uint8_t *s1_8x8,const uint8_t *s2_8x8);
Calculates the sum of absolute differences between s1_8x8 and s1_8s8
for the first 4 elements of the first row, and the sum of absolute
differences for the last 4 elements of the first row, and places the
maximum of those values in dest.
FIXME: This function is declared incorrectly.
void oil_recon8x8_inter2 (uint8_t *d_8x8,int ds,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,int ss2,const int16_t *s3_8x8);
Adds each element in s1_8x8 and s2_8x8, divides by 2, and adds
to s3_8x8, clamps to the range [0,255], and places the result in
the destination array.
void oil_composite_add_u8 (uint8_t *i_n,const uint8_t *s1_n,int n);
Performs the compositing operation DEST = SRC ADD DEST.
|
DEST |
|
SRC |
|
number of elements |
void oil_sad8x8_u8_avg (uint32_t *d_1,const uint8_t *s1_8x8,int ss1,const uint8_t *s2_8x8,const uint8_t *s3_8x8,int ss2);
Calculates the sum of absolute differences between s1_8x8 and
the average of s2_8x8 and s3_8x8.
FIXME: This function is broken because the reference function assumes
the stride for s3_8x8 is ss2.