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 00035 #pragma once 00036 #include <streams.h> 00037 #include <pullpin.h> 00038 #include <initguid.h> 00039 00040 #include "CMMLDecoderIIDs.h" 00041 // {966D76B4-7D2F-4f01-B840-94E425D2214F} 00042 DEFINE_GUID(MEDIASUBTYPE_SubtitleVMR9, 00043 0x966d76b4, 0x7d2f, 0x4f01, 0xb8, 0x40, 0x94, 0xe4, 0x25, 0xd2, 0x21, 0x4f); 00044 00046 //DEFINE_GUID(FORMAT_CMML, 00047 //0x53696c76, 0x6961, 0x40b2, 0xb1, 0x36, 0x43, 0x6f, 0x6e, 0x72, 0x61, 0x64); 00048 // 00049 // 00051 //DEFINE_GUID(MEDIASUBTYPE_CMML, 00052 //0x5a656e74, 0x6172, 0x6f26, 0xb7, 0x9c, 0xd6, 0x41, 0x6e, 0x64, 0x72, 0x82); 00053 // 00054 // {BF1121D1-8739-45e1-BCD8-90B828F643AB} 00055 DEFINE_GUID(CLSID_CMMLDecodeFilter, 00056 0xbf1121d1, 0x8739, 0x45e1, 0xbc, 0xd8, 0x90, 0xb8, 0x28, 0xf6, 0x43, 0xab); 00057 00058 // {60891713-C24F-4767-B6C9-6CA05B3338FC} 00059 DEFINE_GUID(MEDIATYPE_OggPacketStream, 00060 0x60891713, 0xc24f, 0x4767, 0xb6, 0xc9, 0x6c, 0xa0, 0x5b, 0x33, 0x38, 0xfc); 00061 00062 // {95388704-162C-42a9-8149-C3577C12AAF9} 00063 DEFINE_GUID(FORMAT_OggIdentHeader, 00064 0x95388704, 0x162c, 0x42a9, 0x81, 0x49, 0xc3, 0x57, 0x7c, 0x12, 0xaa, 0xf9); 00065 00066 // {43F0F818-10B0-4c86-B9F1-F6B6E2D33462} 00067 DEFINE_GUID(IID_IOggDecoder, 00068 0x43f0f818, 0x10b0, 0x4c86, 0xb9, 0xf1, 0xf6, 0xb6, 0xe2, 0xd3, 0x34, 0x62); 00069 00070 //This structure defines the type of input we accept on the input pin... Stream/Annodex 00071 00072 const REGPINTYPES CMMLDecodeOutputTypes = { 00073 &MEDIATYPE_Text, 00074 &MEDIASUBTYPE_SubtitleVMR9 00075 }; 00076 00077 const REGPINTYPES CMMLDecodeInputTypes = { 00078 &MEDIATYPE_OggPacketStream, 00079 &MEDIASUBTYPE_None 00080 }; 00081 const REGFILTERPINS CMMLDecodePinReg[] = { 00082 { 00083 L"CMML Input", //Name (obsoleted) 00084 FALSE, //Renders from this pin ?? Not sure about this. 00085 FALSE, //Not an output pin 00086 FALSE, //Cannot have zero instances of this pin 00087 FALSE, //Cannot have more than one instance of this pin 00088 NULL, //Connects to filter (obsoleted) 00089 NULL, //Connects to pin (obsoleted) 00090 1, //upport two media type 00091 &CMMLDecodeInputTypes //Pointer to media type (Audio/Vorbis or Audio/Speex) 00092 } , 00093 00094 { 00095 L"Subtitle VMR9 Output", //Name (obsoleted) 00096 FALSE, //Renders from this pin ?? Not sure about this. 00097 TRUE, //Is an output pin 00098 FALSE, //Cannot have zero instances of this pin 00099 FALSE, //Cannot have more than one instance of this pin 00100 NULL, //Connects to filter (obsoleted) 00101 NULL, //Connects to pin (obsoleted) 00102 1, //Only support one media type 00103 &CMMLDecodeOutputTypes //Pointer to media type (Audio/PCM) 00104 00105 } 00106 }; 00107 00108 00109 00110 const REGFILTER2 CMMLDecodeFilterReg = { 00111 1, 00112 MERIT_PREFERRED + 2, 00113 2, 00114 CMMLDecodePinReg 00115 00116 }; 00117 00118 00119 struct sCMMLFormatBlock { 00120 __int64 granuleNumerator; 00121 __int64 granuleDenominator; 00122 unsigned short granuleSplitBits; 00123 };
1.3.9