⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mintopotables.hpp

📁 C-Media8738/8768声卡驱动开发源码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
    {
        0,0,0,                                          // InstanceCount
        NULL,                                           // AutomationTable
        {                                               // KsPinDescriptor
            0,                                          // InterfacesCount
            NULL,                                       // Interfaces
            0,                                          // MediumsCount
            NULL,                                       // Mediums
            SIZEOF_ARRAY(WavePinDataRangePointersAC3Bridge),   // DataRangesCount
            WavePinDataRangePointersAC3Bridge,                 // DataRanges
            KSPIN_DATAFLOW_OUT,                          // DataFlow
            KSPIN_COMMUNICATION_NONE,                   // Communication
            NULL,                                       // Category
            NULL,                                       // Name
            0                                           // Reserved
        }
    }
};

static PCPROPERTY_ITEM PropertiesVolume[] =
{
    {
        &KSPROPSETID_Audio,
        KSPROPERTY_AUDIO_VOLUMELEVEL,
        KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT,
        PropertyHandler_Level
    },
    {
        &KSPROPSETID_Audio,
        KSPROPERTY_AUDIO_CPU_RESOURCES,
        KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT,
        PropertyHandler_CpuResources
    }
};
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationVolume,PropertiesVolume);

static PCPROPERTY_ITEM PropertiesLoudness[] =
{
    {
        &KSPROPSETID_Audio,
        KSPROPERTY_AUDIO_LOUDNESS,
        KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT,
        PropertyHandler_OnOff
    },
    {
        &KSPROPSETID_Audio,
        KSPROPERTY_AUDIO_CPU_RESOURCES,
        KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT,
        PropertyHandler_CpuResources
    }
};
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationLoudness,PropertiesLoudness);

static PCPROPERTY_ITEM PropertiesMute[] =
{
    {
        &KSPROPSETID_Audio,
        KSPROPERTY_AUDIO_MUTE,
        KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT,
        PropertyHandler_OnOff
    },
    {
        &KSPROPSETID_Audio,
        KSPROPERTY_AUDIO_CPU_RESOURCES,
        KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT,
        PropertyHandler_CpuResources
    }
};
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationMute,PropertiesMute);

static PCPROPERTY_ITEM PropertiesFilter[] =
{
  {
    &KSPROPSETID_General,
    KSPROPERTY_GENERAL_COMPONENTID,
    KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT,
    PropertyHandler_ComponentId
  },
  {
    &KSPROPSETID_CMI,
    KSPROPERTY_CMI_GET,
    KSPROPERTY_TYPE_GET,
    PropertyHandler_Private
  },
  {
    &KSPROPSETID_CMI,
    KSPROPERTY_CMI_SET,
    KSPROPERTY_TYPE_SET,
    PropertyHandler_Private
  }
};
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationFilter,PropertiesFilter);


const VolumeTable VolTable[] =
{//	  Node                          Reg   Mask  Shift   max  min  step dbshift
	{ KSNODE_TOPO_LINEOUT_VOLUME,   0x30, 0x1F, 3,      0,   -62, 2,   1 },
	{ KSNODE_TOPO_WAVEOUT_VOLUME,   0x32, 0x1F, 3,      0,   -62, 2,   1 },
	{ KSNODE_TOPO_CD_VOLUME,        0x36, 0x1F, 3,      0,   -62, 2,   1 },
	{ KSNODE_TOPO_LINEIN_VOLUME,    0x38, 0x1F, 3,      0,   -62, 2,   1 },
	{ KSNODE_TOPO_MICOUT_VOLUME,    0x3a, 0x1F, 3,      0,   -62, 2,   1 }
};

static PCNODE_DESCRIPTOR TopologyNodes[] =
{//	  Flags  AutomationTable      Type                  Name
// 0  - WAVEOUT_VOLUME
	{ 0,     &AutomationVolume,   &KSNODETYPE_VOLUME,   &KSAUDFNAME_WAVE_VOLUME      },
// 1  - WAVEOUT_MUTE
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_WAVE_MUTE        },
// 2  - MICOUT_VOLUME
	{ 0,     &AutomationVolume,   &KSNODETYPE_VOLUME,   &KSAUDFNAME_MIC_VOLUME       },
