SlideShare a Scribd company logo
1 of 6
Программное определение возможностей звуковых
устройств мультимедиа
Методы сжатия файлов изображений
В системе могут быть установлены устройства для записи и воспроизведения звука методом импульсно-кодовой модуляции PCM
(waveform audio), устройства для записи и проигрывания музыкальных MIDI-файлов, дополнительные (auxiliary) устройства и другие.
Библиотека mmsystem.dll содержит набор функций, с помощью которых приложение может определить состав устройств и их
возможности.
Не имеющая параметров функция waveOutGetNumDevs возвращает количество устройств, способных воспроизводить записанные с
использование импульсно-кодовой модуляции звуковые данные; функция waveInGetNumDevs возвращает количество устройств, способных
записывать такие данные.
Количество пригодных для записи и воспроизведения MIDI-файлов устройств можно узнать при помощи функций midiOutGetNumDevs и
midiInGetNumDevs соответственно.
Для определения дополнительных устройств предназначена функция auxGetNumDevs.
Для определения возможностей устройств используются функции waveOutGetDevCaps, waveInGetDevCaps, midiOutGetDevCaps и
auxGetDevCaps.
Для вышеперечисленных функций с суффиксом GetDevCaps в качестве первого параметра указывается идентификатор устройства,
изменяющийся от нуля до полученного с помощью функций waveOutGetNumDevs, waveInGetNumDevs, midiOutGetNumDevs,
midiInGetNumDevs и auxGetNumDevs значения.
Второй параметр является дальним указателем на структуру, формат которой зависит от типа устройства. Это может быть структура
AUXCAPS, MIDIINCAPS, MIDIOUTCAPS, WAVEINCAPS или WAVEOUTCAPS.
Третий параметр определяет размер соответствующей структуры в байтах.
Структура AUXCAPS
Структура AUXCAPS определяется следующим образом
typedef struct auxcaps_tag
{
UINT wMid; // код разработчика драйвера
UINT wPID; // код устройства
VERSION vDriverVersion; // версия драйвера
char szPname[MAXPNAMELEN]; // название устройства
UINT wTechnology; // тип устройства
DWORD dwSupport; // поддерживаемые функции
} AUXCAPS;
typedef AUXCAPS *PAUXCAPS;
typedef AUXCAPS NEAR *NPAUXCAPS;
typedef AUXCAPS FAR *LPAUXCAPS;
Поля wMid, wPid, vDriverVersion и szPname определены во всех структурах, используемых для определения возможностей устройств мультимедиа.
Поле wTechnology специфично для структуры AUXCAPS.
Поле dwSupport может содержать флаги AUXCAPS_VOLUME (есть возможность регулировки громкости) и AUXCAPS_LRVOLUME(есть возможность раздельной регулировки
громкости для левого и правого канала).
Структуры MIDIINCAPS и MIDIOUTCAPS
Структура MIDIINCAPS содержит только те поля, которые являются
общими для всех структур, предназначенных для определения возможностей
устройств мультимедиа
typedef struct midiincaps_tag
{
UINT wMid;
UINT wPid;
VERSION vDriverVersion;
char szPname[MAXPNAMELEN];
} MIDIINCAPS;
typedef MIDIINCAPS *PMIDIINCAPS;
typedef MIDIINCAPS NEAR *NPMIDIINCAPS;
typedef MIDIINCAPS FAR *LPMIDIINCAPS;
Структура MIDIOUTCAPS дополнительно содержит поля wTechnology, wVoices,
wChannelMask и dwSupport
typedef struct midioutcaps_tag
{
UINT wMid;
UINT wPid;
VERSION vDriverVersion;
char szPname[MAXPNAMELEN];
UINT wTechnology;
UINT wVoices;
UINT Notes;
UINT wChannelMask;
DWORD dwSupport;
} MIDIOUTCAS;
typedef MIDIOUTCAPS *PMIDIOUTCAPS;
typedef MIDIOUTCAPS NEAR *NMIDIOUTCAPS:
typedef MIDIOUTCAPS FAR *LPMIDIOUTCAPS;
В поле wTechnology могут находиться значения MOD_MIDIPORT, MOD_SQSYNTH,
MOD_FMSYNTH и MOD_MAPPER.
Структура WAVEINCAPS
Структура WAVEINCAPS предназначена для определения возможностей
устройств ввода звуковых сигналов с использованием импульсно-кодовой модуляции
typedef struct waveincaps_tag
{
UINT wMid;
UINT wPid;
VERSION vDriverVersion;
char szPname[MAXPNAMELEN];
UINT wFormats;
UINT wChannels;
} WAVEINCAPS;
typedef WAVEINCAPS *PWAVEINCAPS;
typedef WAVEINCAPS NEAR *NPWAVEINCAPS;
typedef WAVEINCAPS FAR *LPWAVEINCAPS;
В поле wChannels содержится количество каналов.
В поле dwFormats могут располагаться флаги, соответствующие стандартным
форматам звуковых данных, поддерживаемых данным устройством. Флаги объединяются
при помощи логической операции ИЛИ.
Структура WAVEOUTCAPS
Структура WAVEOUTCAPS предназначена для определения возможностей
устройств вывода звуковых сигналов с использованием импульсно-кодовой модуляции
typedef struct waveoutcaps_tag
{
UINT wMid;
UINT wPid;
VERSION vDriverVersion;
char szPname[MAXPNAMELEN];
UINT wFormats;
UINT wChannels;
DWORD dwSupport;
} WAVEOUTCAPS;
typedef WAVEOUTCAPS *PWAVEOUTCAPS;
typedef WAVEOUTCAPS NEAR *NPWAVEOUTCAPS;
typedef WAVEOUTCAPS FAR *LPWAVEOUTCAPS;
Поле dwSupport содержит флаги, соответствующие различным возможностям
вывода.

More Related Content

Similar to 9.pptx

Средства автоматизированного перевода
Средства автоматизированного переводаСредства автоматизированного перевода
Средства автоматизированного переводаcomfortgalaxy
 
Cредства автоматизированного перевода
Cредства автоматизированного переводаCредства автоматизированного перевода
Cредства автоматизированного переводаTetyana Struk TrainStation
 
01 02 ос_введение
01 02 ос_введение01 02 ос_введение
01 02 ос_введение921519
 
Android: низкоуровневые мультимедиа API и их применение в реальной жизни
Android: низкоуровневые мультимедиа API и их применение в реальной жизниAndroid: низкоуровневые мультимедиа API и их применение в реальной жизни
Android: низкоуровневые мультимедиа API и их применение в реальной жизниGregory Klyushnikov
 
Cистемное программное обеспечение
Cистемное программное обеспечениеCистемное программное обеспечение
Cистемное программное обеспечениеNick535
 
Презентация Microsoft PowerPoint nou.pptx
Презентация Microsoft PowerPoint nou.pptxПрезентация Microsoft PowerPoint nou.pptx
Презентация Microsoft PowerPoint nou.pptxssuserfd3c1c
 
58
5858
58JIuc
 
TMPA-2013 Smirnov
TMPA-2013 SmirnovTMPA-2013 Smirnov
TMPA-2013 SmirnovIosif Itkin
 
Технические средства реализации информационных процессов
Технические средства реализации информационных процессовТехнические средства реализации информационных процессов
Технические средства реализации информационных процессовstudent_SSGA
 
лекция 18
лекция 18лекция 18
лекция 18JIuc
 
Магистрально модульный принцип построения пк
Магистрально модульный принцип построения пкМагистрально модульный принцип построения пк
Магистрально модульный принцип построения пкAndrey Dolinin
 
57
5757
57JIuc
 
CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?
CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?
CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?CodeFest
 
VIT company profile (ru)
VIT company profile (ru)VIT company profile (ru)
VIT company profile (ru)VIT
 
презентация15
презентация15презентация15
презентация15student_kai
 

Similar to 9.pptx (20)

Lirc или домашний медиацентр
Lirc или домашний медиацентрLirc или домашний медиацентр
Lirc или домашний медиацентр
 
Средства автоматизированного перевода
Средства автоматизированного переводаСредства автоматизированного перевода
Средства автоматизированного перевода
 
Cредства автоматизированного перевода
Cредства автоматизированного переводаCредства автоматизированного перевода
Cредства автоматизированного перевода
 
