Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenminwavetables.hpp
Go to the documentation of this file.
00001 /* 00002 Copyright (c) 2006-2007 dogbert <dogber1@gmail.com> 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without 00006 modification, are permitted provided that the following conditions 00007 are met: 00008 1. Redistributions of source code must retain the above copyright 00009 notice, this list of conditions and the following disclaimer. 00010 2. Redistributions in binary form must reproduce the above copyright 00011 notice, this list of conditions and the following disclaimer in the 00012 documentation and/or other materials provided with the distribution. 00013 3. The name of the author may not be used to endorse or promote products 00014 derived from this software without specific prior written permission. 00015 00016 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 00017 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00018 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 00019 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 00020 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 00021 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00022 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00023 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00024 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 00025 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00026 */ 00027 00028 #ifndef _MINWAVETABLES_HPP_ 00029 #define _MINWAVETABLES_HPP_ 00030 00031 #define STATIC_KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF\ 00032 DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_DOLBY_AC3_SPDIF) 00033 DEFINE_GUIDSTRUCT("00000092-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF); 00034 #define KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF) 00035 /* Warning - Recursive #define for KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF */ 00036 00037 NTSTATUS NTAPI PropertyHandler_ChannelConfig(PPCPROPERTY_REQUEST PropertyRequest); 00038 00039 static KSDATARANGE_AUDIO WavePinDataRangesPCMStream[] = 00040 { 00041 { 00042 {{ 00043 sizeof(KSDATARANGE_AUDIO), 00044 0, 00045 0, 00046 0, 00047 { STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO) }, 00048 { STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM) }, 00049 { STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) } 00050 }}, 00051 MAX_CHANNELS_PCM, 00052 MIN_BITS_PER_SAMPLE_PCM, 00053 MAX_BITS_PER_SAMPLE_PCM, 00054 MIN_SAMPLE_RATE, 00055 MAX_SAMPLE_RATE 00056 } 00057 }; 00058 00059 static KSDATARANGE_AUDIO WavePinDataRangesAC3Stream[] = 00060 { 00061 { 00062 {{ 00063 sizeof(KSDATARANGE_AUDIO), 00064 0, 00065 0, 00066 0, 00067 { STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO) }, 00068 { STATICGUIDOF(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF) }, 00069 { STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX) } 00070 }}, 00071 MAX_CHANNELS_AC3, 00072 MIN_BITS_PER_SAMPLE_AC3, 00073 MAX_BITS_PER_SAMPLE_AC3, 00074 MIN_SAMPLE_RATE_AC3, 00075 MAX_SAMPLE_RATE_AC3 00076 }, 00077 { 00078 {{ 00079 sizeof(KSDATARANGE_AUDIO), 00080 0, 00081 0, 00082 0, 00083 { STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO) }, 00084 { STATICGUIDOF(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF) }, 00085 { STATICGUIDOF(KSDATAFORMAT_SPECIFIER_DSOUND) } 00086 }}, 00087 MAX_CHANNELS_AC3, 00088 MIN_BITS_PER_SAMPLE_AC3, 00089 MAX_BITS_PER_SAMPLE_AC3, 00090 MIN_SAMPLE_RATE_AC3, 00091 MAX_SAMPLE_RATE_AC3 00092 } 00093 }; 00094 00095 static PKSDATARANGE WavePinDataRangePointersPCMStream[] = 00096 { 00097 PKSDATARANGE(&WavePinDataRangesPCMStream[0]) 00098 }; 00099 00100 static PKSDATARANGE WavePinDataRangePointersAC3Stream[] = 00101 { 00102 PKSDATARANGE(&WavePinDataRangesAC3Stream[0]), 00103 PKSDATARANGE(&WavePinDataRangesAC3Stream[1]), 00104 }; 00105 00106 00107 00108 static KSDATARANGE WavePinDataRangesPCMBridge[] = 00109 { 00110 {{ 00111 sizeof(KSDATARANGE), 00112 0, 00113 0, 00114 0, 00115 { STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO) }, 00116 { STATICGUIDOF(KSDATAFORMAT_SUBTYPE_ANALOG) }, 00117 { STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE) } 00118 }} 00119 }; 00120 00121 static KSDATARANGE WavePinDataRangesAC3Bridge[] = 00122 { 00123 {{ 00124 sizeof(KSDATARANGE), 00125 0, 00126 0, 00127 0, 00128 { STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO) }, 00129 { STATICGUIDOF(KSDATAFORMAT_SUBTYPE_AC3_AUDIO) }, 00130 { STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE) } 00131 }} 00132 }; 00133 00134 static PKSDATARANGE WavePinDataRangePointersPCMBridge[] = 00135 { 00136 &WavePinDataRangesPCMBridge[0] 00137 }; 00138 00139 static PKSDATARANGE WavePinDataRangePointersAC3Bridge[] = 00140 { 00141 &WavePinDataRangesAC3Bridge[0] 00142 }; 00143 00144 static PCPIN_DESCRIPTOR WaveMiniportPins[] = 00145 { 00146 // PIN_WAVE_CAPTURE_SINK - 0 00147 { 00148 MAX_OUTPUT_STREAMS, 00149 MAX_OUTPUT_STREAMS, 00150 0, 00151 NULL, 00152 { 00153 0, 00154 NULL, 00155 0, 00156 NULL, 00157 SIZEOF_ARRAY(WavePinDataRangePointersPCMStream), 00158 WavePinDataRangePointersPCMStream, 00159 KSPIN_DATAFLOW_OUT, 00160 KSPIN_COMMUNICATION_SINK, 00161 &KSCATEGORY_AUDIO, 00162 &KSAUDFNAME_RECORDING_CONTROL, 00163 { 0 } 00164 } 00165 }, 00166 00167 // PIN_WAVE_CAPTURE_SOURCE - 1 00168 { 00169 0, 00170 0, 00171 0, 00172 NULL, 00173 { 00174 0, 00175 NULL, 00176 0, 00177 NULL, 00178 SIZEOF_ARRAY(WavePinDataRangePointersPCMBridge), 00179 WavePinDataRangePointersPCMBridge, 00180 KSPIN_DATAFLOW_IN, 00181 KSPIN_COMMUNICATION_NONE, 00182 &KSCATEGORY_AUDIO, 00183 NULL, 00184 { 0 } 00185 } 00186 }, 00187 00188 // PIN_WAVE_RENDER_SINK - 2 00189 { 00190 MAX_INPUT_STREAMS, 00191 MAX_INPUT_STREAMS, 00192 0, 00193 NULL, 00194 { 00195 0, 00196 NULL, 00197 0, 00198 NULL, 00199 SIZEOF_ARRAY(WavePinDataRangePointersPCMStream), 00200 WavePinDataRangePointersPCMStream, 00201 KSPIN_DATAFLOW_IN, 00202 KSPIN_COMMUNICATION_SINK, 00203 &KSCATEGORY_AUDIO, 00204 &KSAUDFNAME_VOLUME_CONTROL, 00205 { 0 } 00206 } 00207 }, 00208 00209 // PIN_WAVE_RENDER_SOURCE - 3 00210 { 00211 0, 00212 0, 00213 0, 00214 NULL, 00215 { 00216 0, 00217 NULL, 00218 0, 00219 NULL, 00220 SIZEOF_ARRAY(WavePinDataRangePointersPCMBridge), 00221 WavePinDataRangePointersPCMBridge, 00222 KSPIN_DATAFLOW_OUT, 00223 KSPIN_COMMUNICATION_NONE, 00224 &KSNODETYPE_SPEAKER, 00225 NULL, 00226 { 0 } 00227 } 00228 }, 00229 00230 // PIN_WAVE_AC3_RENDER_SINK - 4 00231 { 00232 MAX_AC3_INPUT_STREAMS, 00233 MAX_AC3_INPUT_STREAMS, 00234 0, 00235 NULL, 00236 { 00237 0, 00238 NULL, 00239 0, 00240 NULL, 00241 SIZEOF_ARRAY(WavePinDataRangePointersAC3Stream), 00242 WavePinDataRangePointersAC3Stream, 00243 KSPIN_DATAFLOW_IN, 00244 KSPIN_COMMUNICATION_SINK, 00245 &KSCATEGORY_AUDIO, 00246 NULL, 00247 { 0 } 00248 } 00249 }, 00250 00251 00252 // PIN_WAVE_AC3_RENDER_SOURCE - 5 00253 { 00254 0, 00255 0, 00256 0, 00257 NULL, 00258 { 00259 0, 00260 NULL, 00261 0, 00262 NULL, 00263 SIZEOF_ARRAY(WavePinDataRangePointersAC3Bridge), 00264 WavePinDataRangePointersAC3Bridge, 00265 KSPIN_DATAFLOW_OUT, 00266 KSPIN_COMMUNICATION_NONE, 00267 &KSNODETYPE_SPDIF_INTERFACE, 00268 NULL, 00269 { 0 } 00270 } 00271 } 00272 }; 00273 00274 static PCPROPERTY_ITEM PropertiesChannels[] = 00275 { 00276 { 00277 &KSPROPSETID_Audio, 00278 KSPROPERTY_AUDIO_CHANNEL_CONFIG, 00279 KSPROPERTY_TYPE_BASICSUPPORT | KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET, 00280 (PCPFNPROPERTY_HANDLER)PropertyHandler_ChannelConfig 00281 } 00282 }; 00283 DEFINE_PCAUTOMATION_TABLE_PROP(AutomationChans,PropertiesChannels); 00284 00285 static PCNODE_DESCRIPTOR WaveMiniportNodes[] = 00286 {// Flags AutomationTable Type Name 00287 // 0 - KSNODE_WAVE_ADC 00288 { 0, NULL, &KSNODETYPE_ADC, NULL }, 00289 // 1 - KSNODE_WAVE_VOLUME1 00290 { 0, NULL, &KSNODETYPE_VOLUME, NULL }, 00291 // 2 - KSNODE_WAVE_3D_EFFECTS 00292 { 0, NULL, &KSNODETYPE_3D_EFFECTS, NULL }, 00293 // 3 - KSNODE_WAVE_SUPERMIX 00294 { 0, NULL, &KSNODETYPE_SUPERMIX, NULL }, 00295 // 4 - KSNODE_WAVE_VOLUME2 00296 { 0, NULL, &KSNODETYPE_VOLUME, NULL }, 00297 // 5 - KSNODE_WAVE_SRC 00298 { 0, NULL, &KSNODETYPE_SRC, NULL }, 00299 // 6 - KSNODE_WAVE_SUM 00300 { 0, NULL, &KSNODETYPE_SUM, NULL }, 00301 // 7 - KSNODE_WAVE_DAC 00302 { 0, &AutomationChans, &KSNODETYPE_DAC, NULL }, 00303 // 8 - KSNODE_WAVE_SPDIF (XP crashes if the pins are directly connected) 00304 { 0, NULL, &KSNODETYPE_SPDIF_INTERFACE, NULL }, 00305 }; 00306 00307 static PCCONNECTION_DESCRIPTOR WaveMiniportConnections[] = 00308 {// FromNode, FromPin, ToNode, ToPin 00309 { PCFILTER_NODE, PIN_WAVE_CAPTURE_SOURCE, KSNODE_WAVE_ADC, 1 }, 00310 { KSNODE_WAVE_ADC, 0, PCFILTER_NODE, PIN_WAVE_CAPTURE_SINK }, 00311 00312 { PCFILTER_NODE, PIN_WAVE_RENDER_SINK, KSNODE_WAVE_VOLUME1, 1 }, 00313 { KSNODE_WAVE_VOLUME1, 0, KSNODE_WAVE_3D_EFFECTS, 1 }, 00314 { KSNODE_WAVE_3D_EFFECTS, 0, KSNODE_WAVE_SUPERMIX, 1 }, 00315 { KSNODE_WAVE_SUPERMIX, 0, KSNODE_WAVE_VOLUME2, 1 }, 00316 { KSNODE_WAVE_VOLUME2, 0, KSNODE_WAVE_SRC, 1 }, 00317 { KSNODE_WAVE_SRC, 0, KSNODE_WAVE_SUM, 1 }, 00318 { KSNODE_WAVE_SUM, 0, KSNODE_WAVE_DAC, 1 }, 00319 { KSNODE_WAVE_DAC, 0, PCFILTER_NODE, PIN_WAVE_RENDER_SOURCE }, 00320 00321 { PCFILTER_NODE, PIN_WAVE_AC3_RENDER_SINK,KSNODE_WAVE_SPDIF, 1 }, 00322 { KSNODE_WAVE_SPDIF, 0, PCFILTER_NODE, PIN_WAVE_AC3_RENDER_SOURCE }, 00323 }; 00324 00325 static PCFILTER_DESCRIPTOR WaveMiniportFilterDescriptor = 00326 { 00327 0, // Version 00328 NULL, // AutomationTable 00329 sizeof(PCPIN_DESCRIPTOR), // PinSize 00330 SIZEOF_ARRAY(WaveMiniportPins), // PinCount 00331 WaveMiniportPins, // Pins 00332 sizeof(PCNODE_DESCRIPTOR), // NodeSize 00333 SIZEOF_ARRAY(WaveMiniportNodes), // NodeCount 00334 WaveMiniportNodes, // Nodes 00335 SIZEOF_ARRAY(WaveMiniportConnections), // ConnectionCount 00336 WaveMiniportConnections, // Connections 00337 0, // CategoryCount 00338 NULL // Categories - use the default categories (audio, render, capture) 00339 }; 00340 00341 #endif //_MINWAVETABLES_HPP_ Generated on Sun May 27 2012 04:28:39 for ReactOS by
1.7.6.1
|