// 3  - LINEOUT_MIX
	{ 0,    NULL,                 &KSNODETYPE_SUM,      NULL                         },
// 4  - LINEOUT_VOLUME
	{ 0,     &AutomationVolume,   &KSNODETYPE_VOLUME,   &KSAUDFNAME_MASTER_VOLUME    },
// 5  - WAVEIN_SUM
	{ 0,     &AutomationMute,     &KSNODETYPE_SUM,      &KSAUDFNAME_RECORDING_SOURCE },
// 6  - CD_VOLUME
	{ 0,     &AutomationVolume,   &KSNODETYPE_VOLUME,   &KSAUDFNAME_CD_VOLUME        },
// 7  - LINEIN_VOLUME
	{ 0,     &AutomationVolume,   &KSNODETYPE_VOLUME,   &KSAUDFNAME_LINE_IN_VOLUME   },
// 8  - AUX_VOLUME
	{ 0,     &AutomationVolume,   &KSNODETYPE_VOLUME,   &KSAUDFNAME_AUX_VOLUME       },
// 9  - MICIN_VOLUME
	{ 0,     &AutomationVolume,   &KSNODETYPE_VOLUME,   &KSAUDFNAME_MIC_IN_VOLUME    },
// 10 - MICIN_LOUDNESS
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &KSAUDFNAME_MICROPHONE_BOOST },
// 11 - MICOUT_LOUDNESS
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &KSAUDFNAME_MICROPHONE_BOOST },
// 12 - CD_MUTE
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_CD_MUTE          },
// 13 - LINEIN_MUTE
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_LINE_MUTE        },
// 14 - MICOUT_MUTE
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_MIC_MUTE         },
// 15 - AUX_MUTE
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_AUX_MUTE         },
// 16 - LINEIN_MUTE_IN
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_LINE_MUTE        },
// 17 - MIC_MUTE_IN
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_MIC_MUTE         },
// 18 - AUX_MUTE_IN
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_CD_MUTE          },
// 19 - CD_MUTE_IN
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_AUX_MUTE         },
// 20 - WAVEOUT_MUTE_IN
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_WAVE_MUTE        },
// 21 - IEC_5V
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_IEC_5V              },
// 22 - IEC_OUT
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_IEC_OUT             },
// 23 - IEC_INVERSE
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_IEC_INVERSE         },
// 24 - IEC_MONITOR
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_IEC_MONITOR         },
// 25 - IEC_SELECT
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_IEC_SELECT          },
// 26 - SPDIF_AC3_MUTE - the WDM is truly braindamaged
	{ 0,     NULL,                &KSNODETYPE_MUTE,     NULL                         },
// 27 - SPDIF_AC3_MUX
	{ 0,     NULL,                &KSNODETYPE_MUX,      NULL                         },
// 28 - XCHG_FB
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_XCHG_FB             },
// 29 - BASS2LINE
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_BASS2LINE           },
// 30 - CENTER2LINE
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_CENTER2LINE         },
// 31 - IEC_COPYRIGHT
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_IEC_COPYRIGHT       },
// 32 - IEC_POLVALID
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_IEC_POLVALID        },
// 33 - IEC_LOOP
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_IEC_LOOP            },
// 34 - REAR2LINE
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_REAR2LINE           },
// 35 - CENTER2MIC
	{ 0,     &AutomationLoudness, &KSNODETYPE_LOUDNESS, &CMINAME_CENTER2MIC          },
// 36 - MASTER_MUTE_DUMMY
	{ 0,     &AutomationMute,     &KSNODETYPE_MUTE,     &KSAUDFNAME_MASTER_MUTE      }
};

