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

DSP编程

开发平台:

C/C++

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