Revision 79ea83d6 host/lib/transport/convert_types_impl.hpp

b/host/lib/transport/convert_types_impl.hpp
42 42
/***********************************************************************
43 43
 * Convert complex short buffer to items32
44 44
 **********************************************************************/
45
static UHD_INLINE item32_t sc16_to_item32(sc16_t num){
46
    boost::uint16_t real = num.real();
47
    boost::uint16_t imag = num.imag();
48
    return (item32_t(real) << 16) | (item32_t(imag) << 0);
49
}
50

  
45 51
static UHD_INLINE void sc16_to_item32_nswap(
46 52
    const sc16_t *input, item32_t *output, size_t nsamps
47 53
){
48
    std::memcpy(output, input, nsamps*sizeof(item32_t));
54
    for (size_t i = 0; i < nsamps; i++){
55
        output[i] = sc16_to_item32(input[i]);
56
    }
49 57
}
50 58

  
51 59
static UHD_INLINE void sc16_to_item32_bswap(
52 60
    const sc16_t *input, item32_t *output, size_t nsamps
53 61
){
54
    const item32_t *item32_input = (const item32_t *)input;
55 62
    for (size_t i = 0; i < nsamps; i++){
56
        output[i] = uhd::byteswap(item32_input[i]);
63
        output[i] = uhd::byteswap(sc16_to_item32(input[i]));
57 64
    }
58 65
}
59 66

  
60 67
/***********************************************************************
61 68
 * Convert items32 buffer to complex short
62 69
 **********************************************************************/
70
static UHD_INLINE sc16_t item32_to_sc16(item32_t item){
71
    return sc16_t(
72
        boost::int16_t(item >> 16),
73
        boost::int16_t(item >> 0)
74
    );
75
}
76

  
63 77
static UHD_INLINE void item32_to_sc16_nswap(
64 78
    const item32_t *input, sc16_t *output, size_t nsamps
65 79
){
66
    std::memcpy(output, input, nsamps*sizeof(item32_t));
80
    for (size_t i = 0; i < nsamps; i++){
81
        output[i] = item32_to_sc16(input[i]);
82
    }
67 83
}
68 84

  
69 85
static UHD_INLINE void item32_to_sc16_bswap(
70 86
    const item32_t *input, sc16_t *output, size_t nsamps
71 87
){
72
    item32_t *item32_output = (item32_t *)output;
73 88
    for (size_t i = 0; i < nsamps; i++){
74
        item32_output[i] = uhd::byteswap(input[i]);
89
        output[i] = item32_to_sc16(uhd::byteswap(input[i]));
75 90
    }
76 91
}
77 92

  

Also available in: Unified diff