Author: akhaldi
Date: Tue Nov 24 12:33:33 2015
New Revision: 70092
URL:
http://svn.reactos.org/svn/reactos?rev=70092&view=rev
Log:
[QUARTZ] Sync with Wine Staging 1.7.55. CORE-10536
Modified:
trunk/reactos/dll/directx/wine/quartz/CMakeLists.txt
trunk/reactos/dll/directx/wine/quartz/avisplit.c
trunk/reactos/dll/directx/wine/quartz/fil_data.idl
trunk/reactos/dll/directx/wine/quartz/filesource.c
trunk/reactos/dll/directx/wine/quartz/filtergraph.c
trunk/reactos/dll/directx/wine/quartz/filtermapper.c
trunk/reactos/dll/directx/wine/quartz/mpegsplit.c
trunk/reactos/dll/directx/wine/quartz/parser.c
trunk/reactos/dll/directx/wine/quartz/pin.c
trunk/reactos/dll/directx/wine/quartz/regsvr.c
trunk/reactos/dll/directx/wine/quartz/systemclock.c
trunk/reactos/dll/directx/wine/quartz/vmr9.c
trunk/reactos/dll/directx/wine/quartz/waveparser.c
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/directx/wine/quartz/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/CM…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/CMakeLists.txt [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -1,3 +1,6 @@
+
+remove_definitions(-D_WIN32_WINNT=0x502)
+add_definitions(-D_WIN32_WINNT=0x600)
add_definitions(
-D__WINESRC__
@@ -52,7 +55,7 @@
set_source_files_properties(version.rc PROPERTIES OBJECT_DEPENDS
"${quartz_rc_deps}")
set_module_type(quartz win32dll)
target_link_libraries(quartz strmbase strmiids uuid dxguid wine ${PSEH_LIB})
-add_importlibs(quartz dsound msacm32 msvfw32 ole32 oleaut32 shlwapi rpcrt4 user32 gdi32
advapi32 msvcrt kernel32 ntdll)
+add_importlibs(quartz dsound msacm32 msvfw32 ole32 oleaut32 rpcrt4 user32 gdi32 advapi32
advapi32_vista shlwapi msvcrt kernel32 ntdll)
add_dependencies(quartz dxsdk quartz_idlheader stdole2)
add_pch(quartz quartz_private.h SOURCE)
add_cd_file(TARGET quartz DESTINATION reactos/system32 FOR all)
Modified: trunk/reactos/dll/directx/wine/quartz/avisplit.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/av…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/avisplit.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/avisplit.c [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -186,7 +186,7 @@
++stream->index_next;
}
- rtSampleStop = rtSampleStart + MEDIATIME_FROM_BYTES(entry->dwSize &
~(1 << 31));
+ rtSampleStop = rtSampleStart + MEDIATIME_FROM_BYTES(entry->dwSize &
~(1u << 31));
TRACE("offset(%u) size(%u)\n",
(DWORD)BYTES_FROM_MEDIATIME(rtSampleStart), (DWORD)BYTES_FROM_MEDIATIME(rtSampleStop -
rtSampleStart));
}
@@ -579,7 +579,7 @@
BOOL keyframe = !(pIndex->aIndex[x].dwSize >> 31);
DWORDLONG offset = pIndex->qwBaseOffset + pIndex->aIndex[x].dwOffset;
TRACE("dwOffset: %x%08x\n", (DWORD)(offset >> 32),
(DWORD)offset);
- TRACE("dwSize: %u\n", (pIndex->aIndex[x].dwSize &
~(1<<31)));
+ TRACE("dwSize: %u\n", (pIndex->aIndex[x].dwSize & ~(1u <<
31)));
TRACE("Frame is a keyframe: %s\n", keyframe ? "yes" :
"no");
}
@@ -977,7 +977,7 @@
for (z = 0; z < stream->stdindex[y]->nEntriesInUse; ++z)
{
- UINT len = stream->stdindex[y]->aIndex[z].dwSize & ~(1
<< 31);
+ UINT len = stream->stdindex[y]->aIndex[z].dwSize & ~(1u
<< 31);
frames += len / stream->streamheader.dwSampleSize + !!(len %
stream->streamheader.dwSampleSize);
}
}
@@ -1092,24 +1092,18 @@
return E_FAIL;
}
- pos += sizeof(RIFFCHUNK) + list.cb;
- hr = IAsyncReader_SyncRead(This->pReader, pos, sizeof(list), (BYTE *)&list);
-
- while (list.fcc == ckidAVIPADDING || (list.fcc == FOURCC_LIST &&
list.fccListType != listtypeAVIMOVIE))
+ /* Skip any chunks until we find the LIST chunk */
+ do
{
pos += sizeof(RIFFCHUNK) + list.cb;
-
hr = IAsyncReader_SyncRead(This->pReader, pos, sizeof(list), (BYTE
*)&list);
}
-
- if (list.fcc != FOURCC_LIST)
- {
- ERR("Expected LIST, but got %.04s\n", (LPSTR)&list.fcc);
- return E_FAIL;
- }
- if (list.fccListType != listtypeAVIMOVIE)
- {
- ERR("Expected AVI movie list, but got %.04s\n",
(LPSTR)&list.fccListType);
+ while (hr == S_OK && (list.fcc != FOURCC_LIST ||
+ (list.fcc == FOURCC_LIST && list.fccListType != listtypeAVIMOVIE)));
+
+ if (hr != S_OK)
+ {
+ ERR("Failed to find LIST chunk from AVI file\n");
return E_FAIL;
}
@@ -1117,20 +1111,17 @@
/* FIXME: AVIX files are extended beyond the FOURCC chunk "AVI ", and thus
won't be played here,
* once I get one of the files I'll try to fix it */
- if (hr == S_OK)
- {
- This->rtStart = pAviSplit->CurrentChunkOffset = MEDIATIME_FROM_BYTES(pos +
sizeof(RIFFLIST));
- pos += list.cb + sizeof(RIFFCHUNK);
-
- pAviSplit->EndOfFile = This->rtStop = MEDIATIME_FROM_BYTES(pos);
- if (pos > total)
- {
- ERR("File smaller (%x%08x) then EndOfFile (%x%08x)\n",
(DWORD)(total >> 32), (DWORD)total, (DWORD)(pAviSplit->EndOfFile >> 32),
(DWORD)pAviSplit->EndOfFile);
- return E_FAIL;
- }
-
- hr = IAsyncReader_SyncRead(This->pReader,
BYTES_FROM_MEDIATIME(pAviSplit->CurrentChunkOffset),
sizeof(pAviSplit->CurrentChunk), (BYTE *)&pAviSplit->CurrentChunk);
- }
+ This->rtStart = pAviSplit->CurrentChunkOffset = MEDIATIME_FROM_BYTES(pos +
sizeof(RIFFLIST));
+ pos += list.cb + sizeof(RIFFCHUNK);
+
+ pAviSplit->EndOfFile = This->rtStop = MEDIATIME_FROM_BYTES(pos);
+ if (pos > total)
+ {
+ ERR("File smaller (%x%08x) then EndOfFile (%x%08x)\n", (DWORD)(total
>> 32), (DWORD)total, (DWORD)(pAviSplit->EndOfFile >> 32),
(DWORD)pAviSplit->EndOfFile);
+ return E_FAIL;
+ }
+
+ hr = IAsyncReader_SyncRead(This->pReader,
BYTES_FROM_MEDIATIME(pAviSplit->CurrentChunkOffset),
sizeof(pAviSplit->CurrentChunk), (BYTE *)&pAviSplit->CurrentChunk);
props->cbAlign = 1;
props->cbPrefix = 0;
@@ -1325,7 +1316,7 @@
{
if (stream->streamheader.dwSampleSize)
{
- ULONG len = stream->stdindex[y]->aIndex[z].dwSize & ~(1
<< 31);
+ ULONG len = stream->stdindex[y]->aIndex[z].dwSize &
~(1u << 31);
ULONG size = stream->streamheader.dwSampleSize;
pin->dwSamplesProcessed += len / size;
@@ -1443,7 +1434,7 @@
if (FAILED(hr))
return hr;
- *ppv = This;
+ *ppv = &This->Parser.filter.IBaseFilter_iface;
return hr;
}
Modified: trunk/reactos/dll/directx/wine/quartz/fil_data.idl
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/fi…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/fil_data.idl [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/fil_data.idl [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -15,6 +15,8 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+
+#pragma makedep header
import "objidl.idl";
import "strmif.idl";
Modified: trunk/reactos/dll/directx/wine/quartz/filesource.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/fi…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/filesource.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/filesource.c [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -795,20 +795,18 @@
*ppv = NULL;
- if (IsEqualIID(riid, &IID_IUnknown))
- *ppv = This;
- else if (IsEqualIID(riid, &IID_IPin))
- *ppv = This;
+ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IPin))
+ *ppv = &This->pin.pin.IPin_iface;
else if (IsEqualIID(riid, &IID_IAsyncReader))
*ppv = &This->IAsyncReader_iface;
if (*ppv)
{
- IUnknown_AddRef((IUnknown *)(*ppv));
+ IUnknown_AddRef((IUnknown *)*ppv);
return S_OK;
}
- if (!IsEqualIID(riid, &IID_IPin) && !IsEqualIID(riid,
&IID_IMediaSeeking))
+ if (!IsEqualIID(riid, &IID_IMediaSeeking))
FIXME("No interface for %s!\n", qzdebugstr_guid(riid));
return E_NOINTERFACE;
Modified: trunk/reactos/dll/directx/wine/quartz/filtergraph.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/fi…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/filtergraph.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/filtergraph.c [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -589,7 +589,7 @@
if (info_out.dir != PINDIR_OUTPUT)
{
IBaseFilter_Release(info_out.pFilter);
- return E_UNEXPECTED;
+ return VFW_E_CANNOT_CONNECT;
}
hr = IPin_QueryPinInfo(in, &info_in);
@@ -599,7 +599,7 @@
goto out;
if (info_in.dir != PINDIR_INPUT)
{
- hr = E_UNEXPECTED;
+ hr = VFW_E_CANNOT_CONNECT;
goto out;
}
@@ -891,6 +891,9 @@
TRACE("(%p/%p)->(%p, %p)\n", This, iface, ppinOut, ppinIn);
+ if(!ppinOut || !ppinIn)
+ return E_POINTER;
+
if (TRACE_ON(quartz))
{
hr = IPin_QueryPinInfo(ppinIn, &PinInfo);
Modified: trunk/reactos/dll/directx/wine/quartz/filtermapper.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/fi…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/filtermapper.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/filtermapper.c [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -1514,7 +1514,7 @@
if (lRet != ERROR_SUCCESS)
hr = HRESULT_FROM_WIN32(lRet);
- lRet = SHDeleteKeyW(hKey, wszPins);
+ lRet = RegDeleteTreeW(hKey, wszPins);
if (lRet != ERROR_SUCCESS)
hr = HRESULT_FROM_WIN32(lRet);
@@ -1573,7 +1573,7 @@
strcatW(wszPinNameKey, wszSlash);
strcatW(wszPinNameKey, Name);
- lRet = SHDeleteKeyW(hKey, wszPinNameKey);
+ lRet = RegDeleteTreeW(hKey, wszPinNameKey);
hr = HRESULT_FROM_WIN32(lRet);
CoTaskMemFree(wszPinNameKey);
}
Modified: trunk/reactos/dll/directx/wine/quartz/mpegsplit.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/mp…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/mpegsplit.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/mpegsplit.c [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -23,6 +23,9 @@
#include "quartz_private.h"
+#include <strmif.h>
+
+
#define SEQUENCE_HEADER_CODE 0xB3
#define PACK_START_CODE 0xBA
@@ -38,6 +41,7 @@
typedef struct MPEGSplitterImpl
{
ParserImpl Parser;
+ IAMStreamSelect IAMStreamSelect_iface;
LONGLONG EndOfFile;
LONGLONG position;
DWORD begin_offset;
@@ -47,9 +51,19 @@
BOOL seek;
} MPEGSplitterImpl;
+static inline MPEGSplitterImpl *impl_from_IBaseFilter( IBaseFilter *iface )
+{
+ return CONTAINING_RECORD(iface, MPEGSplitterImpl, Parser.filter.IBaseFilter_iface);
+}
+
static inline MPEGSplitterImpl *impl_from_IMediaSeeking( IMediaSeeking *iface )
{
return CONTAINING_RECORD(iface, MPEGSplitterImpl,
Parser.sourceSeeking.IMediaSeeking_iface);
+}
+
+static inline MPEGSplitterImpl *impl_from_IAMStreamSelect( IAMStreamSelect *iface )
+{
+ return CONTAINING_RECORD(iface, MPEGSplitterImpl, IAMStreamSelect_iface);
}
static int MPEGSplitter_head_check(const BYTE *header)
@@ -97,9 +111,7 @@
int bitrate_index, freq_index, lsf = 1, mpeg1, layer, padding, bitrate, length;
LONGLONG duration;
- if (!(header[0] == 0xff && ((header[1]>>5)&0x7) == 0x7 &&
- ((header[1]>>1)&0x3) != 0 && ((header[2]>>4)&0xf)
!= 0xf &&
- ((header[2]>>2)&0x3) != 0x3))
+ if (MPEGSplitter_head_check(header) != MPEG_AUDIO_HEADER)
{
FIXME("Not a valid header: %02x:%02x:%02x:%02x\n", header[0],
header[1], header[2], header[3]);
return E_INVALIDARG;
@@ -189,9 +201,9 @@
if (SUCCEEDED(hr))
{
IMediaSample_SetTime(sample, &rtSampleStart, &rtSampleStop);
- IMediaSample_SetPreroll(sample, 0);
- IMediaSample_SetDiscontinuity(sample, 0);
- IMediaSample_SetSyncPoint(sample, 1);
+ IMediaSample_SetPreroll(sample, FALSE);
+ IMediaSample_SetDiscontinuity(sample, FALSE);
+ IMediaSample_SetSyncPoint(sample, TRUE);
hr = IAsyncReader_Request(pin->pReader, sample, 0);
if (SUCCEEDED(hr))
{
@@ -461,7 +473,7 @@
HRESULT hr;
LONGLONG pos = 0; /* in bytes */
BYTE header[10];
- int streamtype = 0;
+ int streamtype;
LONGLONG total, avail;
AM_MEDIA_TYPE amt;
PIN_INFO piOutput;
@@ -499,12 +511,37 @@
hr = IAsyncReader_SyncRead(pPin->pReader, pos, 4, header);
if (SUCCEEDED(hr))
pos += 4;
- TRACE("%x:%x:%x:%x\n", header[0], header[1], header[2], header[3]);
} while (0);
- while(SUCCEEDED(hr) && !(streamtype=MPEGSplitter_head_check(header)))
- {
- TRACE("%x:%x:%x:%x\n", header[0], header[1], header[2], header[3]);
+ while(SUCCEEDED(hr))
+ {
+ TRACE("Testing header %x:%x:%x:%x\n", header[0], header[1], header[2],
header[3]);
+
+ streamtype = MPEGSplitter_head_check(header);
+ if (streamtype == MPEG_AUDIO_HEADER)
+ {
+ LONGLONG length;
+ if (parse_header(header, &length, NULL) == S_OK)
+ {
+ BYTE next_header[4];
+ /* Ensure we have a valid header by seeking for the next frame, some bad
+ * encoded ID3v2 may have an incorrect length and we end up finding
bytes
+ * like FF FE 00 28 which are nothing more than a Unicode BOM followed
by
+ * ')' character from inside a ID3v2 tag. Unfortunately that
sequence
+ * matches like a valid mpeg audio header.
+ */
+ hr = IAsyncReader_SyncRead(pPin->pReader, pos + length - 4, 4,
next_header);
+ if (FAILED(hr))
+ break;
+ if (parse_header(next_header, &length, NULL) == S_OK)
+ break;
+ TRACE("%x:%x:%x:%x is a fake audio header, looking for
next...\n",
+ header[0], header[1], header[2], header[3]);
+ }
+ }
+ else if (streamtype) /* Video or System stream */
+ break;
+
/* No valid header yet; shift by a byte and check again */
memmove(header, header+1, 3);
hr = IAsyncReader_SyncRead(pPin->pReader, pos++, 1, header + 3);
@@ -695,7 +732,7 @@
IMediaSample_SetPreroll(sample, FALSE);
IMediaSample_SetDiscontinuity(sample, TRUE);
IMediaSample_SetSyncPoint(sample, 1);
- This->seek = 0;
+ This->seek = FALSE;
hr = IAsyncReader_Request(pin->pReader, sample, 0);
if (SUCCEEDED(hr))
@@ -712,9 +749,36 @@
return hr;
}
+static HRESULT WINAPI MPEGSplitter_QueryInterface(IBaseFilter *iface, REFIID riid, void
**ppv)
+{
+ MPEGSplitterImpl *This = impl_from_IBaseFilter(iface);
+ TRACE("(%s, %p)\n", qzdebugstr_guid(riid), ppv);
+
+ *ppv = NULL;
+
+ if ( IsEqualIID(riid, &IID_IUnknown)
+ || IsEqualIID(riid, &IID_IPersist)
+ || IsEqualIID(riid, &IID_IMediaFilter)
+ || IsEqualIID(riid, &IID_IBaseFilter) )
+ *ppv = iface;
+ else if ( IsEqualIID(riid, &IID_IAMStreamSelect) )
+ *ppv = &This->IAMStreamSelect_iface;
+
+ if (*ppv)
+ {
+ IBaseFilter_AddRef(iface);
+ return S_OK;
+ }
+
+ if (!IsEqualIID(riid, &IID_IPin) && !IsEqualIID(riid,
&IID_IVideoWindow))
+ FIXME("No interface for %s!\n", qzdebugstr_guid(riid));
+
+ return E_NOINTERFACE;
+}
+
static const IBaseFilterVtbl MPEGSplitter_Vtbl =
{
- Parser_QueryInterface,
+ MPEGSplitter_QueryInterface,
Parser_AddRef,
Parser_Release,
Parser_GetClassID,
@@ -731,6 +795,64 @@
Parser_QueryVendorInfo
};
+static HRESULT WINAPI AMStreamSelect_QueryInterface(IAMStreamSelect *iface, REFIID riid,
void **ppv)
+{
+ MPEGSplitterImpl *This = impl_from_IAMStreamSelect(iface);
+
+ return IBaseFilter_QueryInterface(&This->Parser.filter.IBaseFilter_iface,
riid, ppv);
+}
+
+static ULONG WINAPI AMStreamSelect_AddRef(IAMStreamSelect *iface)
+{
+ MPEGSplitterImpl *This = impl_from_IAMStreamSelect(iface);
+
+ return IBaseFilter_AddRef(&This->Parser.filter.IBaseFilter_iface);
+}
+
+static ULONG WINAPI AMStreamSelect_Release(IAMStreamSelect *iface)
+{
+ MPEGSplitterImpl *This = impl_from_IAMStreamSelect(iface);
+
+ return IBaseFilter_Release(&This->Parser.filter.IBaseFilter_iface);
+}
+
+static HRESULT WINAPI AMStreamSelect_Count(IAMStreamSelect *iface, DWORD *streams)
+{
+ MPEGSplitterImpl *This = impl_from_IAMStreamSelect(iface);
+
+ FIXME("(%p/%p)->(%p) stub!\n", This, iface, streams);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AMStreamSelect_Info(IAMStreamSelect *iface, LONG index,
AM_MEDIA_TYPE **media_type, DWORD *flags, LCID *lcid, DWORD *group, WCHAR **name, IUnknown
**object, IUnknown **unknown)
+{
+ MPEGSplitterImpl *This = impl_from_IAMStreamSelect(iface);
+
+ FIXME("(%p/%p)->(%d,%p,%p,%p,%p,%p,%p,%p) stub!\n", This, iface, index,
media_type, flags, lcid, group, name, object, unknown);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AMStreamSelect_Enable(IAMStreamSelect *iface, LONG index, DWORD
flags)
+{
+ MPEGSplitterImpl *This = impl_from_IAMStreamSelect(iface);
+
+ FIXME("(%p/%p)->(%d,%x) stub!\n", This, iface, index, flags);
+
+ return E_NOTIMPL;
+}
+
+static const IAMStreamSelectVtbl AMStreamSelectVtbl =
+{
+ AMStreamSelect_QueryInterface,
+ AMStreamSelect_AddRef,
+ AMStreamSelect_Release,
+ AMStreamSelect_Count,
+ AMStreamSelect_Info,
+ AMStreamSelect_Enable
+};
+
HRESULT MPEGSplitter_create(IUnknown * pUnkOuter, LPVOID * ppv)
{
MPEGSplitterImpl *This;
@@ -754,10 +876,11 @@
CoTaskMemFree(This);
return hr;
}
- This->seek = 1;
+ This->IAMStreamSelect_iface.lpVtbl = &AMStreamSelectVtbl;
+ This->seek = TRUE;
/* Note: This memory is managed by the parser filter once created */
- *ppv = This;
+ *ppv = &This->Parser.filter.IBaseFilter_iface;
return hr;
}
Modified: trunk/reactos/dll/directx/wine/quartz/parser.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/pa…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/parser.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/parser.c [iso-8859-1] Tue Nov 24 12:33:33 2015
@@ -133,11 +133,11 @@
|| IsEqualIID(riid, &IID_IPersist)
|| IsEqualIID(riid, &IID_IMediaFilter)
|| IsEqualIID(riid, &IID_IBaseFilter) )
- *ppv = This;
+ *ppv = &This->filter.IBaseFilter_iface;
if (*ppv)
{
- IUnknown_AddRef((IUnknown *)(*ppv));
+ IUnknown_AddRef((IUnknown *)*ppv);
return S_OK;
}
@@ -507,21 +507,21 @@
{
ParserImpl *This = impl_from_IMediaSeeking(iface);
- return IUnknown_QueryInterface((IUnknown *)This, riid, ppv);
+ return IBaseFilter_QueryInterface(&This->filter.IBaseFilter_iface, riid,
ppv);
}
static ULONG WINAPI Parser_Seeking_AddRef(IMediaSeeking * iface)
{
ParserImpl *This = impl_from_IMediaSeeking(iface);
- return IUnknown_AddRef((IUnknown *)This);
+ return IBaseFilter_AddRef(&This->filter.IBaseFilter_iface);
}
static ULONG WINAPI Parser_Seeking_Release(IMediaSeeking * iface)
{
ParserImpl *This = impl_from_IMediaSeeking(iface);
- return IUnknown_Release((IUnknown *)This);
+ return IBaseFilter_Release(&This->filter.IBaseFilter_iface);
}
static const IMediaSeekingVtbl Parser_Seeking_Vtbl =
Modified: trunk/reactos/dll/directx/wine/quartz/pin.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/pi…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/pin.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/pin.c [iso-8859-1] Tue Nov 24 12:33:33 2015
@@ -203,7 +203,7 @@
pPinImpl->dRate = 1.0;
pPinImpl->state = Req_Die;
pPinImpl->fnCustomRequest = pCustomRequest;
- pPinImpl->stop_playback = 1;
+ pPinImpl->stop_playback = TRUE;
InitializeCriticalSection(&pPinImpl->thread_lock);
pPinImpl->thread_lock.DebugInfo->Spare[0] = (DWORD_PTR)( __FILE__ ":
PullPin.thread_lock");
@@ -406,6 +406,7 @@
{
DWORD_PTR dwUser;
+ pSample = NULL;
IAsyncReader_WaitForNext(This->pReader, 0, &pSample, &dwUser);
if (!pSample)
@@ -628,7 +629,7 @@
/* Wake up! */
assert(WaitForSingleObject(This->thread_sleepy, 0) == WAIT_TIMEOUT);
This->state = Req_Run;
- This->stop_playback = 0;
+ This->stop_playback = FALSE;
ResetEvent(This->hEventStateChanged);
SetEvent(This->thread_sleepy);
}
@@ -654,7 +655,7 @@
assert(WaitForSingleObject(This->thread_sleepy, 0) == WAIT_TIMEOUT);
This->state = Req_Pause;
- This->stop_playback = 1;
+ This->stop_playback = TRUE;
ResetEvent(This->hEventStateChanged);
SetEvent(This->thread_sleepy);
@@ -690,7 +691,7 @@
assert(This->state == Req_Pause || This->state == Req_Sleepy);
- This->stop_playback = 1;
+ This->stop_playback = TRUE;
This->state = Req_Die;
assert(WaitForSingleObject(This->thread_sleepy, 0) == WAIT_TIMEOUT);
ResetEvent(This->hEventStateChanged);
Modified: trunk/reactos/dll/directx/wine/quartz/regsvr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/re…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/regsvr.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/regsvr.c [iso-8859-1] Tue Nov 24 12:33:33 2015
@@ -240,7 +240,7 @@
WCHAR buf[39];
StringFromGUID2(list->iid, buf, 39);
- res = SHDeleteKeyW(interface_key, buf);
+ res = RegDeleteTreeW(interface_key, buf);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
}
@@ -346,18 +346,18 @@
WCHAR buf[39];
StringFromGUID2(list->clsid, buf, 39);
- res = SHDeleteKeyW(coclass_key, buf);
+ res = RegDeleteTreeW(coclass_key, buf);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
if (list->progid) {
- res = SHDeleteKeyA(HKEY_CLASSES_ROOT, list->progid);
+ res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
}
if (list->viprogid) {
- res = SHDeleteKeyA(HKEY_CLASSES_ROOT, list->viprogid);
+ res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->viprogid);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
}
@@ -500,7 +500,7 @@
if (res != ERROR_SUCCESS) break;
StringFromGUID2(list->subtype, buf, 39);
- res = SHDeleteKeyW(majortype_key, buf);
+ res = RegDeleteTreeW(majortype_key, buf);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
/* Removed majortype key if there is no more subtype key */
@@ -535,7 +535,7 @@
res = ERROR_SUCCESS;
else if (res == ERROR_SUCCESS)
for (; res == ERROR_SUCCESS && list->majortype; ++list) {
- res = SHDeleteKeyA(extensions_root_key, list->extension);
+ res = RegDeleteTreeA(extensions_root_key, list->extension);
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
}
Modified: trunk/reactos/dll/directx/wine/quartz/systemclock.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/sy…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/systemclock.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/systemclock.c [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -209,7 +209,7 @@
if (IsEqualIID (riid, &IID_IUnknown) ||
IsEqualIID (riid, &IID_IReferenceClock)) {
SystemClockImpl_AddRef(iface);
- *ppobj = This;
+ *ppobj = &This->IReferenceClock_iface;
return S_OK;
}
Modified: trunk/reactos/dll/directx/wine/quartz/vmr9.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/vm…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/vmr9.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/vmr9.c [iso-8859-1] Tue Nov 24 12:33:33 2015
@@ -24,7 +24,6 @@
#include <d3d9.h>
#include <vmr9.h>
-#include <strmif.h>
struct quartz_vmr
{
@@ -3068,6 +3067,7 @@
D3DDISPLAYMODE mode;
hr = IDirect3D9_EnumAdapterModes(This->d3d9_ptr, i++, D3DFMT_X8R8G8B8, 0,
&mode);
+ if (hr == D3DERR_INVALIDCALL) break; /* out of adapters */
} while (FAILED(hr));
if (FAILED(hr))
ERR("HR: %08x\n", hr);
@@ -3094,6 +3094,6 @@
This->SurfaceAllocatorNotify = NULL;
This->reset = FALSE;
- *ppv = This;
- return S_OK;
-}
+ *ppv = &This->IVMRImagePresenter9_iface;
+ return S_OK;
+}
Modified: trunk/reactos/dll/directx/wine/quartz/waveparser.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/quartz/wa…
==============================================================================
--- trunk/reactos/dll/directx/wine/quartz/waveparser.c [iso-8859-1] (original)
+++ trunk/reactos/dll/directx/wine/quartz/waveparser.c [iso-8859-1] Tue Nov 24 12:33:33
2015
@@ -106,9 +106,9 @@
pin->rtCurrent = pin->rtNext;
pin->rtNext = rtSampleStop;
- IMediaSample_SetPreroll(newsample, 0);
- IMediaSample_SetDiscontinuity(newsample, 0);
- IMediaSample_SetSyncPoint(newsample, 1);
+ IMediaSample_SetPreroll(newsample, FALSE);
+ IMediaSample_SetDiscontinuity(newsample, FALSE);
+ IMediaSample_SetSyncPoint(newsample, TRUE);
hr = IAsyncReader_Request(pin->pReader, newsample, 0);
}
@@ -424,7 +424,7 @@
if (FAILED(hr))
return hr;
- *ppv = This;
+ *ppv = &This->Parser.filter.IBaseFilter_iface;
return hr;
}
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Tue Nov 24 12:33:33 2015
@@ -39,7 +39,7 @@
reactos/dll/directx/wine/dxdiagn # Synced to WineStaging-1.7.55
reactos/dll/directx/wine/msdmo # Synced to WineStaging-1.7.47
reactos/dll/directx/wine/qedit # Synced to WineStaging-1.7.55
-reactos/dll/directx/wine/quartz # Synced to WineStaging-1.7.47
+reactos/dll/directx/wine/quartz # Synced to WineStaging-1.7.55
reactos/dll/directx/wine/wined3d # Synced to WineStaging-1.7.55
reactos/dll/win32/activeds # Synced to WineStaging-1.7.47