免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1542 | 回复: 19
打印 上一主题 下一主题

A Question .Please Help Me ...... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-04 16:59 |只看该作者 |倒序浏览


  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
2 [报告]
发表于 2004-03-04 18:02 |只看该作者

A Question .Please Help Me ......

我没有办法把数据正确的保存到buffer中。
请大家帮我看看,问题是不是出在指针当作参数传递的过程中。
先谢谢大家了 :)

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-03-04 18:09 |只看该作者

A Question .Please Help Me ......

你把(&(buffer[bp])做为参数传入。
不是把buffer这个数组的第bp+1个元素的地址传入。
为什么 mybufread里面用 sizeof(SP16)呢,
它可是buffer数组的整个大小。
具体程序我没看,只是这里不太明白。

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

A Question .Please Help Me ......

那时根据数据源类型(.wav 或者.raw)的不同,截取不同的有效数据部分需要,所以将数据写入buffer中不同的开始点。
这个程序总是不能把数据写入buffer中,但是在mybufread()中,数据已经写入ptr字符串中了。

论坛徽章:
0
5 [报告]
发表于 2004-03-05 09:17 |只看该作者

A Question .Please Help Me ......

Help me ,Please

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

A Question .Please Help Me ......

急切期望各位的帮助

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-03-05 16:16 |只看该作者

A Question .Please Help Me ......

说句实话,你的代码我看不懂。

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

A Question .Please Help Me ......

是哪里看不懂呢?我来解释  :)
确实有点乱。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-03-05 16:22 |只看该作者

A Question .Please Help Me ......

(&(buf[2]),和sizeof(SP16),
有什么关系吗?
你是从数组的第三个元素开始处理的,
为什么要求出整个数组的大小?
你是不是想求出每个数组元素的大小?
你的很多变量都不知是干什么用的,别人怎么给你看呀。

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

A Question .Please Help Me ......

mybufread()是用来将数组中的数据按照一定的采样长度(sampnum或者sampnum-2)读取到数组中的。这个数组的实体是通过adin_buffer_read()的参数buf传送一个首指针,进一步传送到mybufread()中来的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP