Aracılığıyla paylaş


Donanım boşaltılan ses sürücüsü uygulaması

Boşaltılan ses için bir sürücü uyguladığınızda, boşaltılan ses akışlarını işleyebilen ve bu özelliği Windows ses sistemine kullanıma sunan bir sürücü geliştirirsiniz.

Bu konu başlığında, donanımdan boşaltılan ses akışlarını işleyebilen bir ses bağdaştırıcısı için geliştirilen bir ses sürücüsünün uygulama ayrıntıları açıklanmaktadır.

Bu bölümdeki bu ek konular, boşaltılan ses akışlarını işlemek üzere bir donanım ses altyapısı uygulayan bir ses bağdaştırıcısı için ses sürücüsü geliştirirken bilmeniz gereken sorunları ele almaktadır.

Boşaltılan Ses İşleme için Portcls Yardımcı Arabirimleri

Aktarılan Ses için Hata Raporlama

Donanım boşaltma - KS filtre topolojisi

Windows, ses akışlarını işlemek için yerleşik donanım ses altyapısı kullanabilen bir ses bağdaştırıcısı kullanımını destekler. Böyle bir ses bağdaştırıcısı geliştirirken, ilgili ses sürücüsünün bu gerçeği kullanıcı modu ses sistemine belirli bir şekilde sunması gerekir, böylece ses sistemi bu bağdaştırıcının ve sürücüsünün özelliklerini bulabilir, kullanabilir ve düzgün bir şekilde kullanıma sunmalıdır.

Donanımda etki uygulayan DSP donanımlı bir sistemi gösteren diyagram.

Düğüm tanımlayıcıları için KSNODETYPE_AUDIO_ENGINE GUID'i

Ses bağdaştırıcısı boşaltılan ses akışlarını işleyebilecek durumdaysa bağdaştırıcının ses sürücüsü, bağdaştırıcının KS filtresindeki bir düğümü kullanarak bu özelliği kullanıma sunar.

Ses bağdaştırıcısı boşaltılan ses akışlarını işleyebilecek durumdaysa bağdaştırıcının ses sürücüsü, bağdaştırıcının KS filtresindeki belirli bir düğümü kullanarak bu özelliği kullanıma sunar.

Ses akışı yolundaki her düğümün bir düğüm tanımlayıcısı vardır; yükten donanım kapalı olması için sürücünün Tür GUID'sini KSNODETYPE_AUDIO_ENGINE olarak ayarlaması gerekir.

Sürücünün bu düğüm için düğüm tanımlayıcısını nasıl yapılandırabileceğine ilişkin bir örnek aşağıda verilmişti:

typedef struct _KSNODE_DESCRIPTOR {
  const KSAUTOMATION_TABLE *AutomationTable;    // drv specific
  const GUID               *Type;       // must be set to KSNODETYPE_AUDIO_ENGINE
  const GUID               *Name;       // drv specific (KSNODETYPE_AUDIO_ENGINE?)  
} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;

Ad GUID'i KSNODETYPE_AUDIO_ENGINE olarak ayarlandıysa, bu düğüm için varsayılan bir ad dizesi oluşturmanız gerekir. Ardından bu dizeyi ks.inf'ye eklersiniz, böylece sürücü yüklenirken dize MediaCategories kayıt defteri anahtarını doldurmak için kullanılabilir.

KSNODETYPE_AUDIO_ENGINE düğüm türü için GUID'nin tanımı aşağıdaki gibidir:

Code style
#define STATIC_KSNODETYPE_AUDIO_ENGINE\
    0x35caf6e4, 0xf3b3, 0x4168, 0xbb, 0x4b, 0x55, 0xe7, 0x7a, 0x46, 0x1c, 0x7e
DEFINE_GUIDSTRUCT("35CAF6E4-F3B3-4168-BB4B-55E77A461C7E", KSNODETYPE_AUDIO_ENGINE);
#define KSNODETYPE_AUDIO_ENGINE DEFINE_GUIDNAMED(KSNODETYPE_AUDIO_ENGINE)

Daha fazla bilgi için bkz. ksmedia.h üst bilgi dosyası.

Yukarıdaki bilgilere dayanarak, bir miniport düğümü için tanımlayıcı aşağıdaki gibi görünebilir:

