31 lines
746 B
C
31 lines
746 B
C
|
#ifndef COSMOPOLITAN_DSP_CORE_C331_H_
|
||
|
#define COSMOPOLITAN_DSP_CORE_C331_H_
|
||
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||
|
COSMOPOLITAN_C_START_
|
||
|
|
||
|
/**
|
||
|
* Fixed-point 8-bit magic edge resampling kernel.
|
||
|
*
|
||
|
* @define (3*a + 3*b + 1*c) / 7
|
||
|
* @see C1331()
|
||
|
*/
|
||
|
static inline pureconst artificial unsigned char C331(unsigned char al,
|
||
|
unsigned char bl,
|
||
|
unsigned char cl) {
|
||
|
unsigned eax, ebx, ecx;
|
||
|
eax = al;
|
||
|
ebx = bl;
|
||
|
ecx = cl;
|
||
|
eax += ebx;
|
||
|
eax *= 3 * 2350;
|
||
|
ecx *= 1 * 2350;
|
||
|
eax += ecx;
|
||
|
eax >>= 14;
|
||
|
al = eax;
|
||
|
return al;
|
||
|
}
|
||
|
|
||
|
COSMOPOLITAN_C_END_
|
||
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||
|
#endif /* COSMOPOLITAN_DSP_CORE_C331_H_ */
|