/** * Scale by a factor of 2 a row of pixels of 16 bits. * This function operates like scale2x_8_mmx() but for 16 bits pixels. * \param src0 Pointer at the first pixel of the previous row. * \param src1 Pointer at the first pixel of the current row. * \param src2 Pointer at the first pixel of the next row. * \param count Length in pixels of the src0, src1 and src2 rows. It must * be at least 8 and a multiple of 4. * \param dst0 First destination row, double length in pixels. * \param dst1 Second destination row, double length in pixels. */ void scale2x_16_mmx(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count) { if (count % 4 != 0 || count < 8) { scale2x_16_def(dst0, dst1, src0, src1, src2, count); } else { scale2x_16_mmx_border(dst0, src0, src1, src2, count); scale2x_16_mmx_border(dst1, src2, src1, src0, count); } }
/** * Scale by a factor of 2 a row of pixels of 16 bits. * This function operates like scale2x_8_mmx() but for 16 bits pixels. * \param src0 Pointer at the first pixel of the previous row. * \param src1 Pointer at the first pixel of the current row. * \param src2 Pointer at the first pixel of the next row. * \param count Length in pixels of the src0, src1 and src2 rows. It must * be at least 8 and a multiple of 4. * \param dst0 First destination row, double length in pixels. * \param dst1 Second destination row, double length in pixels. */ static void scale2x_16_mmx(uint16* dst0, uint16* dst1, const uint16* src0, const uint16* src1, const uint16* src2, unsigned count) { if (count % 4 != 0 || count < 8) { Scale2xScalerInternal<uint16, Manip_Nat2Nat_16>::scale2x_def(dst0, dst1, src0, src1, src2, count); } else { scale2x_16_mmx_border(dst0, src0, src1, src2, count); scale2x_16_mmx_border(dst1, src2, src1, src0, count); } }