oggmuxdllstuff.h

Go to the documentation of this file.
00001 //===========================================================================
00002 //Copyright (C) 2003, 2004 Zentaro Kavanagh
00003 //
00004 //Redistribution and use in source and binary forms, with or without
00005 //modification, are permitted provided that the following conditions
00006 //are met:
00007 //
00008 //- Redistributions of source code must retain the above copyright
00009 //  notice, this list of conditions and the following disclaimer.
00010 //
00011 //- Redistributions in binary form must reproduce the above copyright
00012 //  notice, this list of conditions and the following disclaimer in the
00013 //  documentation and/or other materials provided with the distribution.
00014 //
00015 //- Neither the name of Zentaro Kavanagh nor the names of contributors 
00016 //  may be used to endorse or promote products derived from this software 
00017 //  without specific prior written permission.
00018 //
00019 //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00020 //``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00021 //LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
00022 //PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE ORGANISATION OR
00023 //CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00024 //EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00025 //PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00026 //PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00027 //LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00028 //NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00029 //SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00030 //===========================================================================
00031 
00032 
00033 #pragma once
00034 #include <streams.h>
00035 #include <pullpin.h>
00036 #include <initguid.h>
00037 
00038 
00039 #ifdef DSFOGGMUX_EXPORTS
00040 #pragma message("----> Exporting from Ogg Mux...")
00041 #define OGG_MUX_API __declspec(dllexport)
00042 #else
00043 #pragma message("<---- Importing from Ogg Mux...")
00044 #define OGG_MUX_API __declspec(dllimport)
00045 #endif
00046 
00047 #ifdef LIBOOOGG_EXPORTS
00048 #define LIBOOOGG_API __declspec(dllexport)
00049 #else
00050 #define LIBOOOGG_API __declspec(dllimport)
00051 #endif
00052 
00053 
00054 
00055 // {90D6513C-A665-4b16-ACA7-B3D1D4EFE58D}
00056 DEFINE_GUID(IID_IOggMuxProgress, 
00057 0x90d6513c, 0xa665, 0x4b16, 0xac, 0xa7, 0xb3, 0xd1, 0xd4, 0xef, 0xe5, 0x8d);
00058 
00059 
00060 
00061 // {30393ca2-c404-4744-a21e-90975700ea8f}
00062 DEFINE_GUID(CLSID_PropsOggMux,
00063 0x30393ca2, 0xc404, 0x4744, 0xa2, 0x1e, 0x90, 0x97, 0x57, 0x00, 0xea, 0x8f);
00064 
00065 // {3a2cf997-0aeb-4d3f-9846-b5db2ca4c80b}
00066 DEFINE_GUID(IID_IOggMuxSettings, 
00067 0x3a2cf997, 0x0aeb, 0x4d3f, 0x98, 0x46, 0xb5, 0xdb, 0x2c, 0xa4, 0xc8, 0x0b);
00068 
00069 //New section
00070 // {31CA0186-1FF0-4181-AA38-3CA4040BD260}
00071 DEFINE_GUID(CLSID_OggDemuxSourceFilter, 
00072 0x31ca0186, 0x1ff0, 0x4181, 0xaa, 0x38, 0x3c, 0xa4, 0x4, 0xb, 0xd2, 0x60);
00073 
00074 // {1F3EFFE4-0E70-47c7-9C48-05EB99E20011}
00075 DEFINE_GUID(CLSID_OggMuxFilter, 
00076 0x1f3effe4, 0xe70, 0x47c7, 0x9c, 0x48, 0x5, 0xeb, 0x99, 0xe2, 0x0, 0x11);
00077 
00078 // {3913F0AB-E7ED-41c4-979B-1D1FDD983C07}
00079 DEFINE_GUID(MEDIASUBTYPE_FLAC, 
00080 0x3913f0ab, 0xe7ed, 0x41c4, 0x97, 0x9b, 0x1d, 0x1f, 0xdd, 0x98, 0x3c, 0x7);
00081 
00082 // {2C409DB0-95BF-47ba-B0F5-587256F1EDCF}
00083 DEFINE_GUID(MEDIASUBTYPE_OggFLAC_1_0, 
00084 0x2c409db0, 0x95bf, 0x47ba, 0xb0, 0xf5, 0x58, 0x72, 0x56, 0xf1, 0xed, 0xcf);
00085 
00086 
00087 // {8A0566AC-42B3-4ad9-ACA3-93B906DDF98A}
00088 DEFINE_GUID(MEDIASUBTYPE_Vorbis, 
00089 0x8a0566ac, 0x42b3, 0x4ad9, 0xac, 0xa3, 0x93, 0xb9, 0x6, 0xdd, 0xf9, 0x8a);
00090 
00091 // {25A9729D-12F6-420e-BD53-1D631DC217DF}
00092 DEFINE_GUID(MEDIASUBTYPE_Speex, 
00093 0x25a9729d, 0x12f6, 0x420e, 0xbd, 0x53, 0x1d, 0x63, 0x1d, 0xc2, 0x17, 0xdf);
00094 
00095 // {44E04F43-58B3-4de1-9BAA-8901F852DAE4}
00096 DEFINE_GUID(FORMAT_Vorbis, 
00097 0x44e04f43, 0x58b3, 0x4de1, 0x9b, 0xaa, 0x89, 0x1, 0xf8, 0x52, 0xda, 0xe4);
00098 
00099 // {78701A27-EFB5-4157-9553-38A7854E3E81}
00100 DEFINE_GUID(FORMAT_Speex, 
00101 0x78701a27, 0xefb5, 0x4157, 0x95, 0x53, 0x38, 0xa7, 0x85, 0x4e, 0x3e, 0x81);
00102 
00103 // {1CDC48AC-4C24-4b8b-982B-7007A29D83C4}
00104 DEFINE_GUID(FORMAT_FLAC, 
00105 0x1cdc48ac, 0x4c24, 0x4b8b, 0x98, 0x2b, 0x70, 0x7, 0xa2, 0x9d, 0x83, 0xc4);
00106 
00107 
00108 // {05187161-5C36-4324-A734-22BF37509F2D}
00109 DEFINE_GUID(CLSID_TheoraDecodeFilter, 
00110 0x5187161, 0x5c36, 0x4324, 0xa7, 0x34, 0x22, 0xbf, 0x37, 0x50, 0x9f, 0x2d);
00111 
00112 // {D124B2B1-8968-4ae8-B288-FE16EA34B0CE}
00113 DEFINE_GUID(MEDIASUBTYPE_Theora, 
00114 0xd124b2b1, 0x8968, 0x4ae8, 0xb2, 0x88, 0xfe, 0x16, 0xea, 0x34, 0xb0, 0xce);
00115 
00116 // {A99F116C-DFFA-412c-95DE-725F99874826}
00117 DEFINE_GUID(FORMAT_Theora, 
00118 0xa99f116c, 0xdffa, 0x412c, 0x95, 0xde, 0x72, 0x5f, 0x99, 0x87, 0x48, 0x26);
00119 
00120 //This structure defines the type of input we accept on the input pin... Stream/Annodex
00121 
00122 // {53696C76-6961-40b2-B136-436F6E726164}
00123 DEFINE_GUID(FORMAT_CMML, 
00124 0x53696c76, 0x6961, 0x40b2, 0xb1, 0x36, 0x43, 0x6f, 0x6e, 0x72, 0x61, 0x64);
00125 
00126 
00127 // {5A656E74-6172-6F26-B79C-D6416E647282}
00128 DEFINE_GUID(MEDIASUBTYPE_CMML, 
00129 0x5a656e74, 0x6172, 0x6f26, 0xb7, 0x9c, 0xd6, 0x41, 0x6e, 0x64, 0x72, 0x82);
00130 //Structure defining the registration details of the filter
00131 
00132 // {37535B3C-F068-4f93-9763-E7208277D71F}
00133 DEFINE_GUID(MEDIASUBTYPE_RawOggAudio, 
00134 0x37535b3c, 0xf068, 0x4f93, 0x97, 0x63, 0xe7, 0x20, 0x82, 0x77, 0xd7, 0x1f);
00135 
00136 // {232D3C8F-16BF-404b-99AE-296F3DBB77EE}
00137 DEFINE_GUID(FORMAT_RawOggAudio, 
00138 0x232d3c8f, 0x16bf, 0x404b, 0x99, 0xae, 0x29, 0x6f, 0x3d, 0xbb, 0x77, 0xee);
00139 const REGPINTYPES OggMuxInputTypes[] = {
00140         {       
00141                 &MEDIATYPE_Audio,
00142                 &MEDIASUBTYPE_Speex
00143         },
00144         {
00145                 &MEDIATYPE_Audio,
00146                 &MEDIASUBTYPE_Vorbis
00147         },
00148         {
00149                 &MEDIATYPE_Audio,
00150                 &MEDIASUBTYPE_OggFLAC_1_0
00151         },
00152         {
00153                 &MEDIATYPE_Video,
00154                 &MEDIASUBTYPE_Theora
00155         },
00156         {
00157                 &MEDIATYPE_Audio,
00158                 &MEDIASUBTYPE_FLAC
00159         },
00160         {
00161                 &MEDIATYPE_Audio,
00162                 &MEDIASUBTYPE_RawOggAudio
00163         },
00164         {
00165                 &MEDIATYPE_Text,
00166                 &MEDIASUBTYPE_CMML
00167         }
00168 
00169 };
00170 const REGFILTERPINS OggMuxPinReg = {
00171         
00172     L"Ogg Packet Input",                                //Name (obsoleted)
00173         TRUE,                                                           //Renders from this pin ?? Not sure about this.
00174         FALSE,                                                          //Not an output pin
00175         FALSE,                                                          //Cannot have zero instances of this pin
00176         FALSE,                                                          //Cannot have more than one instance of this pin
00177         NULL,                                                           //Connects to filter (obsoleted)
00178         NULL,                                                           //Connects to pin (obsoleted)
00179         7,                                                                      //upport two media type
00180         OggMuxInputTypes                                        //Pointer to media type (Audio/Vorbis or Audio/Speex)
00181 };
00182 
00183 const REGFILTER2 OggMuxFilterReg = {
00184                 1,
00185                 MERIT_DO_NOT_USE,
00186                 1,
00187         &OggMuxPinReg
00188                 
00189 };
00190 
00191 
00192 
00193 struct sVorbisFormatBlock {
00194         unsigned long vorbisVersion;
00195         unsigned long samplesPerSec;
00196         unsigned long minBitsPerSec;
00197         unsigned long avgBitsPerSec;
00198         unsigned long maxBitsPerSec;
00199         unsigned char numChannels;
00200 };
00201 
00202 struct sSpeexFormatBlock {
00203         unsigned long speexVersion;
00204         unsigned long samplesPerSec;
00205         unsigned long minBitsPerSec;
00206         unsigned long avgBitsPerSec;
00207         unsigned long maxBitsPerSec;
00208         unsigned long numChannels;
00209 
00210 };
00211 
00212 struct sFLACFormatBlock {
00213         unsigned short numChannels;
00214         unsigned long numBitsPerSample;
00215         unsigned long samplesPerSec;
00216 
00217 };
00218 
00219 struct sTheoraFormatBlock {
00220         unsigned long theoraVersion;
00221         unsigned long outerFrameWidth;
00222         unsigned long outerFrameHeight;
00223         unsigned long pictureWidth;
00224         unsigned long pictureHeight;
00225         unsigned long frameRateNumerator;
00226         unsigned long frameRateDenominator;
00227         unsigned long aspectNumerator;
00228         unsigned long aspectDenominator;
00229         unsigned long maxKeyframeInterval;
00230         unsigned long targetBitrate;
00231         unsigned char targetQuality;
00232         unsigned char xOffset;
00233         unsigned char yOffset;
00234         unsigned char colourSpace;
00235 };
00236 struct sOggRawAudioFormatBlock {
00237         unsigned long samplesPerSec;
00238         unsigned long numHeaders;
00239         unsigned long numChannels;
00240         unsigned long bitsPerSample;
00241         unsigned long maxFramesPerPacket;
00242 
00243 
00244 };
00245 struct sCMMLFormatBlock {
00246         __int64 granuleNumerator;
00247         __int64 granuleDenominator;
00248         unsigned short granuleSplitBits;
00249 };

Generated on Thu Feb 16 23:48:14 2006 for oggdsf by  doxygen 1.3.9