[QUARTZ]
[reactos.git] / reactos / dll / directx / quartz / filesource.c
index b076117..cb9282c 100644 (file)
@@ -168,12 +168,10 @@ static HRESULT process_pattern_string(LPCWSTR wszPatternString, IAsyncReader * p
     if (!(wszPatternString = strchrW(wszPatternString, ',')))
         hr = E_INVALIDARG;
 
-    wszPatternString++; /* skip ',' */
-
     if (hr == S_OK)
     {
-        for ( ; !isxdigitW(*wszPatternString) && (*wszPatternString != ','); wszPatternString++)
-            ;
+        wszPatternString++; /* skip ',' */
+        while (!isxdigitW(*wszPatternString) && (*wszPatternString != ',')) wszPatternString++;
 
         for (strpos = 0; isxdigitW(*wszPatternString) && (strpos/2 < ulBytes); wszPatternString++, strpos++)
         {
@@ -363,7 +361,7 @@ HRESULT AsyncReader_create(IUnknown * pUnkOuter, LPVOID * ppv)
     pAsyncRead->pszFileName = NULL;
     pAsyncRead->pmt = NULL;
 
-    *ppv = (LPVOID)pAsyncRead;
+    *ppv = pAsyncRead;
 
     TRACE("-- created at %p\n", pAsyncRead);
 
@@ -381,15 +379,15 @@ static HRESULT WINAPI AsyncReader_QueryInterface(IBaseFilter * iface, REFIID rii
     *ppv = NULL;
 
     if (IsEqualIID(riid, &IID_IUnknown))
-        *ppv = (LPVOID)This;
+        *ppv = This;
     else if (IsEqualIID(riid, &IID_IPersist))
-        *ppv = (LPVOID)This;
+        *ppv = This;
     else if (IsEqualIID(riid, &IID_IMediaFilter))
-        *ppv = (LPVOID)This;
+        *ppv = This;
     else if (IsEqualIID(riid, &IID_IBaseFilter))
-        *ppv = (LPVOID)This;
+        *ppv = This;
     else if (IsEqualIID(riid, &IID_IFileSourceFilter))
-        *ppv = (LPVOID)(&This->lpVtblFSF);
+        *ppv = &This->lpVtblFSF;
 
     if (*ppv)
     {
@@ -397,7 +395,8 @@ static HRESULT WINAPI AsyncReader_QueryInterface(IBaseFilter * iface, REFIID rii
         return S_OK;
     }
 
-    if (!IsEqualIID(riid, &IID_IPin) && !IsEqualIID(riid, &IID_IMediaSeeking) && !IsEqualIID(riid, &IID_IVideoWindow))
+    if (!IsEqualIID(riid, &IID_IPin) && !IsEqualIID(riid, &IID_IMediaSeeking) &&
+        !IsEqualIID(riid, &IID_IVideoWindow) && !IsEqualIID(riid, &IID_IBasicAudio))
         FIXME("No interface for %s!\n", qzdebugstr_guid(riid));
 
     return E_NOINTERFACE;
@@ -533,7 +532,7 @@ static HRESULT AsyncReader_GetPin(IBaseFilter *iface, ULONG pos, IPin **pin, DWO
     if (pos >= 1 || !This->pOutputPin)
         return S_FALSE;
 
-    *pin = (IPin *)This->pOutputPin;
+    *pin = This->pOutputPin;
     IPin_AddRef(*pin);
     return S_OK;
 }
@@ -783,8 +782,8 @@ static inline FileAsyncReader *impl_from_IAsyncReader( IAsyncReader *iface )
 
 static HRESULT AcceptProcAFR(LPVOID iface, const AM_MEDIA_TYPE *pmt)
 {
-    AsyncReader *This = (AsyncReader *)iface;
-    
+    AsyncReader *This = iface;
+
     FIXME("(%p, %p)\n", iface, pmt);
 
     if (IsEqualGUID(&pmt->majortype, &This->pmt->majortype) &&
@@ -805,11 +804,11 @@ static HRESULT WINAPI FileAsyncReaderPin_QueryInterface(IPin * iface, REFIID rii
     *ppv = NULL;
 
     if (IsEqualIID(riid, &IID_IUnknown))
-        *ppv = (LPVOID)This;
+        *ppv = This;
     else if (IsEqualIID(riid, &IID_IPin))
-        *ppv = (LPVOID)This;
+        *ppv = This;
     else if (IsEqualIID(riid, &IID_IAsyncReader))
-        *ppv = (LPVOID)&This->lpVtblAR;
+        *ppv = &This->lpVtblAR;
 
     if (*ppv)
     {
@@ -1182,8 +1181,12 @@ static HRESULT WINAPI FileAsyncReader_WaitForNext(IAsyncReader * iface, DWORD dw
         if (buffer >= This->samples)
         {
             if (buffer != This->samples)
+            {
                 FIXME("Returned: %u (%08x)\n", buffer, GetLastError());
-            hr = VFW_E_TIMEOUT;
+                hr = VFW_E_TIMEOUT;
+            }
+            else
+                hr = VFW_E_WRONG_STATE;
             buffer = ~0;
         }
         else