01 02 ос_введение
01 02 ос_введение01 02 ос_введение
01 02 ос_введение
 
Android: низкоуровневые мультимедиа API и их применение в реальной жизни
Android: низкоуровневые мультимедиа API и их применение в реальной жизниAndroid: низкоуровневые мультимедиа API и их применение в реальной жизни
Android: низкоуровневые мультимедиа API и их применение в реальной жизни
 
Cистемное программное обеспечение
Cистемное программное обеспечениеCистемное программное обеспечение
Cистемное программное обеспечение
 
Презентация Microsoft PowerPoint nou.pptx
Презентация Microsoft PowerPoint nou.pptxПрезентация Microsoft PowerPoint nou.pptx
Презентация Microsoft PowerPoint nou.pptx
 
58
5858
58
 
TMPA-2013 Smirnov
TMPA-2013 SmirnovTMPA-2013 Smirnov
TMPA-2013 Smirnov
 
Технические средства реализации информационных процессов
Технические средства реализации информационных процессовТехнические средства реализации информационных процессов
Технические средства реализации информационных процессов
 
лекция 18
лекция 18лекция 18
лекция 18
 
Магистрально модульный принцип построения пк
Магистрально модульный принцип построения пкМагистрально модульный принцип построения пк
Магистрально модульный принцип построения пк
 
57
5757
57
 
тема 7
тема 7тема 7
тема 7
 
типы и классификация
типы и классификациятипы и классификация
типы и классификация
 
CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?
CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?
CodeFest 2013. Белый И. — Marmalade SDK. Что под капотом?
 
лекция 7 (4часа)
лекция 7 (4часа)лекция 7 (4часа)
лекция 7 (4часа)
 
VIT company profile (ru)
VIT company profile (ru)VIT company profile (ru)
VIT company profile (ru)
 
презентация15
презентация15презентация15
презентация15
 
Кратко о Linux
Кратко о LinuxКратко о Linux
Кратко о Linux
 

More from AdletShoraev (10)

1.pptx
1.pptx1.pptx
1.pptx
 
15.pptx
15.pptx15.pptx
15.pptx
 
14.pptx
14.pptx14.pptx
14.pptx
 
8.pptx
8.pptx8.pptx
8.pptx
 
6.pptx
6.pptx6.pptx
6.pptx
 
5.pptx
5.pptx5.pptx
5.pptx
 
4.pptx
4.pptx4.pptx
4.pptx
 
Курс 3.pptx
Курс 3.pptxКурс 3.pptx
Курс 3.pptx
 
2.pptx
2.pptx2.pptx
2.pptx
 
1.pptx
1.pptx1.pptx
1.pptx
 

