encyklopedia.space

Windows MME

Windows MME (ang. Multimedia Extensions) to zestaw interfejsów programistycznych (API) oraz sterowników multimedialnych wprowadzony w systemie operacyjnym Windows od wersji 3.0. MME umożliwiał aplikacjom dostęp do urządzeń dźwiękowych i wideo, zapewniając podstawowe funkcje nagrywania, odtwarzania oraz kontroli strumieni multimedialnych.

Historia

Technologia MME została opracowana przez Microsoft jako odpowiedź na rosnące zapotrzebowanie na obsługę multimediów w komputerach osobistych pod koniec lat 1980. Pierwsza wersja pojawiła się w 1990 roku jako część Windows 3.0 i była kontynuowana w kolejnych wydaniach, w tym w Windows 95 oraz Windows XP. Z czasem została wyparta przez bardziej zaawansowane rozwiązania, takie jak DirectSound w ramach DirectX oraz sterowniki WDM (Windows Driver Model).

Architektura i elementy

  • WinMM.dll – biblioteka dynamiczna dostarczająca funkcje MME, m.in. waveInOpen, waveOutOpen, mciSendCommand.
  • Device Drivers – sterowniki kompatybilne z modelem WDM, ale również ze starszym modelem VxD.
  • MCI (Media Control Interface) – uproszczony interfejs tekstowy umożliwiający sterowanie odtwarzaniem multimediów przy pomocy poleceń typu play, stop, pause.
  • Waveform API – podstawowy zestaw funkcji do obsługi dźwięku w trybie strumieniowym.

Funkcje MME

Główne możliwości, które oferowało MME, to:

  1. Obsługa nagrywania i odtwarzania dźwięku w formatach PCM oraz kompresowanych (np. ADPCM).
  2. Podstawowa obsługa synchronizacji dźwięku i wideo przy użyciu MCI.
  3. Prosty dostęp do urządzeń wejściowych (mikrofony, linie wejściowe) i wyjściowych (głośniki, karty dźwiękowe).
  4. Wsparcie dla wielu jednoczesnych strumieni audio (tzw. wielokanałowość).

Znaczenie w programowaniu

W latach 1990‑1999 MME było jedynym powszechnie dostępnym API do obsługi multimediów w Windows. Wielu programistów wykorzystywało je w aplikacjach takich jak odtwarzacze audio (Winamp), gry wideo oraz oprogramowanie do edycji dźwięku. Przykładowy kod otwierania urządzenia wyjściowego w C wyglądał następująco:

#include <windows.h>
#include <mmsystem.h>

HWAVEOUT hWaveOut;
WAVEFORMATEX wf = {0};

wf.wFormatTag = WAVE_FORMAT_PCM;
wf.nChannels = 2;
wf.nSamplesPerSec = 44100;
wf.wBitsPerSample = 16;
wf.nBlockAlign = (wf.nChannels * wf.wBitsPerSample) / 8;
wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.nBlockAlign;

waveOutOpen(&hWaveOut, WAVE_MAPPER, &wf, 0, 0, CALLBACK_NULL);

Utrata popularności i deprecjacja

Od początku lat 2000 MME było stopniowo wypierane przez bardziej nowoczesne rozwiązania:

  • DirectSound – oferował niżski poziom opóźnień i lepszą kontrolę nad buforami dźwiękowymi.
  • WASAPI (Windows Audio Session API) – zapewniał dostęp do strumieni audio w trybie bezpośrednim.
  • Audio Engine w Windows Vista i nowszych, wykorzystujący Audio Engine oraz Audio Stack.

Mimo że MME wciąż jest dostępne w systemach Windows 10 i Windows 11 ze względu na kompatybilność wsteczną, zaleca się używanie nowoczesnych interfejsów, gdyż MME nie wspiera wielu funkcji wymaganych w współczesnych aplikacjach multimedialnych.

Podsumowanie

Windows MME odegrało kluczową rolę w rozwoju multimediów w systemach operacyjnych Microsoftu, będąc pierwszym szeroko dostępnym interfejsem umożliwiającym aplikacjom pracę z dźwiękiem i wideo. Choć dziś jest przestarzałe, jego wpływ można odnaleźć w późniejszych technologiach, a wiele starszych aplikacji wciąż polega na jego stabilnym i szeroko wspieranym zestawie funkcji.