HMMIO hmmio;char name1[54]="E:\\CVIAZ\\Копия CVIAZ_rez\\CVIAZ_V\\cviaz_v\\zap_op.wav";if(hmmio=mmioOpen((LPWSTR)name1, NULL,MMIO_EXIST |MMIO_READ)) ui.edit_Peredano_2->setText("OK");else ui.edit_Peredano_2->setText("BADE");if(mmioSeek(hmmio,0L,SEEK_END<0)ui.edit_P_Vremya_2->setText(str.sprintf("%d",mmioSeek(hmmio,0L,SEEK_END)));else ui.edit_P_Vremya_2->setText("=0");
HMMIO hmmio;char *name1="E:\\CVIAZ\\Копия CVIAZ_rez\\CVIAZ_V\\cviaz_v\\zap_op.wav";if(hmmio=mmioOpen(name1, NULL,MMIO_EXIST |MMIO_READ)) ui.edit_Peredano_2->setText("OK");else ui.edit_Peredano_2->setText("BADE");if(mmioSeek(hmmio,0L,SEEK_END<0)ui.edit_P_Vremya_2->setText(str.sprintf("%d",mmioSeek(hmmio,0L,SEEK_END)));else ui.edit_P_Vremya_2->setText("=0");
C++ (Qt)LPWSTR name1="E:\\CVIAZ\\Копия CVIAZ_rez\\CVIAZ_V\\cviaz_v\\zap_op.wav";
LPWSTR name1=L"E:\\CVIAZ\\Копия CVIAZ_rez\\CVIAZ_V\\cviaz_v\\zap_op.wav";
WAVEFORMATEX* wfx; // Указатель на объект структуры WAVEFORMATEX HMMIO m_hmmioIn; // Мультимедийный дескриптор файла MMCKINFO m_ckIn; // Инфоромация о вложенном блоке формата RIFF MMCKINFO m_ckInRiff; // Используется при открытии аудио файла DWORD dwDataSize; // РАЗМЕР ВЛОЖЕННОГО БЛОКА ДАННЫХ HPSTR lpData; //указатель на вложенный блок данныхLPWSTR File_Name=L"zap_op.wav"; m_hmmioIn=mmioOpen(File_Name, NULL,MMIO_ALLOCBUF|MMIO_READ); if(m_hmmioIn!=NULL) ui.text2_4->setText("OK"); else ui.text2_4->setText("BADE"); ui.edit_P_Vremya_2->setText(str.sprintf("%d",mmioSeek(m_hmmioIn,0L,SEEK_END))); m_ckIn.fccType = mmioFOURCC( 'W', 'A', 'V', 'E'); if (mmioDescend(m_hmmioIn, (LPMMCKINFO) &m_ckIn, NULL, MMIO_FINDRIFF)!=NULL) { ui.text2_4->setText("ther is no wave file"); mmioClose( m_hmmioIn, NULL ); return 0; } // Установка текущей позиции файла на начало блока данных m_ckIn.ckid = mmioFOURCC('d', 'a', 't', 'a'); m_ckInRiff.fccType = NULL; if (mmioDescend(m_hmmioIn, &m_ckIn, &m_ckInRiff, MMIO_FINDCHUNK)!=NULL) { ui.text2_4->setText("ther is no data chuck in file"); } dwDataSize=m_ckInRiff.cksize; if (dwDataSize==0L) { ui.text2_4->setText("data=0"); } if (mmioRead(m_hmmioIn,(HPSTR) lpData,dwDataSize )!=dwDataSize) { ui.text2_4->setText("error in reading"); }
C++ (Qt)ui.edit_P_Vremya_2->setText(str.sprintf("%d",mmioSeek(m_hmmioIn,0L,SEEK_END)));
WAVEFORMATEX* wfx; // Указатель на объект структуры WAVEFORMATEX HMMIO m_hmmioIn; // Мультимедийный дескриптор файла HMMIO m_hmmioOut; // Мультимедийный дескриптор файла MMCKINFO m_ckIn; // Инфоромация о вложенном блоке формата RIFF MMCKINFO m_ckInRiff; // Используется при открытии аудио файла DWORD dwDataSize; // РАЗМЕР ВЛОЖЕННОГО БЛОКА ДАННЫХ HPSTR lpData; //указатель на вложенный блок данных MMIOINFO mmioinf; MMCKINFO ckOutRIFF; MMCKINFO ckOut; MMIOINFO mmioinfoOut; PCMWAVEFORMAT pcmWaveFormat; #define N2 22050bool cviaz_v:: sound_volum(){ LPWSTR File_Name=L"zap_op.wav"; BYTE y_byte_1[N2*4],y_byte[N2*4]; int sh_byte_3=0; WORD prom10; WORD x_sh[2*N2]={0,}; long lSamples; // number of samples m_hmmioIn=mmioOpen(File_Name, NULL,MMIO_ALLOCBUF|MMIO_READ); if(m_hmmioIn!=NULL) ui.edit_Peredano_2->setText("OK"); else ui.edit_Peredano_2->setText("BADE"); //ui.edit_P_Vremya_2->setText(str.sprintf("%d",mmioSeek(m_hmmioIn,0L,SEEK_END))); m_ckIn.fccType = mmioFOURCC( 'W', 'A', 'V', 'E'); if (mmioDescend(m_hmmioIn, (LPMMCKINFO) &m_ckIn, NULL, MMIO_FINDRIFF)!=NULL) { ui.edit_Peredano_2->setText("ther is no wave file"); //mmioClose( m_hmmioIn, NULL ); //return 0; } // Установка текущей позиции файла на начало блока данных m_ckIn.ckid = mmioFOURCC('d', 'a', 't', 'a'); m_ckInRiff.fccType = NULL; if (mmioDescend(m_hmmioIn, &m_ckIn, &m_ckInRiff, MMIO_FINDCHUNK)!=NULL) { ui.edit_Peredano_2->setText("ther is no data chuck in file"); } dwDataSize=m_ckIn.cksize; if (dwDataSize==0L) { ui.edit_Peredano_2->setText("data=0"); } int k=sizeof(lpData),priz_k=0; UINT cbDataIn = dwDataSize;start: if( 0 != mmioGetInfo( m_hmmioIn, &mmioinf, 0 ) )return 0; if( cbDataIn > m_ckIn.cksize ) { cbDataIn = m_ckIn.cksize; priz_k=1; } m_ckIn.cksize -= cbDataIn; for( DWORD cT = 0; cT < cbDataIn; cT++ ) { // Чтение информации из файла if( mmioinf.pchNext == mmioinf.pchEndRead ) { if( 0 != mmioAdvance( m_hmmioIn, &mmioinf, MMIO_READ ) ) return 0; if( mmioinf.pchNext == mmioinf.pchEndRead ) return 0; } // Копирование информации. y_byte_1[sh_byte_3] = *((BYTE*)mmioinf.pchNext); sh_byte_3++; mmioinf.pchNext++; } if(priz_k==1) { Reset(); if( 0 != mmioSetInfo( m_hmmioIn, &mmioinf, 0 ) ) return 0; cbDataIn = 4*N2-cbDataIn; priz_k=0; // str.Format("K=1 priz_k=%d,cbDataIn=%d,m_ckIn.cksize=%d,mmioinfoIn.pchEndRead =%d\n",priz_k,cbDataIn,m_ckIn.cksize,mmioinfoIn.pchEndRead ); // pr1.WriteString(str); goto start; } for( int i= 0; i < 4*N2; i=i+2 ) { prom10=0; prom10=y_byte_1[i+1]; prom10=prom10<<8; x_sh[i/2]=(prom10+(WORD)y_byte_1[i]); y_byte[i+1]=(BYTE)(prom10>>8); } if( 0!= mmioSetInfo( m_hmmioIn, &mmioinf, 0 ) ) return 0; ///////////write // Write the PCMWAVEFORMAT structure //---------------------------------------------- pcmWaveFormat.wf.wFormatTag=WAVE_FORMAT_PCM; pcmWaveFormat.wf.nChannels=1; pcmWaveFormat.wf.nBlockAlign=2; pcmWaveFormat.wf.nSamplesPerSec=N2; pcmWaveFormat.wf.nAvgBytesPerSec=N2*2; pcmWaveFormat.wBitsPerSample=16; //---------------------------------------------- LPWSTR OutFile=L"zap_op_out.wav"; m_hmmioOut = mmioOpen(OutFile, NULL, MMIO_ALLOCBUF | MMIO_WRITE | MMIO_CREATE); for (int lSamples =2*N2; lSamples > 0; lSamples--) { if (mmioinfoOut.pchNext == mmioinfoOut.pchEndWrite) { mmioinfoOut.dwFlags |= MMIO_DIRTY; if (mmioAdvance(m_hmmioOut, &mmioinfoOut, MMIO_WRITE) != 0) QMessageBox::warning(0,"Error","error write file buffer"); } *(mmioinfoOut.pchNext)++ = y_byte_1[2*N2-lSamples] ; } if (m_hmmioOut == NULL){QMessageBox::warning(0,"Error","error open out file"); return 0;} ckOutRIFF.fccType = mmioFOURCC('W', 'A', 'V', 'E'); if (mmioCreateChunk(m_hmmioOut, &ckOutRIFF, MMIO_CREATERIFF) != 0) {QMessageBox::warning(0,"Error","error create chuck wave in out file");return 0;} ckOut.ckid = mmioFOURCC('f', 'm', 't', ' '); if (mmioCreateChunk(m_hmmioOut, &ckOut, 0) != 0) QMessageBox::warning(0,"Error","error create chuck fmt in out file"); if (mmioWrite(m_hmmioOut, (HPSTR) &pcmWaveFormat, sizeof(pcmWaveFormat))!= sizeof(pcmWaveFormat)) QMessageBox::warning(0,"Error","cant write new file"); if (mmioAscend(m_hmmioOut, &ckOut, 0) != 0)QMessageBox::warning(0,"Error","in writing"); ckOut.ckid = mmioFOURCC('d', 'a', 't', 'a'); if (mmioCreateChunk(m_hmmioOut, &ckOut, 0) != 0)QMessageBox::warning(0,"Error","error create chuck data in out file"); if (mmioGetInfo(m_hmmioOut, &mmioinfoOut, 0) != 0)QMessageBox::warning(0,"Error"," end error");}HRESULT cviaz_v::Reset(){ // Поиск начала информации if( mmioSeek( m_hmmioIn, m_ckInRiff.dwDataOffset + sizeof(FOURCC), SEEK_SET ) < 0) return 0; // Поиск во входном файле блока 'data'. m_ckIn.ckid = mmioFOURCC('d', 'a', 't', 'a'); if( mmioDescend( m_hmmioIn, &m_ckIn, &m_ckInRiff, MMIO_FINDCHUNK ) != 0) return 0; return S_OK;}