diff options
| author | Josh Blum <josh@joshknows.com> | 2011-11-13 17:11:15 -0800 | 
|---|---|---|
| committer | Josh Blum <josh@joshknows.com> | 2011-11-13 17:11:15 -0800 | 
| commit | 7a1bd6135ad7201f4a23ee71d929ae15de26a103 (patch) | |
| tree | de392478c0f9cc4e1dc14c4db4f58c81d4b27fd5 | |
| parent | ff49029e395e5c78c7ad76e9ff2d7370e5503e7f (diff) | |
| download | uhd-7a1bd6135ad7201f4a23ee71d929ae15de26a103.tar.gz uhd-7a1bd6135ad7201f4a23ee71d929ae15de26a103.tar.bz2 uhd-7a1bd6135ad7201f4a23ee71d929ae15de26a103.zip | |
uhd: fixed sc8 table conversion, and simplified shifts
| -rw-r--r-- | host/lib/convert/convert_with_tables.cpp | 34 | 
1 files changed, 15 insertions, 19 deletions
| diff --git a/host/lib/convert/convert_with_tables.cpp b/host/lib/convert/convert_with_tables.cpp index ac12b4440..bcb7ec2c7 100644 --- a/host/lib/convert/convert_with_tables.cpp +++ b/host/lib/convert/convert_with_tables.cpp @@ -29,7 +29,7 @@ typedef boost::uint16_t (*tohost16_type)(boost::uint16_t);   * Implementation for sc16 lookup table   *  - Lookup the real and imaginary parts individually   **********************************************************************/ -template <typename type, tohost16_type tohost, size_t lo_shift, size_t hi_shift> +template <typename type, tohost16_type tohost, size_t re_shift, size_t im_shift>  class convert_sc16_item32_1_to_fcxx_1 : public converter{  public:      convert_sc16_item32_1_to_fcxx_1(void): _table(sc16_table_len){} @@ -48,8 +48,8 @@ public:          for (size_t i = 0; i < nsamps; i++){              const item32_t item = input[i];              output[i] = std::complex<type>( -                _table[boost::uint16_t(item >> lo_shift)], -                _table[boost::uint16_t(item >> hi_shift)] +                _table[boost::uint16_t(item >> re_shift)], +                _table[boost::uint16_t(item >> im_shift)]              );          }      } @@ -108,47 +108,43 @@ private:   **********************************************************************/  #ifdef BOOST_BIG_ENDIAN -#  define BE_LO_SHIFT 16 -#  define BE_HI_SHIFT 0 -#  define LE_LO_SHIFT 0 -#  define LE_HI_SHIFT 16 +#  define SHIFT_PAIR0 16, 0 +#  define SHIFT_PAIR1 0, 16  #else -#  define BE_LO_SHIFT 0 -#  define BE_HI_SHIFT 16 -#  define LE_LO_SHIFT 16 -#  define LE_HI_SHIFT 0 +#  define SHIFT_PAIR0 0, 16 +#  define SHIFT_PAIR1 16, 0  #endif  static converter::sptr make_convert_sc16_item32_be_1_to_fc32_1(void){ -    return converter::sptr(new convert_sc16_item32_1_to_fcxx_1<float, uhd::ntohx, BE_LO_SHIFT, BE_HI_SHIFT>()); +    return converter::sptr(new convert_sc16_item32_1_to_fcxx_1<float, uhd::ntohx, SHIFT_PAIR0>());  }  static converter::sptr make_convert_sc16_item32_be_1_to_fc64_1(void){ -    return converter::sptr(new convert_sc16_item32_1_to_fcxx_1<double, uhd::ntohx, BE_LO_SHIFT, BE_HI_SHIFT>()); +    return converter::sptr(new convert_sc16_item32_1_to_fcxx_1<double, uhd::ntohx, SHIFT_PAIR0>());  }  static converter::sptr make_convert_sc16_item32_le_1_to_fc32_1(void){ -    return converter::sptr(new convert_sc16_item32_1_to_fcxx_1<float, uhd::wtohx, LE_LO_SHIFT, LE_HI_SHIFT>()); +    return converter::sptr(new convert_sc16_item32_1_to_fcxx_1<float, uhd::wtohx, SHIFT_PAIR1>());  }  static converter::sptr make_convert_sc16_item32_le_1_to_fc64_1(void){ -    return converter::sptr(new convert_sc16_item32_1_to_fcxx_1<double, uhd::wtohx, LE_LO_SHIFT, LE_HI_SHIFT>()); +    return converter::sptr(new convert_sc16_item32_1_to_fcxx_1<double, uhd::wtohx, SHIFT_PAIR1>());  }  static converter::sptr make_convert_sc8_item32_be_1_to_fc32_1(void){ -    return converter::sptr(new convert_sc8_item32_1_to_fcxx_1<float, uhd::ntohx, BE_LO_SHIFT, BE_HI_SHIFT>()); +    return converter::sptr(new convert_sc8_item32_1_to_fcxx_1<float, uhd::ntohx, SHIFT_PAIR1>());  }  static converter::sptr make_convert_sc8_item32_be_1_to_fc64_1(void){ -    return converter::sptr(new convert_sc8_item32_1_to_fcxx_1<double, uhd::ntohx, BE_LO_SHIFT, BE_HI_SHIFT>()); +    return converter::sptr(new convert_sc8_item32_1_to_fcxx_1<double, uhd::ntohx, SHIFT_PAIR1>());  }  static converter::sptr make_convert_sc8_item32_le_1_to_fc32_1(void){ -    return converter::sptr(new convert_sc8_item32_1_to_fcxx_1<float, uhd::wtohx, LE_LO_SHIFT, LE_HI_SHIFT>()); +    return converter::sptr(new convert_sc8_item32_1_to_fcxx_1<float, uhd::wtohx, SHIFT_PAIR0>());  }  static converter::sptr make_convert_sc8_item32_le_1_to_fc64_1(void){ -    return converter::sptr(new convert_sc8_item32_1_to_fcxx_1<double, uhd::wtohx, LE_LO_SHIFT, LE_HI_SHIFT>()); +    return converter::sptr(new convert_sc8_item32_1_to_fcxx_1<double, uhd::wtohx, SHIFT_PAIR0>());  }  UHD_STATIC_BLOCK(register_convert_sc16_item32_1_to_fcxx_1){ | 
