Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2015, 16:09   #1
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию звук в Винде

кто знает как получить (сформировать) список аудио форматов, которые поддерживает железяка?
пробовал IsFormatSupported, но она мне толко default shared format возвращает.

Код:
	if (CoCreateInstance(CLSID_MMDeviceEnumerator, 0, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&i_numerator) == S_OK) {
		if (i_numerator->GetDefaultAudioEndpoint(eRender, eMultimedia, &a_device) == S_OK) {
			if (a_device->Activate(IID_IAudioClient, CLSCTX_ALL, 0, (void **)&a_client) == S_OK) {
				a_client->GetMixFormat(&xx_format);

				if (xx_format) {
					if (xx_format->wFormatTag == WAVE_FORMAT_EXTENSIBLE) {
						System::MemoryCopy(&x_format, xx_format, sizeof(WAVEFORMATEXTENSIBLE));
					} else {
						System::MemoryCopy(&x_format, xx_format, sizeof(WAVEFORMATEX));
					}

					CoTaskMemFree(xx_format);
				}


				x_format.SubFormat = KSDATAFORMAT_SUBTYPE_DTS_AUDIO;

				for (unsigned int sfi(0);sfi<6;sfi++) {
					x_format.Format.nSamplesPerSec = sample_frequencies[sfi];
					for (unsigned int sample_depth(8);sample_depth<=32;sample_depth+=8) {
						x_format.Format.wBitsPerSample = sample_depth;
						for (unsigned int chan_count(2);chan_count<=8;chan_count++) {
							x_format.Format.nChannels = chan_count;
							a_client->IsFormatSupported(AUDCLNT_SHAREMODE_EXCLUSIVE, (WAVEFORMATEX *)&x_format, &xx_format);

							if (xx_format) {
								supported_formats |= AUDIO_FORMAT_DTS;

								CoTaskMemFree(xx_format);
							}
						}
					}
				}

......
что указвает на то что либо я неправильно использую IsFormatSupported, либо на то что список форматов мне так не сформировать.






сори, вопрос снят. оказалось не та железяка, а код рабочий.

Последний раз редактировалось f.hump; 30.10.2015 в 17:45.
f.hump вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
служба автологина в винде wm_leviathan Общие вопросы Delphi 0 11.02.2011 00:30
Звук Звууууук Звук ... не рабоает звук.. Zvuuuuk Компьютерное железо 2 22.01.2011 17:53
Тюнер для гитары в делфи. (Считывать с микрофона звук и выводить какой частоты этот звук). Серего Мультимедиа в Delphi 8 12.01.2011 14:39
вирусы в Винде Neymexa Windows 1 14.04.2010 16:15
звук и делфи, левый правый звук snusmumric Win Api 2 29.10.2007 11:10