dsfDiracEncodeFilter.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 #pragma once
00033 
00034 
00035 
00036 #include <streams.h>
00037 #include <pullpin.h>
00038 #include <initguid.h>
00039 
00040 #ifdef DSFDIRACENCODEFILTER_EXPORTS
00041 #define DSFDIRACENCODEFILTER_API __declspec(dllexport)
00042 #else
00043 #define DSFDIRACENCODEFILTER_API __declspec(dllimport)
00044 #endif
00045 
00046 
00047 
00048  
00049 struct sDiracFormatBlock {
00050         int chromaFormat;
00051         int width;
00052         int height;
00053         int frameRate;
00054         bool isInterlaced;
00055         bool isTopFieldFirst;
00056 
00057 };
00058 
00059 // {855236D7-01D6-432e-9563-4D0A322B2FFB}
00060 DEFINE_GUID(CLSID_DiracEncodeFilter, 
00061 0x855236d7, 0x1d6, 0x432e, 0x95, 0x63, 0x4d, 0xa, 0x32, 0x2b, 0x2f, 0xfb);
00062 
00063 // {15B9B7CA-A7C0-448c-A68D-4D45A4137E38}
00064 DEFINE_GUID(MEDIASUBTYPE_Dirac, 
00065 0x15b9b7ca, 0xa7c0, 0x448c, 0xa6, 0x8d, 0x4d, 0x45, 0xa4, 0x13, 0x7e, 0x38);
00066 
00067 // {4D8CEB62-0F52-44d0-B1EB-4AD6B24EA62C}
00068 DEFINE_GUID(FORMAT_Dirac, 
00069 0x4d8ceb62, 0xf52, 0x44d0, 0xb1, 0xeb, 0x4a, 0xd6, 0xb2, 0x4e, 0xa6, 0x2c);
00070 
00071 
00072 const REGPINTYPES DiracEncodeInputTypes = {
00073     &MEDIATYPE_Video,
00074         &MEDIASUBTYPE_YV12
00075 };
00076 
00077 const REGPINTYPES DiracEncodeOutputTypes = {
00078         &MEDIATYPE_Video,
00079         &MEDIASUBTYPE_Dirac
00080 };
00081 
00082 const REGFILTERPINS DiracEncodePinReg[] = {
00083         {
00084     L"YV12 Input",                                              //Name (obsoleted)
00085         FALSE,                                                          //Renders from this pin ?? Not sure about this.
00086         FALSE,                                                          //Not an output pin
00087         FALSE,                                                          //Cannot have zero instances of this pin
00088         FALSE,                                                          //Cannot have more than one instance of this pin
00089         NULL,                                                           //Connects to filter (obsoleted)
00090         NULL,                                                           //Connects to pin (obsoleted)
00091         1,                                                                      //upport two media type
00092         &DiracEncodeInputTypes                          //Pointer to media type (Video/VY12)
00093         } ,
00094 
00095         {
00096         L"Dirac Output",                                                //Name (obsoleted)
00097         FALSE,                                                          //Renders from this pin ?? Not sure about this.
00098         TRUE,                                                           //Is an output pin
00099         FALSE,                                                          //Cannot have zero instances of this pin
00100         FALSE,                                                          //Cannot have more than one instance of this pin
00101         NULL,                                                           //Connects to filter (obsoleted)
00102         NULL,                                                           //Connects to pin (obsoleted)
00103         1,                                                                      //Only support one media type
00104         &DiracEncodeOutputTypes                                 //Pointer to media type (Audio/PCM)
00105 
00106         }
00107 };
00108 
00109 
00110 
00111 const REGFILTER2 DiracEncodeFilterReg = {
00112                 1,
00113                 MERIT_NORMAL,
00114                 2,
00115         DiracEncodePinReg
00116                 
00117 };
00118 
00119 
00120 
00121 
00122 
00123 //
00124 //#ifdef LIBOOOGG_EXPORTS
00125 //#define LIBOOOGG_API __declspec(dllexport)
00126 //#else
00127 //#define LIBOOOGG_API __declspec(dllimport)
00128 //#endif
00129 //
00131 //DEFINE_GUID(CLSID_PropsTheoraEncoder, 
00132 //0x121ea765, 0x6d3f, 0x4519, 0x96, 0x86, 0xa0, 0xba, 0x6e, 0x52, 0x81, 0xa2);
00133 //
00135 //DEFINE_GUID(IID_ITheoraEncodeSettings, 
00136 //0x4f063b3a, 0xb397, 0x4c22, 0xaf, 0xf4, 0x2f, 0x8d, 0xb9, 0x6d, 0x29, 0x2a);
00137 //
00139 //DEFINE_GUID(CLSID_TheoraEncodeFilter, 
00140 //0x5c769985, 0xc3e1, 0x4f95, 0xbe, 0xe7, 0x11, 0x1, 0xc4, 0x65, 0xf5, 0xfc);
00141 //
00143 //DEFINE_GUID(MEDIASUBTYPE_Theora, 
00144 //0xd124b2b1, 0x8968, 0x4ae8, 0xb2, 0x88, 0xfe, 0x16, 0xea, 0x34, 0xb0, 0xce);
00145 //
00147 //DEFINE_GUID(FORMAT_Theora, 
00148 //0xa99f116c, 0xdffa, 0x412c, 0x95, 0xde, 0x72, 0x5f, 0x99, 0x87, 0x48, 0x26);
00149 //
00150 //const REGPINTYPES TheoraEncodeInputTypes = {
00151 //    &MEDIATYPE_Video,
00152 //      &MEDIASUBTYPE_YV12
00153 //};
00154 //
00155 //const REGPINTYPES TheoraEncodeOutputTypes = {
00156 //      &MEDIATYPE_Video,
00157 //      &MEDIASUBTYPE_Theora
00158 //};
00159 //
00160 //const REGFILTERPINS TheoraEncodePinReg[] = {
00161 //      {
00162 //    L"YV12 Input",                                            //Name (obsoleted)
00163 //      FALSE,                                                          //Renders from this pin ?? Not sure about this.
00164 //      FALSE,                                                          //Not an output pin
00165 //      FALSE,                                                          //Cannot have zero instances of this pin
00166 //      FALSE,                                                          //Cannot have more than one instance of this pin
00167 //      NULL,                                                           //Connects to filter (obsoleted)
00168 //      NULL,                                                           //Connects to pin (obsoleted)
00169 //      1,                                                                      //upport two media type
00170 //      &TheoraEncodeInputTypes                         //Pointer to media type (Video/VY12)
00171 //      } ,
00172 //
00173 //      {
00174 //      L"Theora Output",                                               //Name (obsoleted)
00175 //      FALSE,                                                          //Renders from this pin ?? Not sure about this.
00176 //      TRUE,                                                           //Is an output pin
00177 //      FALSE,                                                          //Cannot have zero instances of this pin
00178 //      FALSE,                                                          //Cannot have more than one instance of this pin
00179 //      NULL,                                                           //Connects to filter (obsoleted)
00180 //      NULL,                                                           //Connects to pin (obsoleted)
00181 //      1,                                                                      //Only support one media type
00182 //      &TheoraEncodeOutputTypes                                        //Pointer to media type (Audio/PCM)
00183 //
00184 //      }
00185 //};
00186 //
00187 //
00188 //
00189 //const REGFILTER2 TheoraEncodeFilterReg = {
00190 //              1,
00191 //              MERIT_NORMAL,
00192 //              2,
00193 //        TheoraEncodePinReg
00194 //              
00195 //};
00196 //         
00197 //struct sTheoraFormatBlock {
00198 //      unsigned long theoraVersion;
00199 //      unsigned long width;
00200 //      unsigned long height;
00201 //      unsigned long frameWidth;
00202 //      unsigned long frameHeight;
00203 //      unsigned long frameRateNumerator;
00204 //      unsigned long frameRateDenominator;
00205 //      unsigned long aspectNumerator;
00206 //      unsigned long aspectDenominator;
00207 //      unsigned long maxKeyframeInterval;
00208 //      unsigned long targetBitrate;
00209 //      unsigned char targetQuality;
00210 //      unsigned char xOffset;
00211 //      unsigned char yOffset;
00212 //      unsigned char colourSpace;
00213 //};
00214 //

Generated on Tue Feb 15 14:54:15 2005 for oggdsf by  doxygen 1.3.9