免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: wind_fq
打印 上一主题 下一主题

HELLP!!! PLEASE!!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2004-03-04 16:26 |只看该作者

HELLP!!! PLEASE!!!


  1. MSG_Body julius_MsgBody;

  2. char *mstart;
  3. int mlen;

  4. /* declare the static variables*/
  5. static void *p_body = NULL;
  6. static boolean wav_bp = FALSE;
  7. static int maxlenb, nowlen;
  8. static SP16 bpre_data[2];
  9. static boolean bhas_pre = FALSE;

  10. static int sfreq;

  11. int mybufread(void *ptr, size_t size, size_t n)
  12. {
  13. int cnt=0,i=0;
  14. char *t1,*t2;

  15. t1 = (char*)ptr;
  16. t2 = (char*)p_body;
  17. if(NULL == t2)
  18. {
  19. return -2;
  20. }

  21. for(i=0;i<(size*n);i++)
  22. {
  23. *t1 = *t2;
  24. t1 = t1 +1;
  25. t2 = t2 +1;
  26. if(t2 == mstart + mlen)
  27. {
  28. break;
  29. }
  30. }
  31. cnt = i;
  32. if(i<=0)
  33. {
  34. cnt = -2;/* read error */
  35. }
  36. if(i<(size*n-1) && i>;0)
  37. {
  38. cnt = -1;/* end of buffer */
  39. }
  40. if(cnt>;0)
  41. {
  42. (char*)p_body = (char*)p_body + cnt;
  43. }

  44. return(cnt);
  45. }


  46. int adin_buffer_read(SP16 *buf, int sampnum)
  47. {
  48. int cnt;
  49. if (wav_bp)
  50. {
  51. cnt = mybufread(&(buf[0]), sizeof(SP16), sampnum);
  52. if (nowlen + cnt >; maxlenb)
  53. {
  54. cnt = maxlenb - nowlen;
  55. }
  56. }
  57. else
  58. {
  59. if (bhas_pre)
  60. {
  61. buf[0] = bpre_data[0];
  62. buf[1] = bpre_data[1];
  63. bhas_pre = FALSE;

  64. cnt = mybufread(&(buf[2]), sizeof(SP16), sampnum - 2);
  65. if (cnt >; 0) cnt += 2;
  66. }
  67. else
  68. {
  69. cnt = mybufread(&buf, sizeof(SP16), sampnum);
  70. }
  71. }
  72. if (cnt <= 0)
  73. { /* error or EOF */
  74. return cnt; /* -1 ,EOF ; -2, error*/
  75. }
  76. /* all .wav data are in little endian */
  77. /* assume .raw data are in big endian */
  78. #ifdef WORDS_BIGENDIAN
  79. if (wav_bp) swap_sample_bytes(buf, cnt);
  80. #else
  81. if (!wav_bp) swap_sample_bytes(buf, cnt);
  82. #endif
  83. return cnt;

  84. }


  85. I use it like this : cnt = adin_buffer_read(&(buffer[bp]), bpmax - bp);
复制代码

论坛徽章:
0
12 [报告]
发表于 2004-03-04 16:28 |只看该作者

HELLP!!! PLEASE!!!

god! mess........

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
13 [报告]
发表于 2004-03-04 16:30 |只看该作者

HELLP!!! PLEASE!!!

[quote]原帖由 "wind_fq"]god! mess........[/quote 发表:

你这跟原来有什么区别?
还是多加些空行和空格吧!

论坛徽章:
0
14 [报告]
发表于 2004-03-04 16:36 |只看该作者

HELLP!!! PLEASE!!!

en.

How can I do

论坛徽章:
0
15 [报告]
发表于 2004-03-04 16:45 |只看该作者

HELLP!!! PLEASE!!!



  1. extern    MSG_Body julius_MsgBody;

  2. char *mstart;
  3. int mlen;

  4. /* declare the static variables*/
  5. static void *p_body = NULL;
  6. static boolean wav_bp = FALSE;
  7. static int maxlenb, nowlen;
  8. static SP16 bpre_data[2];
  9. static boolean bhas_pre = FALSE;  
  10. static int sfreq;
  11.   

  12. int  mybufread(void *ptr, size_t size, size_t n)
  13. {
  14.    int cnt=0,i=0;
  15.    char *t1,*t2;
  16.    
  17.    t1 = (char*)ptr;
  18.    t2 = (char*)p_body;
  19.    if(NULL == t2)
  20.    {
  21.        return -2;
  22.    }
  23.    for(i=0;i<(size*n);i++)
  24.    {
  25.      *t1 = *t2;
  26.      //t1[0] = t2[0];
  27.      t1 = t1 +1;
  28.      t2 = t2 +1;
  29.      if(t2 == mstart + mlen)
  30.      {
  31.          break;
  32.      }
  33.    }
  34.    
  35.    cnt = i;
  36.    if(i<=0)
  37.    {
  38.      cnt = -2;/* read error */
  39.    }
  40.    if(i<(size*n-1) && i>;0)
  41.    {
  42.      cnt = -1;/* end of buffer */
  43.    }
  44.    if(cnt>;0)
  45.    {
  46.     (char*)p_body = (char*)p_body + cnt;
  47.    }
  48.    
  49.     return(cnt);
  50. }



  51. int adin_buffer_read(SP16 *buf, int sampnum)
  52. {
  53.   printf("\nadin_buffer_read START\n");
  54.   printf("\np_body=%x.\n",(char*)p_body);
  55.    
  56.   int cnt;
  57.   if (wav_bp)
  58.   {
  59.     printf("\n@@WAV_BP@@wav_bp=%d,bhas_pre = %d.\n",wav_bp,bhas_pre);
  60.    
  61.     cnt = mybufread(buf, sizeof(SP16), sampnum);
  62.     if (nowlen + cnt >; maxlenb)
  63.     {
  64.       cnt = maxlenb - nowlen;
  65.     }
  66.   }
  67.   else
  68.   {
  69.     if (bhas_pre)
  70.     {
  71.       buf[0] = bpre_data[0];
  72.       buf[1] = bpre_data[1];
  73.       bhas_pre = FALSE;

  74.       cnt = mybufread(&(buf[2]), sizeof(SP16), sampnum - 2);
  75.       if (cnt >; 0) cnt += 2;
  76.     }
  77.     else
  78.     {
  79.       cnt = mybufread(&buf, sizeof(SP16), sampnum);
  80.     }
  81.   }
  82.   
  83.   if (cnt <= 0)
  84.   {                /* error or EOF */
  85.     return cnt;        /* -1 ,EOF ; -2, error*/
  86.   }
  87.   /* all .wav data are in little endian */
  88.   /* assume .raw data are in big endian */
  89. #ifdef WORDS_BIGENDIAN
  90.   if (wav_bp) swap_sample_bytes(buf, cnt);
  91. #else
  92.   if (!wav_bp) swap_sample_bytes(buf, cnt);
  93. #endif
  94.   return cnt;
  95.    
  96. }

  97. I use it like this : cnt = adin_buffer_read(&(buffer[bp]), bpmax - bp)
复制代码

论坛徽章:
0
16 [报告]
发表于 2004-03-04 16:45 |只看该作者

HELLP!!! PLEASE!!!

god!! success!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP