Russian Qt Forum

Программирование => С/C++ => Тема начата: Firefox от Январь 26, 2010, 14:45



Название: Звук не воспроизводиться
Отправлено: Firefox от Январь 26, 2010, 14:45
Здравствуйте. не могу открыть звуковой файл, ни какой ошибки не пишет, но и не открывает. путь указа верно
Код:
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");
помемтить путь прямо в функцию не могу, выдаёт ошибку о несовпадении типов а 1 аргументе функции mmioOpen. хотя в книжках так и пишется.


Название: Re: Звук не воспроизводиться
Отправлено: niXman от Январь 26, 2010, 15:45
http://msdn.microsoft.com/en-us/library/dd757331%28VS.85%29.aspx

какая ошибка?


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Январь 26, 2010, 16:47
В таком варианте
Код:
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");
выдает ошибку:error C2664:'mmioOpenW': cannotconvert parametr 1 from 'char*' to LPWSTR

если в строке
if(hmmio=mmioOpen((LPWSTR)name1, NULL,MMIO_EXIST |MMIO_READ))  добавить принудительно этот тип данных ошибка проходит, но файл не открывается.


Название: Re: Звук не воспроизводиться
Отправлено: niXman от Январь 26, 2010, 17:06
Цитировать
char *name1="E:\\CVIAZ\\Копия CVIAZ_rez\\CVIAZ_V\\cviaz_v\\zap_op.wav";
Код
C++ (Qt)
LPWSTR name1="E:\\CVIAZ\\Копия CVIAZ_rez\\CVIAZ_V\\cviaz_v\\zap_op.wav";
 


Название: Re: Звук не воспроизводиться
Отправлено: crackedmind от Январь 27, 2010, 13:47
Цитировать
char *name1="E:\\CVIAZ\\Копия CVIAZ_rez\\CVIAZ_V\\cviaz_v\\zap_op.wav";
Код
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";

Либо в настройках проекта сменитью Юникод на мульти байт.


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Январь 27, 2010, 20:43
Спаибо помогло, по крайне мере открывает.
Дальше у меня ещё проблемы возникли. проверяю наличие  блока WAVE, совершенно точно знаю что он там есть(пробовала в готовом аналоге проверять исходный файл) но программа моя утверждает обратное.
так же он не находит ни блока data ни блока fmt. совершенно не знаю почему


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Январь 27, 2010, 20:48
вот код
Код:
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");
}


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Январь 28, 2010, 22:56
я задолбалась искать почему функция mmioDescened не находит блоки в wave файле. и я вот сделала всё по кустарному. в общем идея такая открываю файл wave в двоичном виде, считываю информацию и записываю в txt файл. потом в нём нахожу блок data и всё что после него считать надо в массив char. но вот проблема массив получается офигенно большой и программа breik делает. тогда я вот решила так считывать из фаула скажем по 128 бит преобразовывать их(мне надо добавить в исходный файл шум) создать новый файл и в него записать начало из txt файла до блока data то же а потом по 128 бит исправленных. вот только пока не сделаа считывание по 128 бит  - изменение - запись. не очень с потоками лажу. может кто описать этот кусочек. буду благодарна


Название: Re: Звук не воспроизводиться
Отправлено: BRE от Январь 28, 2010, 23:04
Для чего эта строка:
Код
C++ (Qt)
ui.edit_P_Vremya_2->setText(str.sprintf("%d",mmioSeek(m_hmmioIn,0L,SEEK_END)));

По логике mmioSeek устанавливает смещение на конец файл, поэтому все последующие операции ничего найти не могут.
Это IMHO, с вендой давно не дружу.  :)


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Январь 28, 2010, 23:19
да и без этой строки тоже не находит. это потом дописала как одну из вариации, стереть забыла


Название: Re: Звук не воспроизводиться
Отправлено: BRE от Январь 28, 2010, 23:28
Полез в msdn.
Попробуй проверять результат выполнения mmioDescend с помощью специально определенных значений:
MMSYSERR_NOERROR
MMIOERR_CHUNKNOTFOUND

Возможно проверка на != NULL просто не корректна.


Название: Re: Звук не воспроизводиться
Отправлено: crackedmind от Январь 29, 2010, 09:25
хех, а вот у меня с mmioSeek ничерта не находит, без нее все ок :)


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Январь 29, 2010, 10:02
теперь останавливается на блоке последнем. ошибка в чтении. спасибо,это прогресс уже))


Название: Re: Звук не воспроизводиться
Отправлено: BRE от Январь 29, 2010, 10:13
теперь останавливается на блоке последнем. ошибка в чтении. спасибо,это прогресс уже))
В смысле на mmioRead? Что возвращает она функция?
И еще вопрос, а где выделяется память для буфера, куда происходит чтение (lpData)?


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Январь 30, 2010, 23:39
Вот написала 2 функции, более правильные на мой взгляд
Код:
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 22050
bool 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;
}
создаётся новый wav файл, но что-то в нём не так, он не воспроизводиться. windows media player пишет что неизвестный формат. вот не могу пока что понять где я ошибаюсь.


