0
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 値ではありません)。お知らせ下さい。

4

1 に答える 1