00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
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
00056 DEFINE_GUID(IID_IOggMuxProgress,
00057 0x90d6513c, 0xa665, 0x4b16, 0xac, 0xa7, 0xb3, 0xd1, 0xd4, 0xef, 0xe5, 0x8d);
00058
00059
00060
00061
00062 DEFINE_GUID(CLSID_PropsOggMux,
00063 0x30393ca2, 0xc404, 0x4744, 0xa2, 0x1e, 0x90, 0x97, 0x57, 0x00, 0xea, 0x8f);
00064
00065
00066 DEFINE_GUID(IID_IOggMuxSettings,
00067 0x3a2cf997, 0x0aeb, 0x4d3f, 0x98, 0x46, 0xb5, 0xdb, 0x2c, 0xa4, 0xc8, 0x0b);
00068
00069
00070
00071 DEFINE_GUID(CLSID_OggDemuxSourceFilter,
00072 0x31ca0186, 0x1ff0, 0x4181, 0xaa, 0x38, 0x3c, 0xa4, 0x4, 0xb, 0xd2, 0x60);
00073
00074
00075 DEFINE_GUID(CLSID_OggMuxFilter,
00076 0x1f3effe4, 0xe70, 0x47c7, 0x9c, 0x48, 0x5, 0xeb, 0x99, 0xe2, 0x0, 0x11);
00077
00078
00079 DEFINE_GUID(MEDIASUBTYPE_FLAC,
00080 0x3913f0ab, 0xe7ed, 0x41c4, 0x97, 0x9b, 0x1d, 0x1f, 0xdd, 0x98, 0x3c, 0x7);
00081
00082
00083 DEFINE_GUID(MEDIASUBTYPE_OggFLAC_1_0,
00084 0x2c409db0, 0x95bf, 0x47ba, 0xb0, 0xf5, 0x58, 0x72, 0x56, 0xf1, 0xed, 0xcf);
00085
00086
00087
00088 DEFINE_GUID(MEDIASUBTYPE_Vorbis,
00089 0x8a0566ac, 0x42b3, 0x4ad9, 0xac, 0xa3, 0x93, 0xb9, 0x6, 0xdd, 0xf9, 0x8a);
00090
00091
00092 DEFINE_GUID(MEDIASUBTYPE_Speex,
00093 0x25a9729d, 0x12f6, 0x420e, 0xbd, 0x53, 0x1d, 0x63, 0x1d, 0xc2, 0x17, 0xdf);
00094
00095
00096 DEFINE_GUID(FORMAT_Vorbis,
00097 0x44e04f43, 0x58b3, 0x4de1, 0x9b, 0xaa, 0x89, 0x1, 0xf8, 0x52, 0xda, 0xe4);
00098
00099
00100 DEFINE_GUID(FORMAT_Speex,
00101 0x78701a27, 0xefb5, 0x4157, 0x95, 0x53, 0x38, 0xa7, 0x85, 0x4e, 0x3e, 0x81);
00102
00103
00104 DEFINE_GUID(FORMAT_FLAC,
00105 0x1cdc48ac, 0x4c24, 0x4b8b, 0x98, 0x2b, 0x70, 0x7, 0xa2, 0x9d, 0x83, 0xc4);
00106
00107
00108
00109 DEFINE_GUID(CLSID_TheoraDecodeFilter,
00110 0x5187161, 0x5c36, 0x4324, 0xa7, 0x34, 0x22, 0xbf, 0x37, 0x50, 0x9f, 0x2d);
00111
00112
00113 DEFINE_GUID(MEDIASUBTYPE_Theora,
00114 0xd124b2b1, 0x8968, 0x4ae8, 0xb2, 0x88, 0xfe, 0x16, 0xea, 0x34, 0xb0, 0xce);
00115
00116
00117 DEFINE_GUID(FORMAT_Theora,
00118 0xa99f116c, 0xdffa, 0x412c, 0x95, 0xde, 0x72, 0x5f, 0x99, 0x87, 0x48, 0x26);
00119
00120
00121
00122
00123 DEFINE_GUID(FORMAT_CMML,
00124 0x53696c76, 0x6961, 0x40b2, 0xb1, 0x36, 0x43, 0x6f, 0x6e, 0x72, 0x61, 0x64);
00125
00126
00127
00128 DEFINE_GUID(MEDIASUBTYPE_CMML,
00129 0x5a656e74, 0x6172, 0x6f26, 0xb7, 0x9c, 0xd6, 0x41, 0x6e, 0x64, 0x72, 0x82);
00130
00131
00132
00133 DEFINE_GUID(MEDIASUBTYPE_RawOggAudio,
00134 0x37535b3c, 0xf068, 0x4f93, 0x97, 0x63, 0xe7, 0x20, 0x82, 0x77, 0xd7, 0x1f);
00135
00136
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",
00173 TRUE,
00174 FALSE,
00175 FALSE,
00176 FALSE,
00177 NULL,
00178 NULL,
00179 7,
00180 OggMuxInputTypes
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 };