Название: Re: Звук не воспроизводиться
Отправлено: BRE от Январь 31, 2010, 12:50
Набросал небольшой пример, который читает и пишет WAV-файл.
Боевой код можно сделать проще, сейчас пытался расписать все в деталях.
Посмотри, попробуй. Когда разберешься, переделать код для mmio труда не составит.
Код
C++ (Qt)
// Код демонстрационный!      
// Код подразумевает, что архитектура использует byte order == little endian.
// При записи ошибки не проверяются, лениво стало. :)                        
 
#include <QByteArray>
#include <QFile>    
#include <QtEndian>  
#include <QDebug>    
 
#define SIG_RIFF        quint32(('R' << 24) | ('I' << 16) | ('F' << 8) | ('F'))
#define SIG_WAVE        quint32(('W' << 24) | ('A' << 16) | ('V' << 8) | ('E'))
#define SIG_FMT         quint32(('f' << 24) | ('m' << 16) | ('t' << 8) | (' '))
#define SIG_DATA        quint32(('d' << 24) | ('a' << 16) | ('t' << 8) | ('a'))
 
#pragma pack(push, 1)
struct WAVFormat    
{                    
       quint16 formatTag;                      // тип формата
       quint16 channels;                       // количество каналов (1 - моно или 2 - стeрео)
       quint32 samplesPerSec;          // частота дискретизации (11025, 22050, 44100, ...)    
       quint32 avgBytesPerSec;         // скорость потока данных                              
       quint16 blockAlign;                     // выравнивание блока данных                  
       quint16 bitsPerSample;          // количество бит в сеймпле                            
};                                                                                            
#pragma pack(pop)                                                                              
 
static bool findSig( QIODevice *dev, quint32 sig )
{                                                
       Q_ASSERT( dev );                          
 
       qDebug() << "Search signature :" << hex << sig;
 
       while( !dev->atEnd() )
       {                    
               quint32 data;
               if( dev->read( (char*)&data, sizeof( data ) ) != sizeof( data ) )
                       break;                                                  
               if( qToBigEndian( data ) == sig )                                
                       return true;                                            
       }                                                                        
       return false;                                                            
}                                                                                
 
QByteArray readWav( QIODevice *dev, WAVFormat &fmt )
{                                                  
       if( !dev )                                  
       {                                          
               qDebug() << "Device for reading is not specified";
               return QByteArray();                              
       }                                                        
 
       // Последовательно перемещаемся по сигнатурам RIFF, WAVE, fmt
       if( findSig( dev, SIG_RIFF ) && findSig( dev, SIG_WAVE ) && findSig( dev, SIG_FMT ) )
       {                                                                                    
               // Читаем и проверяем размер блока fmt                                      
               quint32 fmtSize;                                                            
               if( dev->read( (char*)&fmtSize, sizeof( fmtSize ) ) == sizeof( fmtSize ) && fmtSize == sizeof( fmt ) )
               {                                                                                                    
                       // Читаем блок fmt                                                                            
                       if( dev->read( (char*)&fmt, sizeof( fmt ) ) == sizeof( fmt ) )                                
                       {                                                                                            
                               // Перемещаемся к сигнатуре data                                                      
                               if( findSig( dev, SIG_DATA ) )                                                        
                               {                                                                                    
                                       // Читаем размер данных                                                      
                                       quint32 dataSize;                                                            
                                       if( dev->read( (char*)&dataSize, sizeof( dataSize ) ) == sizeof( dataSize ) )
                                       {                                                                            
                                               // Читаем блок данных                                                
                                               return dev->read( dataSize );                                        
                                       }                                                                            
                               }                                                                                    
                       }                                                                                            
               }                                                                                                    
       }                                                                                                            
 
       qDebug() << "Format file error";
       return QByteArray();            
}                                      
 
