#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_ */