PCNODE_DESCRIPTOR MiniportNodes[] =
{
    // KSNODE_WAVE_AUDIO_ENGINE
    {
        0,                          // Flags
        NULL,                       // AutomationTable
        &KSNODETYPE_AUDIO_ENGINE,   // Type  KSNODETYPE_AUDIO_ENGINE
        NULL                        // Name
    }
};

Ses altyapıları için KSPROPSETID_AudioEngine KS özelliği kümesi

KSPROPSETID_AudioEngine özellik kümesi, donanım ses altyapılarını ve donanımdan boşaltılan ses işlemeyi desteklemek için kullanılır. Bu nedenle boşaltılan ses akışlarını işleyebilen bir bağdaştırıcının sürücüsü bu yeni özellik kümesindeki özellikleri desteklemelidir.

KSPROPSETID_AudioEngine özellik kümesi aşağıdaki gibi tanımlanır:

#define STATIC_KSPROPSETID_AudioEngine\
    0x3A2F82DCL, 0x886F, 0x4BAA, 0x9E, 0xB4, 0x8, 0x2B, 0x90, 0x25, 0xC5, 0x36
DEFINE_GUIDSTRUCT("3A2F82DC-886F-4BAA-9EB4-082B9025C536", KSPROPSETID_AudioEngine);
#define KSPROPSETID_AudioEngine DEFINE_GUIDNAMED(KSPROPSETID_AudioEngine)

Bu özellik kümesindeki özelliklerin adları KSPROPERTY_AUDIOENGINE sabit listesinde tanımlanır ve sürücünün bu adları desteklemesi gerekir.

KSPROPSETID_AudioEngine özellik kümesindeki özellikler şunlardır:

KSPROPERTY_AUDIOENGINE_BUFFER_SIZE_RANGE

KSPROPERTY_AUDIOENGINE_DESCRIPTOR

KSPROPERTY_AUDIOENGINE_DEVICEFORMAT

KSPROPERTY_AUDIOENGINE_GFXENABLE

KSPROPERTY_AUDIOENGINE_LFXENABLE

KSPROPERTY_AUDIOENGINE_LOOPBACK_PROTECTION

KSPROPERTY_AUDIOENGINE_MIXFORMAT

KSPROPERTY_AUDIOENGINE_SUPPORTEDDEVICEFORMATS

KSPROPERTY_AUDIOENGINE_VOLUMELEVEL

KSPROPSETID_ Ses özellik kümesindeki gerekli özellikler

Sürücü, KSPROPSETID_AudioEngine özellik kümesindeki özellikleri desteklemeye ek olarak, KSPROPSETID_Audio özellik kümesinde aşağıdaki mevcut özellikleri de desteklemelidir:

KSPROPERTY_AUDIO_MUTE

KSPROPERTY_AUDIO_PEAKMETER2

KSPROPERTY_AUDIO_VOLUMELEVEL

Donanımdan boşaltılan ses işleme için sürücü desteğinin uygulanmasını tamamlamak için, özellikler KSPROPSETID_ Ses özellik kümesinde kullanılabilir.

KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION

KSPROPERTY_AUDIO_PRESENTATION_POSITION

KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION

Bağlantı noktası sınıfı sürücü güncelleştirmeleri ve hata raporlama

Windows bağlantı noktası sınıfı sürücüsü, donanımdan boşaltılan ses işlemeye yönelik önceki bölümlerde açıklanan desteğe ek olarak, boşaltılan ses akışlarıyla çalışabilen bir sürücü geliştirmeyi basit hale getirmek için "yardımcı arabirimler" sağlar. Böyle bir sürücü arıza algıladığında, sürücünün hata hatalarını bildirmesine izin veren bir mekanizma vardır. Aşağıdaki konular yardımcı arabirimler ve hata raporlama hakkında daha fazla ayrıntı sağlar:

Boşaltılan Ses İşleme için Portcls Yardımcı Arabirimleri Donanımdan boşaltılan ses işlemeye yönelik önceki bölümlerde açıklanan desteğe ek olarak, Windows bağlantı noktası sınıfı sürücüsü, boşaltılan ses akışlarıyla çalışabilecek bir sürücü geliştirmeyi basit hale getirmek için "yardımcı arabirimler" de içerir. Böyle bir sürücü arıza algıladığında, sürücünün hata hatalarını bildirmesine izin veren bir mekanizma vardır. Aşağıdaki konular yardımcı arabirimler ve hata raporlama hakkında daha fazla ayrıntı sağlar:

Windows Ses İşleme Nesneleri