вопрос по аудио драйверу
От: nikkov73  
Дата: 21.03.12 10:49
Оценка:
Пробую разбираться с написанием драйверов на базе AVStream
Драйвер примитивный,в дескрипторе фильтра описаны 2 пина:


const
KSPIN_DISPATCH
renderPinDispatch = {
    DispatchCreate,            // Pin Create
    NULL,                      // Pin Close
    DispatchProcess,           // Pin Process
    NULL,                      // Pin Reset
    DispatchSetFormat,         // Pin Set Data Format
    DispatchSetState,          // Pin Set Device State
    NULL,                      // Pin Connect
    NULL,                      // Pin Disconnect
    NULL,                      // Clock Dispatch
    NULL                       // Allocator Dispatch
};

static const KSPIN_DESCRIPTOR_EX
renderFilterPinDescriptors[] = {
    {                                         //Audio Input Pin
      &renderPinDispatch,                     // Dispatch
      NULL,                                   // AutomationTable
      {                                       // PinDescriptor
        DEFINE_KSPIN_DEFAULT_INTERFACES,      // Interfaces
        DEFINE_KSPIN_DEFAULT_MEDIUMS,         // Mediums
        SIZEOF_ARRAY(audioPinDataRanges),     // Range Count
        audioPinDataRanges,                   // Ranges
        KSPIN_DATAFLOW_IN,                    // Dataflow
        KSPIN_COMMUNICATION_SINK,             // Communication
        &KSCATEGORY_AUDIO,                    // Category
        NULL,                                 // Name
        0                                     // Reserved
      },
      KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL | KSPIN_FLAG_ASYNCHRONOUS_PROCESSING | KSPIN_FLAG_HYPERCRITICAL_PROCESSING | KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING,
      1,                                      // Instances Possible
      0,                                      // Instances Necessary
      &audioPinAllocatorFraming,              // Allocator Framing
      (PFNKSINTERSECTHANDLEREX)(IntersectHandler) // IntersectHandler
    },
    {                                           // Audio Output Pin
      NULL,                                     // Dispatch
      NULL,                                     // AutomationTable
      {                                         // PinDescriptor
        DEFINE_KSPIN_DEFAULT_INTERFACES,        // Interfaces
        DEFINE_KSPIN_DEFAULT_MEDIUMS,           // Mediums
        0,                                      // Range Count
        NULL,                                   // Ranges
        KSPIN_DATAFLOW_OUT,                     // Dataflow
        KSPIN_COMMUNICATION_BRIDGE,             // Communication
        &KSNODETYPE_HEADPHONES,                 // Category
        NULL,                                   // Name
        0                                       // Reserved
      },
      0,                                        // Flags
      0,                                        // Instances Possible
      0,                                        // Instances Necessary
      NULL,                                     // Allocator Framing
      NULL                                      // IntersectHandler
    }
};



На всех обработчиках стоят заглушки который возвращают STATUS_SUCCESS. Нодов нет, в коннектах пин 0 соединен с пином 1.

Столкнулся со следующей проблемой: устройство воспроизведения видно, при проигрывании обработчик DispatchSetState вызывается, в KSSTATE_RUN переходит, а дальше DispatchProcess не вызывается. Вернее вызывается, когда я проигрываю звук через KS, а когда проигрываю через DS и стандартными средствами — не вызывается.

Просьба сильно не пинать, т.к. в этой области я начинающий
avstream
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.