iPhone/iPad开发札记2012/03/14 Audio Unit into conference project


1. Audio Unit into conference project. 

* compile error 

Expected ')' before '&' token 

in file ConferenceInterface.h


    /**

     *加会方法

     * param加会的配置参数,和ini中的值一致

     */

    int joinConf(ConfigParam& param);


GOT IT ! 仍然是因为对C/C++代码需要使用*.mm !


setupMonoStreamFormat

    // Fill the application audio format struct's fields to define a linear PCM, 

   //        stereo, noninterleaved stream at the hardware sample rate.

    monoStreamFormat.mFormatID          = AUDIO_FORMAT;

   monoStreamFormat.mFormatFlags       =kAudioFormatFlagsAudioUnitCanonical;

    monoStreamFormat.mBytesPerPacket    = bytesPerSample;

   monoStreamFormat.mFramesPerPacket   =1;

    monoStreamFormat.mBytesPerFrame     = bytesPerSample;

    monoStreamFormat.mChannelsPerFrame  = 1;                  // 1 indicates mono

   monoStreamFormat.mBitsPerChannel    =16;

    monoStreamFormat.mSampleRate        = SAMPLE_RATE;


注:此处需要小心setup,否则cofig unit的时候会报错,程序直接killed. 


* input render callback 

    if (inBusNumber ==0) {

returnnoErr// if is stereo bus, no play.

}

// read data audio data from audio engine, here it is 160*6=960 bytes

unsignedint readCount; 

unsignedchar buf[AUDIO_DATA_PACKET_SIZE_IN_BYTES*6]; // 160 bytes 

int BUF_NUM =1;

unsignedchar *ptr = buf;

for (int i=0; i<BUF_NUM; i++) {

// read 160 bytes of audio data

for (;;){

getAudioData(0, ptr, &readCount);

if (readCount !=0) {

break;

}

}

ptr+=160;

}

// put audio data into audio unit buffer 

unsignedchar *outSamplesChannelLeft = (unsignedchar*) ioData->mBuffers[0].mData// todo: this conversion might have issues.

memcpy(outSamplesChannelLeft, buf, BUF_NUM*160);



Q: AudioSampleType与unsigned char *之间的类型转换与memcpy是否会有什么问题?


* 3:00 PM,总结一下播放的状态

大约12ms callback被呼叫一次,每次要求512 frame数据

          ^ 与播放的audio data参数有对应关系吗? 2012/03/15 

          ^ 512 frames可能是指缓冲区最大长度,不代表一定要这么多。可能没有填充的部分iOS就忽略了。2012/03/15

如果每次只读160B,并发给audio unit,

        声音不对

        但声音的时长是对的,并且似乎随不同的声音,出来的声音会有变化

可能要修改的地方

        ASDB

       AudioSampleType与unsigned char *之间的变化

             Q: 是否应该将一个音频的sample(16b)转换成Audio Sample Type(UInt32)后再交给Audio Buffer ?  2012/03/15

       callback要的数据大小与读取的大小之间的关系


       



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值