29 lines
788 B
C
29 lines
788 B
C
#ifndef COSMOPOLITAN_DSP_CORE_C1331S_H_
|
|
#define COSMOPOLITAN_DSP_CORE_C1331S_H_
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
|
|
/**
|
|
* Byte sized kernel for resampling difference samples in half.
|
|
*
|
|
* @define (1*(a-128)+3*(a-128)+3*(a-128)+1*(a-128))/(1+3+3+1)+128
|
|
* @see C1331(), Y420CbCr2RgbScale()
|
|
*/
|
|
forceinline pureconst artificial signed char C1331S(signed char al,
|
|
signed char bl,
|
|
signed char cl,
|
|
signed char dl) {
|
|
short ax, bx;
|
|
bx = bl;
|
|
bx += cl;
|
|
bx *= 3;
|
|
ax = al;
|
|
ax += dl;
|
|
ax += bx;
|
|
ax += 4;
|
|
ax >>= 3;
|
|
return ax;
|
|
}
|
|
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_DSP_CORE_C1331S_H_ */
|