分享

混合两路PCM音频

 海漩涡 2015-06-24
#include <stdio.h>
#include <pthread.h>
#include <math.h>
#include <errno.h>
/*
if( data1 < 0 && data2 < 0)  
    date_mix = data1+data2 - (data1 * data2 / -(pow(2,16-1)-1));  
else  
    date_mix = data1+data2 - (data1 * data2 / (pow(2,16-1)-1));

*/
typedef void* (*Func)(void*);
typedef void* Para;

int Pthread_create(Func func ,Para para)
{
pthread_t pid;
if(0 != pthread_create(&pid,NULL,func,para))
{
printf("pthread_create faile\n");
return -1;
}
pthread_detach(pid);
return 0;
}


int main(int argc, char *argv[])
{
FILE *fp1 = NULL;
FILE *fp2 = NULL;
FILE *fp3 = NULL;
short int  buf1 = 0;
short int  buf2 = 0;
short int  buf3 = 0;
fp1 = fopen(argv[1],"r+");
if(NULL == fp1)
{
perror("\n");
printf("fopen fail-----1[%s]\n",argv[1]);
return -1;
}
fp2 = fopen(argv[2],"r+");
if(NULL == fp2)
{
perror("\n");
printf("fopen fail-----2[%s]\n",argv[2]);
return -1;
}

fp3 = fopen(argv[3],"w+");
if(NULL == fp3)
{
perror("\n");
printf("fopen fail-----3[%s]\n",argv[3]);
return -1;
}


while(1)
{
if(1 != fread(&buf1,2,1,fp1))
{
printf("fread fail\n");
//return -1;
break;
}

if(1 != fread(&buf2,2,1,fp2))
{
printf("fread fail\n");
//return -1;
break;
}

if( buf1 < 0 && buf2 < 0)  
{
buf3 = buf1+buf2 - (buf1 * buf2 / -(pow(2,16-1)-1));  
}
else
{
buf3 = buf1+buf2 - (buf1 * buf2 / (pow(2,16-1)-1));
}

if(1 != fwrite(&buf3,2,1,fp3))
{
printf("fwrite faile\n");
return -1;
}

printf("mix-------------\n");
}
printf("mix over\n");
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多