9.pptx

  • 1. Программное определение возможностей звуковых устройств мультимедиа Методы сжатия файлов изображений
  • 2. В системе могут быть установлены устройства для записи и воспроизведения звука методом импульсно-кодовой модуляции PCM (waveform audio), устройства для записи и проигрывания музыкальных MIDI-файлов, дополнительные (auxiliary) устройства и другие. Библиотека mmsystem.dll содержит набор функций, с помощью которых приложение может определить состав устройств и их возможности. Не имеющая параметров функция waveOutGetNumDevs возвращает количество устройств, способных воспроизводить записанные с использование импульсно-кодовой модуляции звуковые данные; функция waveInGetNumDevs возвращает количество устройств, способных записывать такие данные. Количество пригодных для записи и воспроизведения MIDI-файлов устройств можно узнать при помощи функций midiOutGetNumDevs и midiInGetNumDevs соответственно. Для определения дополнительных устройств предназначена функция auxGetNumDevs. Для определения возможностей устройств используются функции waveOutGetDevCaps, waveInGetDevCaps, midiOutGetDevCaps и auxGetDevCaps. Для вышеперечисленных функций с суффиксом GetDevCaps в качестве первого параметра указывается идентификатор устройства, изменяющийся от нуля до полученного с помощью функций waveOutGetNumDevs, waveInGetNumDevs, midiOutGetNumDevs, midiInGetNumDevs и auxGetNumDevs значения. Второй параметр является дальним указателем на структуру, формат которой зависит от типа устройства. Это может быть структура AUXCAPS, MIDIINCAPS, MIDIOUTCAPS, WAVEINCAPS или WAVEOUTCAPS. Третий параметр определяет размер соответствующей структуры в байтах.
  • 3. Структура AUXCAPS Структура AUXCAPS определяется следующим образом typedef struct auxcaps_tag { UINT wMid; // код разработчика драйвера UINT wPID; // код устройства VERSION vDriverVersion; // версия драйвера char szPname[MAXPNAMELEN]; // название устройства UINT wTechnology; // тип устройства DWORD dwSupport; // поддерживаемые функции } AUXCAPS; typedef AUXCAPS *PAUXCAPS; typedef AUXCAPS NEAR *NPAUXCAPS; typedef AUXCAPS FAR *LPAUXCAPS; Поля wMid, wPid, vDriverVersion и szPname определены во всех структурах, используемых для определения возможностей устройств мультимедиа. Поле wTechnology специфично для структуры AUXCAPS. Поле dwSupport может содержать флаги AUXCAPS_VOLUME (есть возможность регулировки громкости) и AUXCAPS_LRVOLUME(есть возможность раздельной регулировки громкости для левого и правого канала).
  • 4. Структуры MIDIINCAPS и MIDIOUTCAPS Структура MIDIINCAPS содержит только те поля, которые являются общими для всех структур, предназначенных для определения возможностей устройств мультимедиа typedef struct midiincaps_tag { UINT wMid; UINT wPid; VERSION vDriverVersion; char szPname[MAXPNAMELEN]; } MIDIINCAPS; typedef MIDIINCAPS *PMIDIINCAPS; typedef MIDIINCAPS NEAR *NPMIDIINCAPS; typedef MIDIINCAPS FAR *LPMIDIINCAPS; Структура MIDIOUTCAPS дополнительно содержит поля wTechnology, wVoices, wChannelMask и dwSupport typedef struct midioutcaps_tag { UINT wMid; UINT wPid; VERSION vDriverVersion; char szPname[MAXPNAMELEN]; UINT wTechnology; UINT wVoices; UINT Notes; UINT wChannelMask; DWORD dwSupport; } MIDIOUTCAS; typedef MIDIOUTCAPS *PMIDIOUTCAPS; typedef MIDIOUTCAPS NEAR *NMIDIOUTCAPS: typedef MIDIOUTCAPS FAR *LPMIDIOUTCAPS; В поле wTechnology могут находиться значения MOD_MIDIPORT, MOD_SQSYNTH, MOD_FMSYNTH и MOD_MAPPER.
  • 5. Структура WAVEINCAPS Структура WAVEINCAPS предназначена для определения возможностей устройств ввода звуковых сигналов с использованием импульсно-кодовой модуляции typedef struct waveincaps_tag { UINT wMid; UINT wPid; VERSION vDriverVersion; char szPname[MAXPNAMELEN]; UINT wFormats; UINT wChannels; } WAVEINCAPS; typedef WAVEINCAPS *PWAVEINCAPS; typedef WAVEINCAPS NEAR *NPWAVEINCAPS; typedef WAVEINCAPS FAR *LPWAVEINCAPS; В поле wChannels содержится количество каналов. В поле dwFormats могут располагаться флаги, соответствующие стандартным форматам звуковых данных, поддерживаемых данным устройством. Флаги объединяются при помощи логической операции ИЛИ.
  • 6. Структура WAVEOUTCAPS Структура WAVEOUTCAPS предназначена для определения возможностей устройств вывода звуковых сигналов с использованием импульсно-кодовой модуляции typedef struct waveoutcaps_tag { UINT wMid; UINT wPid; VERSION vDriverVersion; char szPname[MAXPNAMELEN]; UINT wFormats; UINT wChannels; DWORD dwSupport; } WAVEOUTCAPS; typedef WAVEOUTCAPS *PWAVEOUTCAPS; typedef WAVEOUTCAPS NEAR *NPWAVEOUTCAPS; typedef WAVEOUTCAPS FAR *LPWAVEOUTCAPS; Поле dwSupport содержит флаги, соответствующие различным возможностям вывода.