⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pa_converters.c

📁 一个开源的sip源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
        temp = temp | (((long)src[1]) << 16);        temp = temp | (((long)src[2]) << 8);#endif        *dest = temp;        src += sourceStride * 3;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int24_To_Int16(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    unsigned char *src = (unsigned char*)sourceBuffer;    PaInt16 *dest = (PaInt16*)destinationBuffer;        PaInt16 temp;    (void) ditherGenerator; /* unused parameter */            while( count-- )    {		#if defined(PA_LITTLE_ENDIAN)		/* src[0] is discarded */        temp = (((PaInt16)src[1]));        temp = temp | (PaInt16)(((PaInt16)src[2]) << 8);#elif defined(PA_BIG_ENDIAN)		/* src[2] is discarded */        temp = (PaInt16)(((PaInt16)src[0]) << 8);        temp = temp | (((PaInt16)src[1]));#endif        *dest = temp;        src += sourceStride * 3;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int24_To_Int16_Dither(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    (void) destinationBuffer; /* unused parameters */    (void) destinationStride; /* unused parameters */    (void) sourceBuffer; /* unused parameters */    (void) sourceStride; /* unused parameters */    (void) count; /* unused parameters */    (void) ditherGenerator; /* unused parameters */    /* IMPLEMENT ME */}/* -------------------------------------------------------------------------- */static void Int24_To_Int8(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    unsigned char *src = (unsigned char*)sourceBuffer;    signed char  *dest = (signed char*)destinationBuffer;        (void) ditherGenerator; /* unused parameter */            while( count-- )    {		#if defined(PA_LITTLE_ENDIAN)		/* src[0] is discarded */		/* src[1] is discarded */        *dest = src[2];#elif defined(PA_BIG_ENDIAN)		/* src[2] is discarded */		/* src[1] is discarded */		*dest = src[0];#endif        src += sourceStride * 3;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int24_To_Int8_Dither(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    (void) destinationBuffer; /* unused parameters */    (void) destinationStride; /* unused parameters */    (void) sourceBuffer; /* unused parameters */    (void) sourceStride; /* unused parameters */    (void) count; /* unused parameters */    (void) ditherGenerator; /* unused parameters */    /* IMPLEMENT ME */}/* -------------------------------------------------------------------------- */static void Int24_To_UInt8(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    unsigned char *src = (unsigned char*)sourceBuffer;    unsigned char *dest = (unsigned char*)destinationBuffer;        (void) ditherGenerator; /* unused parameter */            while( count-- )    {		#if defined(PA_LITTLE_ENDIAN)		/* src[0] is discarded */		/* src[1] is discarded */        *dest = (unsigned char)(src[2] + 128);#elif defined(PA_BIG_ENDIAN)        *dest = (unsigned char)(src[0] + 128);		/* src[1] is discarded */		/* src[2] is discarded */		#endif        src += sourceStride * 3;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int24_To_UInt8_Dither(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    (void) destinationBuffer; /* unused parameters */    (void) destinationStride; /* unused parameters */    (void) sourceBuffer; /* unused parameters */    (void) sourceStride; /* unused parameters */    (void) count; /* unused parameters */    (void) ditherGenerator; /* unused parameters */    /* IMPLEMENT ME */}/* -------------------------------------------------------------------------- */static void Int16_To_Float32(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    PaInt16 *src = (PaInt16*)sourceBuffer;    float *dest =  (float*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {        float samp = *src * const_1_div_32768_; /* FIXME: i'm concerned about this being asymetrical with float->int16 -rb */        *dest = samp;        src += sourceStride;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int16_To_Int32(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    PaInt16 *src = (PaInt16*)sourceBuffer;    PaInt32 *dest =  (PaInt32*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {        /* REVIEW: we should consider something like            (*src << 16) | (*src & 0xFFFF)        */                *dest = *src << 16;        src += sourceStride;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int16_To_Int24(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    PaInt16 *src   = (PaInt16*) sourceBuffer;    unsigned char *dest = (unsigned char*)destinationBuffer;    PaInt16 temp;    (void) ditherGenerator; /* unused parameter */        while( count-- )    {        temp = *src;        #if defined(PA_LITTLE_ENDIAN)        dest[0] = 0;        dest[1] = (unsigned char)(temp);        dest[2] = (unsigned char)(temp >> 8);#elif defined(PA_BIG_ENDIAN)        dest[0] = (unsigned char)(temp >> 8);        dest[1] = (unsigned char)(temp);        dest[2] = 0;#endif        src += sourceStride;        dest += destinationStride * 3;    }}/* -------------------------------------------------------------------------- */static void Int16_To_Int8(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    PaInt16 *src = (PaInt16*)sourceBuffer;    signed char *dest =  (signed char*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {        (*dest) = (signed char)((*src) >> 8);        src += sourceStride;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int16_To_Int8_Dither(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    PaInt16 *src = (PaInt16*)sourceBuffer;    signed char *dest =  (signed char*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {        /* IMPLEMENT ME */        src += sourceStride;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int16_To_UInt8(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    PaInt16 *src = (PaInt16*)sourceBuffer;    unsigned char *dest =  (unsigned char*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {		(*dest) = (unsigned char)(((*src) >> 8) + 128);         src += sourceStride;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int16_To_UInt8_Dither(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    PaInt16 *src = (PaInt16*)sourceBuffer;    unsigned char *dest =  (unsigned char*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {        /* IMPLEMENT ME */        src += sourceStride;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int8_To_Float32(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    signed char *src = (signed char*)sourceBuffer;    float *dest =  (float*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {        float samp = *src * const_1_div_128_;        *dest = samp;        src += sourceStride;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int8_To_Int32(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    signed char *src = (signed char*)sourceBuffer;    PaInt32 *dest =  (PaInt32*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {		(*dest) = (*src) << 24;        src += sourceStride;        dest += destinationStride;    }}/* -------------------------------------------------------------------------- */static void Int8_To_Int24(    void *destinationBuffer, signed int destinationStride,    void *sourceBuffer, signed int sourceStride,    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator ){    signed char *src = (signed char*)sourceBuffer;    unsigned char *dest =  (unsigned char*)destinationBuffer;    (void)ditherGenerator; /* unused parameter */    while( count-- )    {#if defined(PA_LITTLE_ENDIAN)        dest[0] = 0;        dest[1] = 0;        dest[2] = (*src);#elif defined(PA_BIG_ENDIAN)        dest[0] = (*src);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -