ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

minwavetables.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.