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 00045 // {53696C76-6961-40b2-B136-436F6E726164} 00046 DEFINE_GUID(FORMAT_CMML, 00047 0x53696c76, 0x6961, 0x40b2, 0xb1, 0x36, 0x43, 0x6f, 0x6e, 0x72, 0x61, 0x64); 00048 00049 00050 // {5A656E74-6172-6F26-B79C-D6416E647282} 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 //This structure defines the type of input we accept on the input pin... Stream/Annodex 00059 00060 const REGPINTYPES CMMLDecodeOutputTypes = { 00061 &MEDIATYPE_Text, 00062 &MEDIASUBTYPE_SubtitleVMR9 00063 }; 00064 00065 const REGPINTYPES CMMLDecodeInputTypes = { 00066 &MEDIATYPE_Text, 00067 &MEDIASUBTYPE_CMML 00068 }; 00069 const REGFILTERPINS CMMLDecodePinReg[] = { 00070 { 00071 L"CMML Input", //Name (obsoleted) 00072 FALSE, //Renders from this pin ?? Not sure about this. 00073 FALSE, //Not an output pin 00074 FALSE, //Cannot have zero instances of this pin 00075 FALSE, //Cannot have more than one instance of this pin 00076 NULL, //Connects to filter (obsoleted) 00077 NULL, //Connects to pin (obsoleted) 00078 1, //upport two media type 00079 &CMMLDecodeInputTypes //Pointer to media type (Audio/Vorbis or Audio/Speex) 00080 } , 00081 00082 { 00083 L"Subtitle VMR9 Output", //Name (obsoleted) 00084 FALSE, //Renders from this pin ?? Not sure about this. 00085 TRUE, //Is 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, //Only support one media type 00091 &CMMLDecodeOutputTypes //Pointer to media type (Audio/PCM) 00092 00093 } 00094 }; 00095 00096 00097 00098 const REGFILTER2 CMMLDecodeFilterReg = { 00099 1, 00100 MERIT_PREFERRED + 2, 00101 2, 00102 CMMLDecodePinReg 00103 00104 }; 00105 00106 00107 struct sCMMLFormatBlock { 00108 __int64 granuleNumerator; 00109 __int64 granuleDenominator; 00110 };