проблемы с acmStreamOpen
От: Night_Owl  
Дата: 15.01.04 13:20
Оценка:


проблема при окрытии нескольких преобразующих стримов (acmStreamOpen) из одного потока. первый открываеться нормально, остальные возвращают код ACMERR_NOTPOSSIBLE. При этом перед этим делаю acmStreamOpen с флагом ACM_STREAMOPENF_QUERY для все позжеоткрываемых стримов, код возврата MMSYSERR_NOERROR. Такое чувство что в потоке может быть открыт только один преобразующий стрим... помогите плз кто чем может....



----- инициализация форматов -----------
UCHAR extMP3DataLow_records[12]    = {0x01,0x00,0x02,0x00,0x00,0x00,0x34,0x00,0x01,0x00,0x71,0x05};
UCHAR extMP3DataMedium_records[12] = {0x01,0x00,0x02,0x00,0x00,0x00,0x68,0x00,0x01,0x00,0x71,0x05};
UCHAR extMP3DataHigh_records[12]   = {0x01,0x00,0x02,0x00,0x00,0x00,0x68,0x00,0x01,0x00,0x71,0x05};

//----------------------------------------------------------
//   44100Hz 16bit mono // digitate quality
//----------------------------------------------------------
m_wfx_wav.wFormatTag           = WAVE_FORMAT_PCM;
m_wfx_wav.nChannels            = 1;
m_wfx_wav.nSamplesPerSec       = 44100;
m_wfx_wav.nAvgBytesPerSec      = 88200;
m_wfx_wav.nBlockAlign          = 2;
m_wfx_wav.wBitsPerSample       = 16;
m_wfx_wav.cbSize = 0;

//----------------------------------------------------------
//   8 kBit/s 11025 mono // low quality
//----------------------------------------------------------
m_wfx_mp3_low.wFormatTag       = WAVE_FORMAT_MPEGLAYER3;
m_wfx_mp3_low.nChannels        = 1;
m_wfx_mp3_low.nSamplesPerSec   = 11025;
m_wfx_mp3_low.nAvgBytesPerSec  = 1000;
m_wfx_mp3_low.nBlockAlign      = 1;
m_wfx_mp3_low.wBitsPerSample   = 0;
m_wfx_mp3_low.cbSize = 12;
memcpy(extMP3Data_low, extMP3DataLow_records, 12);

//----------------------------------------------------------
//   16 kBit/s 11025 mono // medium quality
//----------------------------------------------------------
m_wfx_mp3_med.wFormatTag       = WAVE_FORMAT_MPEGLAYER3;
m_wfx_mp3_med.nChannels        = 1;
m_wfx_mp3_med.nSamplesPerSec   = 11025;
m_wfx_mp3_med.nAvgBytesPerSec  = 2000;
m_wfx_mp3_med.nBlockAlign      = 1;
m_wfx_mp3_med.wBitsPerSample   = 0;
m_wfx_mp3_med.cbSize = 12;
memcpy(extMP3Data_med, extMP3DataMedium_records, 12);

//----------------------------------------------------------
//   32 kBit/s 22050 mono // high quality 
//----------------------------------------------------------
m_wfx_mp3_high.wFormatTag      = WAVE_FORMAT_MPEGLAYER3;
m_wfx_mp3_high.nChannels       = 1;
m_wfx_mp3_high.nSamplesPerSec  = 22050;
m_wfx_mp3_high.nAvgBytesPerSec = 4000;
m_wfx_mp3_high.nBlockAlign     = 1;
m_wfx_mp3_high.wBitsPerSample  = 0;
m_wfx_mp3_high.cbSize = 12;
memcpy(extMP3Data_high, extMP3DataHigh_records, 12);
----------------------------------------

----- проверка в потоке ---------------
MMRESULT rez;
rez = acmStreamOpen(&hStream_low , 0, &m_wfx_wav, &m_wfx_mp3_low, 0, 0, 0, ACM_STREAMOPENF_QUERY);
rez = acmStreamOpen(&hStream_med , 0, &m_wfx_wav, &m_wfx_mp3_med, 0, 0, 0, ACM_STREAMOPENF_QUERY);
rez = acmStreamOpen(&hStream_high, 0, &m_wfx_wav, &m_wfx_mp3_high, 0, 0, 0, ACM_STREAMOPENF_QUERY);
----------------------------------------

----- окрытие стримов в потоке ---------
rez = acmStreamOpen(&hStream_low, 0, &m_wfx_wav, &m_wfx_mp3_low, 0, 0, 0, 0);
if( rez != MMSYSERR_NOERROR)
    throw "Can not open convert low data stream";

rez = acmStreamOpen(&hStream_med, 0, &m_wfx_wav, &m_wfx_mp3_med, 0, 0, 0, 0);
if( rez != MMSYSERR_NOERROR)
    throw "Can not open convert med data stream";

rez = acmStreamOpen(&hStream_high, 0, &m_wfx_wav, &m_wfx_mp3_high, 0, 0, 0, 0);
if( rez != MMSYSERR_NOERROR)
    throw "Can not open convert high data stream";
----------------------------------------



мой ICQ : 158 551 487
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.