// ロック音プラグインのサンプルコード (著作権フリー) #include #include #include #include #define BUF_SIZE 256 int main(int argc,char *argv[]){ WAVEFORMATEX waveFmt; DWORD dwReadByte = BUF_SIZE*1024; LPBYTE lpBuffer = NULL; DWORD dwByte; DWORD dwRemainByte; DWORD dwFoo; DWORD dwDataSize; DWORD dwTotalByte = 0; // stdin をバイナリモードにセット _setmode(_fileno(stdin),_O_BINARY); lpBuffer = (LPBYTE)malloc(dwReadByte+1024); // フォーマット取得 fread(lpBuffer,1,20,stdin); fread(&waveFmt,1,16,stdin); waveFmt.cbSize = 0; fread(lpBuffer,1,4,stdin); fread(&dwDataSize,1,4,stdin); fprintf(stderr,"wave-> %d hz,%d bit,%d chn\n", waveFmt.nSamplesPerSec,waveFmt.wBitsPerSample,waveFmt.nChannels); while(1){ // 読み dwByte = 0; dwRemainByte = dwReadByte; while(dwByte < dwReadByte){ dwFoo = fread(lpBuffer+dwByte,1,dwRemainByte,stdin); dwByte += dwFoo; dwRemainByte -= dwFoo; if(dwFoo == 0 || dwRemainByte == 0) break; } dwTotalByte += dwByte; if(!dwByte) break; // ここでデータを処理する // dwByte が読み込んだデータサイズ fprintf(stderr,"\015%d / %d",dwTotalByte/1024,dwDataSize/1024); } return 0; }