static PCCONNECTION_DESCRIPTOR MiniportConnections[] =
{// FromNode,                      FromPin,               ToNode,                        ToPin
  { PCFILTER_NODE,                 PIN_WAVEOUT_SOURCE,    KSNODE_TOPO_WAVEOUT_VOLUME,    1                  },
  { KSNODE_TOPO_WAVEOUT_VOLUME,    0,                     KSNODE_TOPO_WAVEOUT_MUTE,      1                  },
  { KSNODE_TOPO_WAVEOUT_MUTE,      0,                     KSNODE_TOPO_LINEOUT_MIX,       1                  },

  { PCFILTER_NODE,                 PIN_CD_SOURCE,         KSNODE_TOPO_CD_VOLUME,         1                  },
  { KSNODE_TOPO_CD_VOLUME,         0,                     KSNODE_TOPO_CD_MUTE,           1                  },
  { KSNODE_TOPO_CD_MUTE,           0,                     KSNODE_TOPO_LINEOUT_MIX,       2                  },

  { PCFILTER_NODE,                 PIN_LINEIN_SOURCE,     KSNODE_TOPO_LINEIN_VOLUME,     1                  },
  { KSNODE_TOPO_LINEIN_VOLUME,     0,                     KSNODE_TOPO_LINEIN_MUTE,       1                  },
  { KSNODE_TOPO_LINEIN_MUTE,       0,                     KSNODE_TOPO_LINEOUT_MIX,       3                  },

  { PCFILTER_NODE,                 PIN_AUX_SOURCE,        KSNODE_TOPO_AUX_VOLUME,        1                  },
  { KSNODE_TOPO_AUX_VOLUME,        0,                     KSNODE_TOPO_AUX_MUTE,          1                  },
  { KSNODE_TOPO_AUX_MUTE,          0,                     KSNODE_TOPO_LINEOUT_MIX,       3                  },

  { PCFILTER_NODE,                 PIN_MIC_SOURCE,        KSNODE_TOPO_MICOUT_LOUDNESS,   1                  },
  { KSNODE_TOPO_MICOUT_LOUDNESS,   0,                     KSNODE_TOPO_MICOUT_VOLUME,     1                  },
  { KSNODE_TOPO_MICOUT_VOLUME,     0,                     KSNODE_TOPO_MICOUT_MUTE,       1                  },
  { KSNODE_TOPO_MICOUT_MUTE,       0,                     KSNODE_TOPO_LINEOUT_MIX,       4                  },

  { PCFILTER_NODE,                 PIN_DAC_SOURCE,        KSNODE_TOPO_IEC_MONITOR,       1                  },
  { KSNODE_TOPO_IEC_MONITOR,       0,                     KSNODE_TOPO_BASS2LINE,         1                  },
  { KSNODE_TOPO_BASS2LINE,         0,                     KSNODE_TOPO_CENTER2LINE,       1                  },
  { KSNODE_TOPO_CENTER2LINE,       0,                     KSNODE_TOPO_REAR2LINE,         1                  },
  { KSNODE_TOPO_REAR2LINE,         0,                     KSNODE_TOPO_CENTER2MIC,        1                  },
  { KSNODE_TOPO_CENTER2MIC,        0,                     KSNODE_TOPO_XCHG_FB,           1                  },
  { KSNODE_TOPO_XCHG_FB,           0,                     KSNODE_TOPO_WAVEOUT_VOLUME,    1                  },
  { KSNODE_TOPO_WAVEOUT_VOLUME,    0,                     KSNODE_TOPO_WAVEOUT_MUTE,      1                  },
  { KSNODE_TOPO_WAVEOUT_MUTE,      0,                     KSNODE_TOPO_LINEOUT_MIX,       5                  },

  { KSNODE_TOPO_LINEOUT_MIX,       0,                     KSNODE_TOPO_IEC_OUT,           1                  },
  { KSNODE_TOPO_IEC_OUT,           0,                     KSNODE_TOPO_IEC_5V,            1                  },
  { KSNODE_TOPO_IEC_5V,            0,                     KSNODE_TOPO_MASTER_MUTE_DUMMY, 1                  },
  { KSNODE_TOPO_MASTER_MUTE_DUMMY, 0,                     KSNODE_TOPO_LINEOUT_VOLUME,    1                  },
  { KSNODE_TOPO_LINEOUT_VOLUME,    0,                     PCFILTER_NODE,                 PIN_LINEOUT_DEST   },

  { PCFILTER_NODE,                 PIN_MIC_SOURCE,        KSNODE_TOPO_MICIN_LOUDNESS,    1                  },
  { KSNODE_TOPO_MICIN_LOUDNESS,    0,                     KSNODE_TOPO_MICIN_VOLUME,      1                  },
  { KSNODE_TOPO_MICIN_VOLUME,      0,                     KSNODE_TOPO_MIC_MUTE_IN,       1                  },
  { KSNODE_TOPO_MIC_MUTE_IN,       0,                     KSNODE_TOPO_WAVEIN_SUM,        1                  },

  { KSNODE_TOPO_LINEIN_VOLUME,     0,                     KSNODE_TOPO_LINEIN_MUTE_IN,    1                  },
  { KSNODE_TOPO_LINEIN_MUTE_IN,    0,                     KSNODE_TOPO_WAVEIN_SUM,        2                  },

  { KSNODE_TOPO_CD_VOLUME,         0,                     KSNODE_TOPO_CD_MUTE_IN,        1                  },
  { KSNODE_TOPO_CD_MUTE_IN,        0,                     KSNODE_TOPO_WAVEIN_SUM,        3                  },

  { KSNODE_TOPO_AUX_VOLUME,        0,                     KSNODE_TOPO_AUX_MUTE_IN,       1                  },
  { KSNODE_TOPO_AUX_MUTE_IN,       0,                     KSNODE_TOPO_WAVEIN_SUM,        4                  },

  { PCFILTER_NODE,                 PIN_SPDIFIN_SOURCE,    KSNODE_TOPO_WAVEOUT_MUTE_IN,   1                  },
  { KSNODE_TOPO_WAVEOUT_MUTE_IN,   0,                     KSNODE_TOPO_IEC_INVERSE,       1                  },
  { KSNODE_TOPO_IEC_INVERSE,       0,                     KSNODE_TOPO_IEC_SELECT,        1                  },
  { KSNODE_TOPO_IEC_SELECT,        0,                     KSNODE_TOPO_IEC_COPYRIGHT,     1                  },
  { KSNODE_TOPO_IEC_COPYRIGHT,     0,                     KSNODE_TOPO_IEC_POLVALID,      1                  },
  { KSNODE_TOPO_IEC_POLVALID,      0,                     KSNODE_TOPO_IEC_LOOP,          1                  },
  { KSNODE_TOPO_IEC_LOOP,          0,                     KSNODE_TOPO_WAVEIN_SUM,        5                  },

  { KSNODE_TOPO_WAVEIN_SUM,        0,                     PCFILTER_NODE,                 PIN_WAVEIN_DEST    },

  { PCFILTER_NODE,                 PIN_SPDIF_AC3_SOURCE,  KSNODE_TOPO_SPDIF_AC3_MUTE,    1                  },
  { KSNODE_TOPO_SPDIF_AC3_MUTE,    0,                     KSNODE_TOPO_SPDIF_AC3_MUX,     1                  },
  { KSNODE_TOPO_SPDIF_AC3_MUX,     0,                     PCFILTER_NODE,                 PIN_SPDIF_AC3_DEST },
};


static PCFILTER_DESCRIPTOR MiniportFilterDescriptor =
{
    0,                                  // Version
    &AutomationFilter,                  // AutomationTable
    sizeof(PCPIN_DESCRIPTOR),           // PinSize
    SIZEOF_ARRAY(MiniportPins),         // PinCount
    MiniportPins,                       // Pins
    sizeof(PCNODE_DESCRIPTOR),          // NodeSize
    SIZEOF_ARRAY(TopologyNodes),        // NodeCount
    TopologyNodes,                      // Nodes
    SIZEOF_ARRAY(MiniportConnections),  // ConnectionCount
    MiniportConnections,                // Connections
    0,                                  // CategoryCount
    NULL                                // Categories: NULL->use default (audio, render, capture)
};


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -