Aracılığıyla paylaş


Ses Bileşenlerini User-Mode

Windows Vista'da çekirdek ses API'leri, kullanıcı modu ses alt sisteminin temelini oluşturur. Çekirdek ses API'leri, kullanıcı modu istemcilerini çekirdek modu ses sürücülerinden ve ses donanımlarından ayıran ince bir kullanıcı modu sistem bileşeni katmanı olarak uygulanır. DirectSound ve Windows multimedya işlevleri gibi üst düzey ses API'leri, çekirdek ses API'leri aracılığıyla ses cihazlarına erişir. Ayrıca, bazı ses uygulamaları çekirdek ses API'leriyle doğrudan iletişim kurar.

Çekirdek ses API'leri, bir ses uç noktası cihazının kullanıcı dostu bir şekilde benimsilmesini destekler. Ses uç noktası cihazı, kullanıcının doğrudan işlemekte olduğu fiziksel bir cihazı temsil eden bir yazılım soyutlamasıdır. Ses uç noktası cihazlarına örnek olarak hoparlörler, kulaklıklar ve mikrofonlar verilebilir. Daha fazla bilgi için bkz. Ses Uç Noktası Cihazları.

Aşağıdaki diyagramda çekirdek ses API'leri ve bunların Windows Vista'daki diğer kullanıcı modu ses bileşenleriyle ilişkisi gösterilmektedir.

kullanıcı modu ses işleme bileşenlerinin diyagramı

Kolaylık olması için, önceki diyagramda yalnızca uç nokta cihazının ses işleme veri yolu gösterilir; diyagramda ses yakalama veri yolu gösterilmez. Çekirdek ses API'leri, MMDevice API, WASAPI, DeviceTopology APIve Audioses.dll ve Mmdevapi.dll kullanıcı modu sistem modüllerinde uygulanan endpointVolume API içerir.

Önceki diyagramda gösterildiği gibi, temel ses API'leri aşağıdaki üst düzey API'ler için bir temel sağlar:

  • Media Foundation
  • Windows multimedya waveXxx ve mixerXxx işlevleri
  • DirectSound
  • DirectMusic

DirectSound, Windows multimedya ses işlevleri ve Media Foundation (akış ses işleyicisi veya SAR bileşeni aracılığıyla) çekirdek ses API'leriyle doğrudan iletişim kurar. DirectMusic, directSound aracılığıyla temel ses API'leriyle dolaylı olarak iletişim kurar.

WASAPI istemcisi, uç nokta arabelleğiaracılığıyla uç nokta cihazına veri geçirir. Sistem yazılımı ve donanım bileşenleri, verilerin uç nokta arabelleğinden uç nokta cihazına hareketini istemci için büyük ölçüde saydam olacak şekilde yönetir. Ayrıca, jack-presence algılamalı bir ses bağdaştırıcısına takılan bir uç nokta cihazı için istemci, yalnızca fiziksel olarak mevcut olan bir uç nokta cihazı için uç nokta arabelleği oluşturabilir. Jack-presence algılama hakkında daha fazla bilgi için bkz. Ses Uç Noktası Cihazları.

Yukarıdaki diyagramda iki tür uç nokta arabelleği gösterilmektedir. WASAPI istemcisi paylaşılan modda bir akış açarsa, istemci uç nokta arabelleğine ses verileri yazar ve Windows ses altyapısı verileri arabellekten okur. Bu modda, istemci ses donanımını diğer işlemlerde çalışan diğer uygulamalarla paylaşır. Ses altyapısı bu uygulamalardan gelen akışları karıştırır ve sonuçta elde edilen karışımı donanım aracılığıyla çalar. Ses altyapısı, tüm akış işleme işlemlerini yazılımda gerçekleştiren kullanıcı modu sistem bileşenidir (Audiodg.dll). Buna karşılık, bir istemci özel modda bir akış açarsa, istemcinin ses donanımına özel erişimi vardır. Genellikle, yalnızca az sayıda "pro ses" veya RTC uygulaması özel mod gerektirir. Diyagram hem paylaşılan modu hem de özel kullanım modu akışlarını gösterse de, istemcinin akışı paylaşılan modda mı yoksa özel kullanım modunda mı açtığına bağlı olarak, bu iki akışlardan yalnızca biri (ve buna karşılık gelen uç nokta arabelleği) vardır.

Özel kullanım modunda istemci, akışı uç nokta cihazının desteklediği herhangi bir ses biçiminde açmayı seçebilir. Paylaşılan modda, istemcinin akışı şu anda ses altyapısı tarafından kullanılmakta olan karma biçiminde (veya karma biçimine benzer bir biçimde) açması gerekir. Ses altyapısının giriş akışları ve motordan çıkış karışımı bu biçimdedir.

Windows 7'de, paylaşım modundaki akışlar için düşük gecikme modu adlı yeni bir özellik eklendi. Bu modda ses altyapısı çekme modunda çalışır ve bu modda gecikme süresinde önemli bir azalma olur. Bu, daha hızlı akış için düşük ses akışı gecikme süresi gerektiren iletişim uygulamaları için çok kullanışlıdır.