bool writeWav( QIODevice *dev, const WAVFormat &fmt, const QByteArray &data )
{                                                                            
       quint32 sig;                                                        
       quint32 size;                                                        
 
       if( !dev )
       {        
               qDebug() << "Device for writing is not specified";
               return false;                                    
       }                                                        
 
       // Пишем сигнатуру RIFF
       sig = qToBigEndian( SIG_RIFF );
       dev->write( (char*)&sig, sizeof( sig ) );
 
       // Вычисляем и записываем размер блока RIFF
       size = sizeof(quint32) +        // Сигнатура WAVE
                  sizeof(quint32) +    // Сигнатура fmt
                  sizeof(quint32) +    // Размер блока fmt (0x10)
                  sizeof(fmt) +                // Блок fmt      
                  sizeof(quint32) +    // Сигнатура data        
                  sizeof(quint32) +    // Размер данных          
                  data.size();                 // Длина данных  
       dev->write( (char*)&size, sizeof( size ) );              
 
       // Пишем сигнатуру WAVE
       sig = qToBigEndian( SIG_WAVE );
       dev->write( (char*)&sig, sizeof( sig ) );
 
       // Пишем сигнатуру fmt
       sig = qToBigEndian( SIG_FMT );
       dev->write( (char*)&sig, sizeof( sig ) );
 
       // Пишем размер блока fmt
       size = sizeof( fmt );    
       dev->write( (char*)&size, sizeof( size ) );
 
       // Пишем блок fmt
       dev->write( (char*)&fmt, sizeof( fmt ) );
 
       // Пишем сигнатуру data
       sig = qToBigEndian( SIG_DATA );
       dev->write( (char*)&sig, sizeof( sig ) );
 
       // Пишем размер data
       size = data.size();
       dev->write( (char*)&size, sizeof( size ) );
 
       // Пишем блок data
       dev->write( data );
 
       return true;
}                  
 
int main( int, char ** )
{                      
       // Читаем файл
       QFile infile( "test.wav" );
       if( !infile.open( QIODevice::ReadOnly ) )
       {
               qDebug() << "File open error";
               return 1;
       }
 
       WAVFormat fmt;
       QByteArray data = readWav( &infile, fmt );
       qDebug() << fmt.formatTag << fmt.channels << fmt.samplesPerSec << fmt.avgBytesPerSec << fmt.blockAlign << fmt.bitsPerSample;
 
       // Пишем файл
       QFile outfile( "out.wav" );
       if( !outfile.open( QIODevice::WriteOnly ) )
       {
               qDebug() << "File create error";
               return 1;
       }
 
       // Используем формат и данные прочитанного файла.
       // Если менять формат, то нужно настраивать параметры fmt и data.
       writeWav( &outfile, fmt, data );
 
       return 0;
}
 


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Февраль 01, 2010, 08:45
спасибо,буду пробовать))


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Февраль 03, 2010, 10:57
Со звуком всё разобрала, ещё раз благодарю. вот возникла другая проблемка. нужно чтобы по нажатию на кнопку громкость воспроизводимого файла(я его воспроизвожу с помощью QSound) менялась с каждым нажатием ну например уменьшалась. написала функцию
Код:
void cviaz_v::volum(DWORD RightVolume)
{
LPDWORD level;
HWAVEOUT id_pl;
int m_DeviceID;
WAVEOUTCAPS caps;
switch(waveOutGetDevCaps((UINT)id_pl, &caps,sizeof(caps)))
{
case MMSYSERR_NOERROR:
ui.text2_4->setText("1");
case MMSYSERR_BADDEVICEID:
ui.text2_4->setText("2");
case MMSYSERR_NODRIVER :
ui.text2_4->setText("3");
case MMSYSERR_NOMEM :
ui.text2_4->setText("4");

}
waveOutSetVolume(id_pl,0xFFFF-RightVolume);

}
но функция waveOutGetDevCaps должна возвращать первое значение блока case а заходит по очерёдно во все остальные. тоесть по логике получается что нет устройств на компьютере для воспроизведения музыки. но это явно не верно.


Название: Re: Звук не воспроизводиться
Отправлено: Kolobok от Февраль 03, 2010, 12:24
В конце каждого блока case должен стоять break для выхода из switch.


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Февраль 03, 2010, 13:39
break я поставлю. но функция waveOutGetDevCaps от эторго работать не станет. при правильной работе она должна вернуть MMSYSERR_NOERROR, но именно это значение она и не возвращает.


Название: Re: Звук не воспроизводиться
Отправлено: crackedmind от Февраль 03, 2010, 14:14
Цитировать
   Identifier of the waveform-audio output device. It can be either a device identifier or a Handle to an open waveform-audio output device.
у вас же
Код:
HWAVEOUT id_pl;
никак не проинициализирован, т.е. устройство не открыто.


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Февраль 03, 2010, 21:07
да вот это я тоже заметила, но как проинициализировать не зняю.подскажите пожалуйста


Название: Re: Звук не воспроизводиться
Отправлено: BRE от Февраль 03, 2010, 21:15
да вот это я тоже заметила, но как проинициализировать не зняю.подскажите пожалуйста
А почему бы тебе не воспользоваться для этого Phonon'ом?


Название: Re: Звук не воспроизводиться
Отправлено: Firefox от Февраль 16, 2010, 09:09
Код:
void SetVolume(unsigned int SetVolume)
{
WAVEOUTCAPSA Woc;

DWORD Volume ;

if(waveOutGetDevCapsA(WAVE_MAPPER, &Woc, sizeof(Woc)) ==

MMSYSERR_NOERROR)

if(Woc.dwSupport && WAVECAPS_VOLUME == WAVECAPS_VOLUME)

waveOutSetVolume(0, SetVolume);
}
если кому интересно вот функция для изменения громкости