[xiph-commits] r11849 - in trunk/oggdsf/src/lib/codecs: ogm/filters/dsfOGMDecoder vorbis/filters/dsfVorbisDecoder

illiminable at svn.xiph.org illiminable at svn.xiph.org
Sat Sep 23 00:25:39 PDT 2006


Author: illiminable
Date: 2006-09-23 00:25:32 -0700 (Sat, 23 Sep 2006)
New Revision: 11849

Modified:
   trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeFilter.cpp
   trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeFilter.h
   trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeInputPin.h
   trunk/oggdsf/src/lib/codecs/vorbis/filters/dsfVorbisDecoder/VorbisDecodeFilter.cpp
Log:
* Removed a stray bit of copy/pastet that was in vorbis decode filter
* Boosted the number of queue buffers in ogm
* Fixed ogm decoder blocking when there was no proper subtitle renderer installed. OGM playback is working reasonably, but still no keyframe seeking, and still plays multiple audio track langauges at the same time with no way to choose one.

Modified: trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeFilter.cpp
===================================================================
--- trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeFilter.cpp	2006-09-21 21:06:23 UTC (rev 11848)
+++ trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeFilter.cpp	2006-09-23 07:25:32 UTC (rev 11849)
@@ -357,9 +357,31 @@
 	//}
 
 
+    //TODO::: Should this be E_NOTIMPL?
 	return S_OK;
 }
 
+STDMETHODIMP OGMDecodeFilter::GetState(DWORD dw, FILTER_STATE *pState)
+{
+    CheckPointer(pState, E_POINTER);
+    *pState = m_State;
+
+    //This lets us return a special code to indicate that we shouldn't necessarily expect anything to
+    // become queued from the text filter. Problem is because text is so sparse, all the other streams
+    // will likely fill all their buffers before any text is apparent.
+    //
+    //This can cause the graph to block. It has no performance impact because text is instantaneous
+    // however if you did this for video output, the graph would try and start before any video frames
+    // had been decoded and this would likely make it start too early and skip while it proeprly
+    // fills the buffers.
+    //
+    if ((m_State == State_Paused) && (mInputPin->getOGMMediaType() == OGMDecodeInputPin::OGM_TEXT_TYPE)) {
+        return VFW_S_CANT_CUE;
+	} else {
+        return S_OK;
+	}
+}
+
 CBasePin* OGMDecodeFilter::GetPin(int inPinNo)
 {
 

Modified: trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeFilter.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeFilter.h	2006-09-21 21:06:23 UTC (rev 11848)
+++ trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeFilter.h	2006-09-23 07:25:32 UTC (rev 11849)
@@ -69,7 +69,10 @@
 
 	virtual CBasePin* GetPin(int inPinNo);
 
+    //IMediaFilter OVerride - This lets us tell the graph we may not produce data in pause state so don't block.
+	virtual STDMETHODIMP GetState(DWORD dw, FILTER_STATE *pState);
 
+
 protected:
 	void deleteBufferedPackets();
 

Modified: trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeInputPin.h
===================================================================
--- trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeInputPin.h	2006-09-21 21:06:23 UTC (rev 11848)
+++ trunk/oggdsf/src/lib/codecs/ogm/filters/dsfOGMDecoder/OGMDecodeInputPin.h	2006-09-23 07:25:32 UTC (rev 11849)
@@ -92,7 +92,7 @@
 	__int64 mGranuleRateDenominator;
 
 	static const unsigned long OGM_IDENT_HEADER_SIZE = 57;
-	static const unsigned long OGM_NUM_BUFFERS = 50;
+	static const unsigned long OGM_NUM_BUFFERS = 100;
 	static const unsigned long OGM_BUFFER_SIZE = 1024*512*3;;
 
 };

Modified: trunk/oggdsf/src/lib/codecs/vorbis/filters/dsfVorbisDecoder/VorbisDecodeFilter.cpp
===================================================================
--- trunk/oggdsf/src/lib/codecs/vorbis/filters/dsfVorbisDecoder/VorbisDecodeFilter.cpp	2006-09-21 21:06:23 UTC (rev 11848)
+++ trunk/oggdsf/src/lib/codecs/vorbis/filters/dsfVorbisDecoder/VorbisDecodeFilter.cpp	2006-09-23 07:25:32 UTC (rev 11849)
@@ -29,9 +29,6 @@
 //SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 //===========================================================================
 
-#include "stdafx.h"
-#include "vorbisdecodefilter.h"
-
 //Include Files
 #include "stdafx.h"
 #include "VorbisDecodeFilter.h"



More information about the commits mailing list