Düşük gecikme süreli ses akışlarını yöneten uygulamalar, uç nokta arabelleklerine erişen uygulama iş parçacıklarının önceliğini artırmak için Windows Vista'daki Multimedya Sınıf Zamanlayıcı Hizmeti'ni (MMCSS) kullanabilir. MMCSS, düşük öncelikli uygulamalara CPU kaynaklarını reddetmeden ses uygulamalarının yüksek öncelikli çalışmasını sağlar. MMCSS, görev adına göre bir iş parçacığına öncelik atar. Örneğin, Windows Vista ses akışlarını yöneten iş parçacıkları için "Ses" ve "Pro Ses" görev adlarını destekler. Varsayılan olarak, "Pro Audio" iş parçacığının önceliği "Ses" iş parçacığından daha yüksektir. MMCSS hakkında daha fazla bilgi için Windows SDK belgelerine bakın.

Çekirdek ses API'leri hem PCM'yi hem de PCM olmayan akış biçimlerini destekler. Ancak ses altyapısı yalnızca PCM akışlarını karıştırabilir. Bu nedenle, yalnızca özel mod akışları PCM olmayan biçimlere sahip olabilir. Daha fazla bilgi için bkz. Cihaz Biçimleri.

Ses altyapısı, uygulamanın çalıştığı işlemden ayrı olan kendi korumalı işleminde çalışır. Paylaşılan mod akışını desteklemek için, Windows ses hizmeti (önceki diyagramda "Ses Hizmeti" etiketli kutu), hem uygulama hem de ses altyapısı tarafından erişilebilen işlemler arası uç nokta arabelleği ayırır. Özel kullanım modu için uç nokta arabelleği hem uygulama hem de ses donanımı tarafından erişilebilen bellekte bulunur.

Windows ses hizmeti, Windows ses ilkesini uygulayan modüldür. Ses ilkesi, sistemin aynı ses donanımının kullanımı için paylaşan ve rekabet eden birden çok uygulamadan gelen ses akışları arasındaki etkileşimlere uyguladığı bir dizi iç kuraldır. Windows ses hizmeti, ses altyapısı için denetim parametrelerini ayarlayarak ses ilkesi uygular. Ses hizmetinin görevleri şunlardır:

  • Kullanıcının sisteme eklediği veya sistemden kaldırmış olduğu ses cihazlarını takip etme.
  • Sistemdeki ses cihazlarına atanan rolleri izleme.
  • Ses akışlarını benzer ses içeriği sınıfları (konsol, multimedya ve iletişim) oluşturan görev gruplarından yönetme.
  • Çeşitli ses içeriği türlerinin her biri için birleşik çıkış akışının ses düzeyini ("alt miks") denetleme.
  • Ses akışları için veri yollarındaki işleme öğeleri hakkında ses altyapısını bilgilendirme.

Windows'un bazı sürümlerinde, Windows ses hizmeti varsayılan olarak devre dışıdır ve sistemin ses çalabilmesi için önce açıkça açılması gerekir.

Yukarıdaki diyagramda gösterilen örnekte uç nokta cihazı, ses bağdaştırıcısına takılı bir hoparlör kümesidir. İstemci uygulaması ses verilerini uç nokta arabelleğine yazar ve ses altyapısı verileri arabellekten uç nokta cihazına taşıma ayrıntılarını işler.

Önceki diyagramda "Ses Sürücüsü" etiketli kutu, sistem tarafından sağlanan ve satıcı tarafından sağlanan sürücü bileşenlerinin bir bileşimi olabilir. PCI veya PCI Express veri yolu üzerinde bir ses bağdaştırıcısı söz konusu olduğunda, sistem bağdaştırıcıdaki çeşitli ses işlevleri için bir bağlantı noktası sürücüleri kümesi uygulayan Bağlantı Noktası Sınıfı sistem sürücüsünü (Portcls.sys) sağlar ve donanım satıcısı bağlantı noktası sürücüleri için cihaza özgü işlemleri işlemek için bir dizi miniport sürücüsü uygulayan bir bağdaştırıcı sürücüsü sağlar. PCI veya PCI Express veri yolu üzerinde Yüksek Tanımlı Ses denetleyicisi ve codec bileşeni söz konusu olduğunda, sistem bağdaştırıcı sürücüsünü (Hdaudio.sys) sağlar ve satıcı tarafından sağlanan sürücü gerekmez. USB veri yolu üzerinde bir ses bağdaştırıcısı söz konusu olduğunda, sistem AVStream sınıf sistem sürücüsünü (Ks.sys) ve USB Ses sürücüsünü (Usbaudio.sys); yeniden, satıcı tarafından sağlanan sürücü gerekmez.

Kolaylık olması için, önceki diyagramda yalnızca işleme akışları gösterilir. Ancak çekirdek ses API'leri yakalama akışlarını da destekler. Paylaşılan modda, birkaç istemci yakalanan akışı bir ses donanım cihazından paylaşabilir. Özel kullanım modunda bir istemci, yakalanan akışa cihazdan özel erişime sahiptir.

Programlama Kılavuzu