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

DSP编程

开发平台:

C/C++

  1. #include <csl_cache.h>
  2. #include "ICETEK-DM642-C.h"
  3. //工作变量
  4. #pragma DATA_SECTION(nMemTemp, ".INTPROCBUFF");
  5. #pragma DATA_ALIGN(nMemTemp,128);
  6. unsigned char nMemTemp[720];
  7. #pragma DATA_SECTION(nUV, ".INTPROCBUFF");
  8. unsigned char nUV[720];
  9. #pragma DATA_SECTION(cLines, ".INTPROCBUFF");
  10. #pragma DATA_ALIGN(cLines,128);
  11. unsigned char cLines[MWIDTH*3];
  12. int mi,mj,m_nWork1,m_nWork2;
  13. unsigned int m_nWork,*pWork,m_nOffset1,m_nOffset2,m_nOffset3;
  14. unsigned char *pImg1,*pImg2,*pImg3;
  15. unsigned char x1,x2,x3,x4,x5,x6,x7,x8,x9;
  16. #pragma DATA_SECTION(cBuffer, ".INTPROCBUFF");
  17. #pragma DATA_ALIGN(cBuffer,128);
  18. unsigned char cBuffer[9],cWork;
  19. void ICETEKDM642CInit()
  20. {
  21. m_nOffset1=0;
  22. m_nOffset2=MWIDTH;
  23. m_nOffset3=MWIDTH*2;
  24. for ( mi=0;mi<720;mi++ )
  25. nUV[mi]=0x80;
  26. for ( mi=0;mi<MWIDTH*2;mi++ )
  27. cLines[mi]=0;
  28. }
  29. #pragma CODE_SECTION(ICETEKDM642CSobel,".text1")
  30. void ICETEKDM642CSobel()
  31. {
  32. unsigned int m_nID;
  33.     m_nID=DAT_copy(nMemTemp+180,cLines+m_nOffset3,MWIDTH);
  34. pImg1=cLines; pImg1+=m_nOffset1;
  35. pImg2=cLines; pImg2+=m_nOffset2;
  36. pImg3=cLines; pImg3+=m_nOffset3;
  37. x1=(*pImg1); pImg1++; x2=(*pImg1); pImg1++;
  38. x4=(*pImg2); pImg2++; x5=(*pImg2); pImg2++;
  39. x7=(*pImg3); pImg3++; x8=(*pImg3); pImg3++;
  40. for ( mi=0;mi<MWIDTH;mi++,pImg1++,pImg2++,pImg3++ )
  41. {
  42. x3=(*pImg1); x6=(*pImg2); x9=(*pImg3);
  43. m_nWork1=x7+x8+x8-x2-x2-x3;
  44. m_nWork2=x3+x6+x6-x4-x4-x7;
  45. if ( m_nWork1<m_nWork2 )
  46. m_nWork1=m_nWork2;
  47. m_nWork2=m_nWork1+x9-x1;
  48. if ( m_nWork2>255 ) m_nWork2=255;
  49. else if ( m_nWork2<0 ) m_nWork2=0;
  50. nMemTemp[mi+180]=m_nWork2;
  51. x1=x2; x2=x3;
  52. x4=x5; x5=x6;
  53. x7=x8; x8=x9;
  54. }
  55. nMemTemp[mi]=0;
  56. m_nWork=m_nOffset1; m_nOffset1=m_nOffset2;
  57. m_nOffset2=m_nOffset3; m_nOffset3=m_nWork;
  58. CACHE_clean(CACHE_L2ALL, 0, 0);
  59. }