[xiph-commits] r17305 - in trunk/oggdsf: . build/NSIS/Release src/lib/plugin/AxPlayer
cristianadam at svn.xiph.org
cristianadam at svn.xiph.org
Sat Jun 26 07:39:59 PDT 2010
Author: cristianadam
Date: 2010-06-26 07:39:59 -0700 (Sat, 26 Jun 2010)
New Revision: 17305
Modified:
trunk/oggdsf/ChangeLog.txt
trunk/oggdsf/build/NSIS/Release/opencodecs.nsi
trunk/oggdsf/src/lib/plugin/AxPlayer/FilterGraph.cpp
trunk/oggdsf/src/lib/plugin/AxPlayer/FilterGraph.h
Log:
Added WebM support to HTML5 <video> plugin.
Modified: trunk/oggdsf/ChangeLog.txt
===================================================================
--- trunk/oggdsf/ChangeLog.txt 2010-06-23 20:51:02 UTC (rev 17304)
+++ trunk/oggdsf/ChangeLog.txt 2010-06-26 14:39:59 UTC (rev 17305)
@@ -1,10 +1,12 @@
-Version 0.84.xxxxx - xx.06.2010
+Version 0.84.17xxx - xx.06.2010
* Added WebM support (libvpx 0.9.1, webmdshow 0.9.8.0)
* Installer updates:
- merged Win32 and x64 installers into one installer
- added support for WebM
- dropped support for Annodex Muxer, CMML decoder filters
+ * Added WebM support to HTML5 <video> ActiveX plugin.
+ * Fixed #1702: Consider integration of webm and vp8
Version 0.83.17220 - 16.05.2010
Modified: trunk/oggdsf/build/NSIS/Release/opencodecs.nsi
===================================================================
--- trunk/oggdsf/build/NSIS/Release/opencodecs.nsi 2010-06-23 20:51:02 UTC (rev 17304)
+++ trunk/oggdsf/build/NSIS/Release/opencodecs.nsi 2010-06-26 14:39:59 UTC (rev 17305)
@@ -319,7 +319,7 @@
${AddMediaPlayerMlsExtension} "ogv" "video"
${AddMediaPlayerMlsExtension} "spx" "audio"
${AddMediaPlayerMlsExtension} "weba" "audio"
- ${AddMediaPlayerMlsExtension} "webm" "audio"
+ ${AddMediaPlayerMlsExtension} "webm" "video"
; Remove the previously set Media Player description
${RemoveMediaPlayerDesc} "SOFTWARE\illiminable\oggcodecs"
Modified: trunk/oggdsf/src/lib/plugin/AxPlayer/FilterGraph.cpp
===================================================================
--- trunk/oggdsf/src/lib/plugin/AxPlayer/FilterGraph.cpp 2010-06-23 20:51:02 UTC (rev 17304)
+++ trunk/oggdsf/src/lib/plugin/AxPlayer/FilterGraph.cpp 2010-06-26 14:39:59 UTC (rev 17305)
@@ -42,12 +42,18 @@
const GUID CLSID_OggDemuxFilter =
{0xc9361f5a, 0x3282, 0x4944, {0x98, 0x99, 0x6d, 0x99, 0xcd, 0xc5, 0x37, 0xb}};
+ const GUID CLSID_WebmDemuxFilter =
+ {0xed3110f8, 0x5211, 0x11df, {0x94, 0xaf, 0x00, 0x26, 0xb9, 0x77, 0xee, 0xaa}};
+
const GUID CLSID_VorbisDecodeFilter =
{0x5a1d945, 0xa794, 0x44ef, {0xb4, 0x1a, 0x2f, 0x85, 0x1a, 0x11, 0x71, 0x55}};
const GUID CLSID_TheoraDecodeFilter =
{0x5187161, 0x5c36, 0x4324, {0xa7, 0x34, 0x22, 0xbf, 0x37, 0x50, 0x9f, 0x2d}};
+ const GUID CLSID_VP8DecoderFilter =
+ {0xed3110f3, 0x5211, 0x11df, {0x94, 0xaf, 0x00, 0x26, 0xb9, 0x77, 0xee, 0xaa}};
+
const DWORD ALLOCATOR_ID = 0xDAC10542;
}
@@ -56,13 +62,15 @@
m_notifyWindow(0),
m_presentImageMessage(0),
m_haveAudio(true),
-m_haveVideo(true)
+m_haveVideo(true),
+m_haveWebm(false)
{
}
void FilterGraph::BuildGraph(const CString& videoUrl)
{
m_videoUrl = videoUrl;
+ m_haveWebm = m_videoUrl.Right(6).MakeLower() == L".webm";
LOG(logINFO) << __FUNCTIONW__ << " Building graph for: \"" << m_videoUrl << "\"";
@@ -114,50 +122,62 @@
CComQIPtr<IFileSourceFilter> fileSource = m_sourceFilter;
CHECK_HR(fileSource->Load(m_videoUrl, 0));
- // Add the ogg demux filter
- m_oggDemux = DShowUtil::AddFilterFromCLSID(m_graphBuilder, CLSID_OggDemuxFilter,
- L"Ogg Demux Filter");
+ CLSID clsidDemuxFilter = CLSID_OggDemuxFilter;
+ if (m_haveWebm)
+ {
+ clsidDemuxFilter = CLSID_WebmDemuxFilter;
+ }
+ // Add the stream demux filter
+ m_streamDemux = DShowUtil::AddFilterFromCLSID(m_graphBuilder, clsidDemuxFilter,
+ L"Stream Demux Filter");
+
// Connect the source and demux filters
CComPtr<IPin> sourceOut = DShowUtil::FindPin(m_sourceFilter, PINDIR_OUTPUT);
- CComPtr<IPin> oggDemuxIn = DShowUtil::FindPin(m_oggDemux, PINDIR_INPUT);
+ CComPtr<IPin> demuxIn = DShowUtil::FindPin(m_streamDemux, PINDIR_INPUT);
- CHECK_HR(m_graphBuilder->Connect(sourceOut, oggDemuxIn));
+ CHECK_HR(m_graphBuilder->Connect(sourceOut, demuxIn));
}
void FilterGraph::AddDecoders()
{
- // Connect Vorbis audio decoder
- m_vorbisDecoder = DShowUtil::AddFilterFromCLSID(m_graphBuilder, CLSID_VorbisDecodeFilter,
- L"Vorbis Decoder");
+ // Add audio decoder
+ m_audioDecoder = DShowUtil::AddFilterFromCLSID(m_graphBuilder, CLSID_VorbisDecodeFilter,
+ L"Audio Decoder");
- // Connect Theora video decoder
- m_theoraDecoder = DShowUtil::AddFilterFromCLSID(m_graphBuilder, CLSID_TheoraDecodeFilter,
- L"Theora Decoder");
+ CLSID clsidVideoDecoder = CLSID_TheoraDecodeFilter;
+ if (m_haveWebm)
+ {
+ clsidVideoDecoder = CLSID_VP8DecoderFilter;
+ }
+
+ // Add video decoder
+ m_videoDecoder = DShowUtil::AddFilterFromCLSID(m_graphBuilder, clsidVideoDecoder,
+ L"Video Decoder");
}
void FilterGraph::ConnectDecoders()
{
- // Connect vorbis decoder
- CComPtr<IPin> vorbisDemuxOut = DShowUtil::FindPin(m_oggDemux, PINDIR_OUTPUT, 1);
- CComPtr<IPin> vorbisDecoderIn = DShowUtil::FindPin(m_vorbisDecoder, PINDIR_INPUT, 0);
+ // Connect audio decoder
+ CComPtr<IPin> audioDemuxOut = DShowUtil::FindPin(m_streamDemux, PINDIR_OUTPUT, 1);
+ CComPtr<IPin> audioDecoderIn = DShowUtil::FindPin(m_audioDecoder, PINDIR_INPUT, 0);
- if (vorbisDemuxOut)
+ if (audioDemuxOut)
{
- CHECK_HR(m_graphBuilder->Connect(vorbisDemuxOut, vorbisDecoderIn));
+ CHECK_HR(m_graphBuilder->Connect(audioDemuxOut, audioDecoderIn));
}
else
{
m_haveAudio = false;
}
- // Connect theora decoder
- CComPtr<IPin> theoraDemuxOut = DShowUtil::FindPin(m_oggDemux, PINDIR_OUTPUT, 0);
- CComPtr<IPin> theoraDecoderIn = DShowUtil::FindPin(m_theoraDecoder, PINDIR_INPUT, 0);
+ // Connect video decoder
+ CComPtr<IPin> videoDemuxOut = DShowUtil::FindPin(m_streamDemux, PINDIR_OUTPUT, 0);
+ CComPtr<IPin> videoDecoderIn = DShowUtil::FindPin(m_videoDecoder, PINDIR_INPUT, 0);
- if (theoraDemuxOut)
+ if (videoDemuxOut)
{
- CHECK_HR(m_graphBuilder->Connect(theoraDemuxOut, theoraDecoderIn));
+ CHECK_HR(m_graphBuilder->Connect(videoDemuxOut, videoDecoderIn));
}
else
{
@@ -179,21 +199,21 @@
void FilterGraph::ConnnectRenderers()
{
// Connect audio renderer
- CComPtr<IPin> vorbisDecoderOut = DShowUtil::FindPin(m_vorbisDecoder, PINDIR_OUTPUT, 0);
+ CComPtr<IPin> audioDecoderOut = DShowUtil::FindPin(m_audioDecoder, PINDIR_OUTPUT, 0);
CComPtr<IPin> audioRendererIn = DShowUtil::FindPin(m_audioRenderer, PINDIR_INPUT, 0);
if (m_haveAudio)
{
- CHECK_HR(m_graphBuilder->Connect(vorbisDecoderOut, audioRendererIn));
+ CHECK_HR(m_graphBuilder->Connect(audioDecoderOut, audioRendererIn));
}
// Connect video renderer
- CComPtr<IPin> theoraDecoderOut = DShowUtil::FindPin(m_theoraDecoder, PINDIR_OUTPUT, 0);
+ CComPtr<IPin> videoDecoderOut = DShowUtil::FindPin(m_videoDecoder, PINDIR_OUTPUT, 0);
CComPtr<IPin> videoRendererIn = DShowUtil::FindPin(m_videoRenderer, PINDIR_INPUT, 0);
if (m_haveVideo)
{
- CHECK_HR(m_graphBuilder->Connect(theoraDecoderOut, videoRendererIn));
+ CHECK_HR(m_graphBuilder->Connect(videoDecoderOut, videoRendererIn));
}
}
Modified: trunk/oggdsf/src/lib/plugin/AxPlayer/FilterGraph.h
===================================================================
--- trunk/oggdsf/src/lib/plugin/AxPlayer/FilterGraph.h 2010-06-23 20:51:02 UTC (rev 17304)
+++ trunk/oggdsf/src/lib/plugin/AxPlayer/FilterGraph.h 2010-06-26 14:39:59 UTC (rev 17305)
@@ -82,9 +82,9 @@
CComPtr<IFilterGraph2> m_graphBuilder;
CComPtr<IBaseFilter> m_sourceFilter;
- CComPtr<IBaseFilter> m_oggDemux;
- CComPtr<IBaseFilter> m_vorbisDecoder;
- CComPtr<IBaseFilter> m_theoraDecoder;
+ CComPtr<IBaseFilter> m_streamDemux;
+ CComPtr<IBaseFilter> m_audioDecoder;
+ CComPtr<IBaseFilter> m_videoDecoder;
CComPtr<IBaseFilter> m_audioRenderer;
CComPtr<IBaseFilter> m_videoRenderer;
@@ -102,6 +102,7 @@
bool m_haveAudio;
bool m_haveVideo;
+ bool m_haveWebm;
};
#endif // FILTERGRAPH_H
More information about the commits
mailing list