ICETEK-DM642-C.c
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:1k
源码类别:

DSP编程

开发平台:

C/C++

  1. #include "math.h"
  2. #include <csl_cache.h>
  3. #include "ICETEK-DM642-C.h"
  4. //工作变量
  5. #pragma DATA_SECTION(nMemTemp, ".INTPROCBUFF");
  6. #pragma DATA_ALIGN(nMemTemp,128);
  7. unsigned char nMemTemp[720];
  8. #pragma DATA_SECTION(nUV, ".INTPROCBUFF");
  9. unsigned char nUV[720];
  10. #pragma DATA_SECTION(fHisto, ".INTPROCBUFF");
  11. #pragma DATA_ALIGN(fHisto,128);
  12. float fHisto[256];
  13. #pragma DATA_SECTION(lut, ".INTPROCBUFF");
  14. #pragma DATA_ALIGN(lut,128);
  15. unsigned char lut[256];
  16. int mi,mj,m_nWork1;
  17. unsigned int m_nWork,*pWork,js;
  18. unsigned char *pImg,*pImg1;
  19. float m_fWork;
  20. void ICETEKDM642CInit()
  21. {
  22. js=0;
  23. for ( mi=0;mi<720;mi++ )
  24. nUV[mi]=0x80;
  25. for ( mi=0;mi<256;mi++ )
  26. {
  27. fHisto[mi]=0.0f;
  28. lut[mi]=0;
  29. }
  30. }
  31. #pragma CODE_SECTION(ICETEKDM642CStatistic,".text1")
  32. void ICETEKDM642CStatistic()
  33. {
  34. int i;
  35. for ( i=0;i<720;i++ )
  36. {
  37. fHisto[nMemTemp[i]]++;
  38. nMemTemp[i]=lut[nMemTemp[i]];
  39. }
  40. CACHE_clean(CACHE_L2ALL, 0, 0);
  41. }
  42. #pragma CODE_SECTION(ICETEKDM642CHistogramEnhance,".text1")
  43. void ICETEKDM642CHistogramEnhance()
  44. {
  45. m_fWork=720*576; fHisto[0]/=m_fWork;
  46. for ( mi=1;mi<256;mi++ )
  47. {
  48. fHisto[mi]/=m_fWork;
  49. fHisto[mi]+=fHisto[mi-1];
  50. }
  51. for ( mi=0;mi<256;mi++ )
  52. {
  53. m_fWork=fHisto[mi];
  54. m_fWork*=255;
  55. lut[mi]=(unsigned char)m_fWork;
  56. }
  57. for ( mi=0;mi<256;mi++ )
  58. fHisto[mi]=0.0f;
  59. CACHE_clean(CACHE_L2ALL, 0, 0);
  60. }