double buf[1000];
double value;
double *ptr = &value;
for(i=0; i < no_of_iterations; i++) {
for(j=0; j < chunkSize; j++) {
num_bytes_read = fread(ptr,1,pcm_sample_size,fptr); //read one sample
if(num_bytes_read == 2) {
sum_sq += (*ptr) * (*ptr); //calculate power of each sample
buf[j] = *ptr;
}
else {
flag = 0;
break;
}
}
if(!flag) {
printf("exiting loop");
break;
}
power = sum_sq/chunkSize;//calculate rms value of signals for chunkSize samples
if(power < threshold) //compare with some value
printf("power is lower than threshold"); //silence-don't write
else { //write
ret = fwrite(buf,1,pcm_sample_size,optr);
if(ret != 1)
printf("error in fwrite %d", ret);
}
}
printf("done");
fclose(fptr);
fclose(optr);
上記は、いくつかの条件に応じていくつかの pcm サンプルをファイルに書き込むための私のコードですが、fread エラーが発生しています。コントロールは if(num_bytes_read==2) ブロックに入りません。エラーは、サイズが 2 バイトの pcm サンプルを読み取りたいため、それを保存する場所が必要なためだと思います。2 バイトの pcm 値を格納するために使用できるデータ型は何ですか (pcm 値は int 値ではありません)。お知らせ下さい。