dwt.cpp 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <assert.h>
  4. #include <errno.h>
  5. #include <sys/time.h>
  6. #include <unistd.h>
  7. #include <error.h>
  8. /*#include "dwt_cuda/dwt.h"
  9. #include "dwt_cuda/common.h"
  10. #include "dwt.h"
  11. #include "common.h"
  12. */
  13. #include "common.h"
  14. #include "dwt.h"
  15. #include "common.h"
  16. inline void fdwt(float *in, float *out, int width, int height, int levels)
  17. {
  18. dwt_cuda::fdwt97(in, out, width, height, levels);
  19. }
  20. inline void fdwt(int *in, int *out, int width, int height, int levels)
  21. {
  22. dwt_cuda::fdwt53(in, out, width, height, levels);
  23. }
  24. inline void rdwt(float *in, float *out, int width, int height, int levels)
  25. {
  26. dwt_cuda::rdwt97(in, out, width, height, levels);
  27. }
  28. inline void rdwt(int *in, int *out, int width, int height, int levels)
  29. {
  30. dwt_cuda::rdwt53(in, out, width, height, levels);
  31. }
  32. template<typename T>
  33. int nStage2dDWT(T * in, T * out, T * backup, int pixWidth, int pixHeight, int stages, bool forward)
  34. {
  35. //need add segments
  36. }
  37. template int nStage2dDWT<float>(float*, float*, float*, int, int, int, bool);
  38. template int nStage2dDWT<int>(int*, int*, int*, int, int, int, bool);
  39. void samplesToChar(unsigned char * dst, float * src, int samplesNum)
  40. {
  41. int i;
  42. for(i = 0; i < samplesNum; i++) {
  43. float r = (src[i]+0.5f) * 255;
  44. if (r > 255) r = 255;
  45. if (r < 0) r = 0;
  46. dst[i] = (unsigned char)r;
  47. }
  48. }
  49. void samplesToChar(unsigned char * dst, int * src, int samplesNum)
  50. {
  51. int i;
  52. for(i = 0; i < samplesNum; i++) {
  53. int r = src[i]+128;
  54. if (r > 255) r = 255;
  55. if (r < 0) r = 0;
  56. dst[i] = (unsigned char)r;
  57. }
  58. }
  59. ///* Write output linear orderd*/
  60. template<typename T>
  61. int writeLinear(T *component_cuda, int pixWidth, int pixHeight,
  62. const char * filename, const char * suffix)
  63. {
  64. //need add segments
  65. }
  66. template int writeLinear<float>(float *component_cuda, int pixWidth, int pixHeight, const char * filename, const char * suffix);
  67. template int writeLinear<int>(int *component_cuda, int pixWidth, int pixHeight, const char * filename, const char * suffix);
  68. /* Write output visual ordered */
  69. template<typename T>
  70. int writeNStage2DDWT(T *component_cuda, int pixWidth, int pixHeight,
  71. int stages, const char * filename, const char * suffix)
  72. {
  73. //need add segments
  74. }
  75. template int writeNStage2DDWT<float>(float *component_cuda, int pixWidth, int pixHeight, int stages, const char * filename, const char * suffix);
  76. template int writeNStage2DDWT<int>(int *component_cuda, int pixWidth, int pixHeight, int stages, const char * filename, const char * suffix);