00001 //=========================================================================== 00002 //Copyright (C) 2003, 2004 Zentaro Kavanagh 00003 // 00004 //Copyright (C) 2003, 2004 Commonwealth Scientific and Industrial Research 00005 // Organisation (CSIRO) Australia 00006 // 00007 //Redistribution and use in source and binary forms, with or without 00008 //modification, are permitted provided that the following conditions 00009 //are met: 00010 // 00011 //- Redistributions of source code must retain the above copyright 00012 // notice, this list of conditions and the following disclaimer. 00013 // 00014 //- Redistributions in binary form must reproduce the above copyright 00015 // notice, this list of conditions and the following disclaimer in the 00016 // documentation and/or other materials provided with the distribution. 00017 // 00018 //- Neither the name of Zentaro Kavanagh nor the names of contributors 00019 // may be used to endorse or promote products derived from this software 00020 // without specific prior written permission. 00021 // 00022 //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00023 //``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00024 //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 00025 //PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ORGANISATION OR 00026 //CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00027 //EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00028 //PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00029 //PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00030 //LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00031 //NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00032 //SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 //=========================================================================== 00034 #pragma once 00035 00036 //#ifdef DSFANXMUX_EXPORTS 00037 //#define DSFANXMUX_API __declspec(dllexport) 00038 //#else 00039 //#define DSFANXMUX_API __declspec(dllimport) 00040 //#endif 00041 #ifdef DSFOGGMUX_EXPORTS 00042 #pragma message("----> Exporting from Ogg Mux...") 00043 #define OGG_MUX_API __declspec(dllexport) 00044 #else 00045 #pragma message("<---- Importing from Ogg Mux...") 00046 #define OGG_MUX_API __declspec(dllimport) 00047 #endif 00048 00049 00050 // {6C5746D3-D309-4988-8694-D435AB86460D} 00051 DEFINE_GUID(CLSID_AnxMuxFilter, 00052 0x6c5746d3, 0xd309, 0x4988, 0x86, 0x94, 0xd4, 0x35, 0xab, 0x86, 0x46, 0xd); 00053 00054 00056 //DEFINE_GUID(FORMAT_CMML, 00057 //0x53696c76, 0x6961, 0x40b2, 0xb1, 0x36, 0x43, 0x6f, 0x6e, 0x72, 0x61, 0x64); 00058 // 00059 // 00061 //DEFINE_GUID(MEDIASUBTYPE_CMML, 00062 //0x5a656e74, 0x6172, 0x6f26, 0xb7, 0x9c, 0xd6, 0x41, 0x6e, 0x64, 0x72, 0x82); 00063 00064 // {BF1121D1-8739-45e1-BCD8-90B828F643AB} 00065 DEFINE_GUID(CLSID_CMMLDecodeFilter, 00066 0xbf1121d1, 0x8739, 0x45e1, 0xbc, 0xd8, 0x90, 0xb8, 0x28, 0xf6, 0x43, 0xab); 00067 00068 // {3913F0AB-E7ED-41c4-979B-1D1FDD983C07} 00069 DEFINE_GUID(MEDIASUBTYPE_X_FLAC, 00070 0x3913f0ab, 0xe7ed, 0x41c4, 0x97, 0x9b, 0x1d, 0x1f, 0xdd, 0x98, 0x3c, 0x7); 00071 00072 // {2C409DB0-95BF-47ba-B0F5-587256F1EDCF} 00073 DEFINE_GUID(MEDIASUBTYPE_X_OggFLAC_1_0, 00074 0x2c409db0, 0x95bf, 0x47ba, 0xb0, 0xf5, 0x58, 0x72, 0x56, 0xf1, 0xed, 0xcf); 00075 00076 00077 // {8A0566AC-42B3-4ad9-ACA3-93B906DDF98A} 00078 DEFINE_GUID(MEDIASUBTYPE_X_Vorbis, 00079 0x8a0566ac, 0x42b3, 0x4ad9, 0xac, 0xa3, 0x93, 0xb9, 0x6, 0xdd, 0xf9, 0x8a); 00080 00081 // {25A9729D-12F6-420e-BD53-1D631DC217DF} 00082 DEFINE_GUID(MEDIASUBTYPE_X_Speex, 00083 0x25a9729d, 0x12f6, 0x420e, 0xbd, 0x53, 0x1d, 0x63, 0x1d, 0xc2, 0x17, 0xdf); 00084 00085 // {D124B2B1-8968-4ae8-B288-FE16EA34B0CE} 00086 DEFINE_GUID(MEDIASUBTYPE_X_Theora, 00087 0xd124b2b1, 0x8968, 0x4ae8, 0xb2, 0x88, 0xfe, 0x16, 0xea, 0x34, 0xb0, 0xce); 00088 00089 // {5A656E74-6172-6F26-B79C-D6416E647282} 00090 DEFINE_GUID(MEDIASUBTYPE_X_CMML, 00091 0x5a656e74, 0x6172, 0x6f26, 0xb7, 0x9c, 0xd6, 0x41, 0x6e, 0x64, 0x72, 0x82); 00092 const REGPINTYPES AnxMuxInputTypes[] = { 00093 { 00094 &MEDIATYPE_Audio, 00095 &MEDIASUBTYPE_X_Speex 00096 }, 00097 { 00098 &MEDIATYPE_Audio, 00099 &MEDIASUBTYPE_X_Vorbis 00100 }, 00101 { 00102 &MEDIATYPE_Audio, 00103 &MEDIASUBTYPE_X_OggFLAC_1_0 00104 }, 00105 { 00106 &MEDIATYPE_Video, 00107 &MEDIASUBTYPE_X_Theora 00108 }, 00109 { 00110 &MEDIATYPE_Audio, 00111 &MEDIASUBTYPE_X_FLAC 00112 }, 00113 { 00114 &MEDIATYPE_Text, 00115 &MEDIASUBTYPE_X_CMML 00116 } 00117 }; 00118 const REGFILTERPINS AnxMuxPinReg = { 00119 00120 L"Ogg Packet Input", //Name (obsoleted) 00121 TRUE, //Renders from this pin ?? Not sure about this. 00122 FALSE, //Not an output pin 00123 FALSE, //Cannot have zero instances of this pin 00124 FALSE, //Cannot have more than one instance of this pin 00125 NULL, //Connects to filter (obsoleted) 00126 NULL, //Connects to pin (obsoleted) 00127 6, //upport two media type 00128 AnxMuxInputTypes //Pointer to media type (Audio/Vorbis or Audio/Speex) 00129 }; 00130 00131 const REGFILTER2 AnxMuxFilterReg = { 00132 1, 00133 MERIT_DO_NOT_USE, 00134 1, 00135 &AnxMuxPinReg 00136 00137 }; 00138 00139 //struct sCMMLFormatBlock { 00140 // __int64 granuleNumerator; 00141 // __int64 granuleDenominator; 00142 //};