Ticket #28: wrong-endian-convert.patch

File wrong-endian-convert.patch, 1.7 kB (added by ed@catmur.co.uk, 2 years ago)

Proposed patch.

  • src/pulsecore/sconv.c

    old new  
    7272    oil_memcpy(b, a, sizeof(float) * n); 
    7373} 
    7474 
     75static void float32re_to_float32ne(unsigned n, const void *a, float *b) { 
     76    assert(a); 
     77    assert(b); 
     78 
     79    while (n-- > 0) 
     80    ((uint32_t *)b)[n] = UINT32_SWAP (((uint32_t *)a)[n]); 
     81} 
     82 
     83static void float32re_from_float32ne(unsigned n, const float *a, void *b) { 
     84    assert(a); 
     85    assert(b); 
     86 
     87    while (n-- > 0) 
     88    ((uint32_t *)b)[n] = UINT32_SWAP (((uint32_t *)a)[n]); 
     89} 
     90 
    7591static void ulaw_to_float32ne(unsigned n, const void *a, float *b) { 
    7692    const uint8_t *ca = a; 
    7793 
     
    140156            return pa_sconv_s16be_to_float32ne; 
    141157        case PA_SAMPLE_FLOAT32NE: 
    142158            return float32ne_to_float32ne; 
     159    case PA_SAMPLE_FLOAT32RE: 
     160        return float32re_to_float32ne; 
    143161        case PA_SAMPLE_ALAW: 
    144162            return alaw_to_float32ne; 
    145163        case PA_SAMPLE_ULAW: 
     
    159177            return pa_sconv_s16be_from_float32ne; 
    160178        case PA_SAMPLE_FLOAT32NE: 
    161179            return float32ne_from_float32ne; 
     180        case PA_SAMPLE_FLOAT32RE: 
     181            return float32re_from_float32ne; 
    162182        case PA_SAMPLE_ALAW: 
    163183            return alaw_from_float32ne; 
    164184        case PA_SAMPLE_ULAW: