Author: akhaldi Date: Sat Jul 2 15:52:21 2016 New Revision: 71762
URL: http://svn.reactos.org/svn/reactos?rev=71762&view=rev Log: [QEDIT] Sync with Wine Staging 1.9.11. CORE-11368
Added: trunk/reactos/dll/directx/wine/qedit/timeline.c (with props) Modified: trunk/reactos/dll/directx/wine/qedit/CMakeLists.txt trunk/reactos/dll/directx/wine/qedit/main.c trunk/reactos/dll/directx/wine/qedit/mediadet.c trunk/reactos/dll/directx/wine/qedit/qedit_classes.idl trunk/reactos/dll/directx/wine/qedit/qedit_classes.rgs trunk/reactos/dll/directx/wine/qedit/qedit_private.h trunk/reactos/dll/directx/wine/qedit/samplegrabber.c trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/directx/wine/qedit/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/qedit/CMak... ============================================================================== --- trunk/reactos/dll/directx/wine/qedit/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/dll/directx/wine/qedit/CMakeLists.txt [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -7,6 +7,7 @@ main.c mediadet.c samplegrabber.c + timeline.c qedit_private.h)
add_library(qedit SHARED
Modified: trunk/reactos/dll/directx/wine/qedit/main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/qedit/main... ============================================================================== --- trunk/reactos/dll/directx/wine/qedit/main.c [iso-8859-1] (original) +++ trunk/reactos/dll/directx/wine/qedit/main.c [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -56,6 +56,7 @@
static const struct object_creation_info object_creation[] = { + { &CLSID_AMTimeline, AMTimeline_create }, { &CLSID_MediaDet, MediaDet_create }, { &CLSID_SampleGrabber, SampleGrabber_create }, };
Modified: trunk/reactos/dll/directx/wine/qedit/mediadet.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/qedit/medi... ============================================================================== --- trunk/reactos/dll/directx/wine/qedit/mediadet.c [iso-8859-1] (original) +++ trunk/reactos/dll/directx/wine/qedit/mediadet.c [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -102,7 +102,6 @@ { MD_cleanup(This); CoTaskMemFree(This); - return 0; }
return ref; @@ -630,7 +629,7 @@ HRESULT MediaDet_create(IUnknown * pUnkOuter, LPVOID * ppv) { MediaDetImpl* obj = NULL;
- TRACE("(%p,%p)\n", ppv, pUnkOuter); + TRACE("(%p,%p)\n", pUnkOuter, ppv);
obj = CoTaskMemAlloc(sizeof(MediaDetImpl)); if (NULL == obj) {
Modified: trunk/reactos/dll/directx/wine/qedit/qedit_classes.idl URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/qedit/qedi... ============================================================================== --- trunk/reactos/dll/directx/wine/qedit/qedit_classes.idl [iso-8859-1] (original) +++ trunk/reactos/dll/directx/wine/qedit/qedit_classes.idl [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -22,6 +22,12 @@
[ threading(both), + uuid(78530B75-61F9-11D2-8CAD-00A024580902) +] +coclass AMTimeline { interface IAMTimeline; interface IPersistStream; interface IAMSetErrorLog; } + +[ + threading(both), uuid(65bd0711-24d2-4ff7-9324-ed2e5d3abafa) ] coclass MediaDet { interface IMediaDet; }
Modified: trunk/reactos/dll/directx/wine/qedit/qedit_classes.rgs URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/qedit/qedi... ============================================================================== --- trunk/reactos/dll/directx/wine/qedit/qedit_classes.rgs [iso-8859-1] (original) +++ trunk/reactos/dll/directx/wine/qedit/qedit_classes.rgs [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -5,6 +5,10 @@ } NoRemove CLSID { + '{78530B75-61F9-11D2-8CAD-00A024580902}' = s 'AMTimeline' + { + InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' } + } '{65BD0711-24D2-4FF7-9324-ED2E5D3ABAFA}' = s 'MediaDet' { InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Both' }
Modified: trunk/reactos/dll/directx/wine/qedit/qedit_private.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/qedit/qedi... ============================================================================== --- trunk/reactos/dll/directx/wine/qedit/qedit_private.h [iso-8859-1] (original) +++ trunk/reactos/dll/directx/wine/qedit/qedit_private.h [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -39,6 +39,7 @@ #include <wine/debug.h> WINE_DEFAULT_DEBUG_CHANNEL(qedit);
+HRESULT AMTimeline_create(IUnknown *pUnkOuter, LPVOID *ppObj) DECLSPEC_HIDDEN; HRESULT MediaDet_create(IUnknown *pUnkOuter, LPVOID *ppObj) DECLSPEC_HIDDEN; HRESULT SampleGrabber_create(IUnknown *pUnkOuter, LPVOID *ppObj) DECLSPEC_HIDDEN;
Modified: trunk/reactos/dll/directx/wine/qedit/samplegrabber.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/qedit/samp... ============================================================================== --- trunk/reactos/dll/directx/wine/qedit/samplegrabber.c [iso-8859-1] (original) +++ trunk/reactos/dll/directx/wine/qedit/samplegrabber.c [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -80,7 +80,6 @@ if (This->mtype.pbFormat) CoTaskMemFree(This->mtype.pbFormat); CoTaskMemFree(This); - return 0; } return refCount; } @@ -323,7 +322,6 @@ { SampleGrabber_cleanup(This); CoTaskMemFree(This); - return 0; } return ref; } @@ -755,7 +753,7 @@ TRACE("(%p)->(%p) output = %p, grabber = %p\n", This, sample, This->memOutput, This->grabberIface); if (!sample) return E_POINTER; - if ((This->filter.state != State_Running) || (This->oneShot == OneShot_Past)) + if (This->oneShot == OneShot_Past) return S_FALSE; SampleGrabber_callback(This, sample); hr = This->memOutput ? IMemInputPin_Receive(This->memOutput, sample) : S_OK; @@ -1250,7 +1248,7 @@ ISeekingPassThru *passthru; HRESULT hr;
- TRACE("(%p,%p)\n", ppv, pUnkOuter); + TRACE("(%p,%p)\n", pUnkOuter, ppv);
obj = CoTaskMemAlloc(sizeof(SG_Impl)); if (NULL == obj) {
Added: trunk/reactos/dll/directx/wine/qedit/timeline.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/wine/qedit/time... ============================================================================== --- trunk/reactos/dll/directx/wine/qedit/timeline.c (added) +++ trunk/reactos/dll/directx/wine/qedit/timeline.c [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -0,0 +1,792 @@ +/* DirectShow Timeline object (QEDIT.DLL) + * + * Copyright 2016 Alex Henrie + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "qedit_private.h" + +typedef struct { + IUnknown IUnknown_inner; + IAMTimeline IAMTimeline_iface; + IUnknown *outer_unk; + LONG ref; +} TimelineImpl; + +static inline TimelineImpl *impl_from_IUnknown(IUnknown *iface) +{ + return CONTAINING_RECORD(iface, TimelineImpl, IUnknown_inner); +} + +static inline TimelineImpl *impl_from_IAMTimeline(IAMTimeline *iface) +{ + return CONTAINING_RECORD(iface, TimelineImpl, IAMTimeline_iface); +} + +typedef struct { + IAMTimelineObj IAMTimelineObj_iface; + LONG ref; + TIMELINE_MAJOR_TYPE timeline_type; +} TimelineObjImpl; + +static inline TimelineObjImpl *impl_from_IAMTimelineObj(IAMTimelineObj *iface) +{ + return CONTAINING_RECORD(iface, TimelineObjImpl, IAMTimelineObj_iface); +} + +static const IAMTimelineObjVtbl IAMTimelineObj_VTable; + +/* Timeline inner IUnknown */ + +static HRESULT WINAPI Timeline_QueryInterface(IUnknown *iface, REFIID riid, void **ppv) +{ + TimelineImpl *This = impl_from_IUnknown(iface); + + TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); + + if (!ppv) + return E_POINTER; + + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown)) + *ppv = &This->IUnknown_inner; + else if (IsEqualIID(riid, &IID_IAMTimeline)) + *ppv = &This->IAMTimeline_iface; + else + WARN("(%p, %s,%p): not found\n", This, debugstr_guid(riid), ppv); + + if (!*ppv) + return E_NOINTERFACE; + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +static ULONG WINAPI Timeline_AddRef(IUnknown *iface) +{ + TimelineImpl *This = impl_from_IUnknown(iface); + ULONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) new ref = %u\n", This, ref); + + return ref; +} + +static ULONG WINAPI Timeline_Release(IUnknown *iface) +{ + TimelineImpl *This = impl_from_IUnknown(iface); + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) new ref = %u\n", This, ref); + + if (ref == 0) + CoTaskMemFree(This); + + return ref; +} + +static const IUnknownVtbl timeline_vtbl = +{ + Timeline_QueryInterface, + Timeline_AddRef, + Timeline_Release, +}; + +/* IAMTimeline implementation */ + +static HRESULT WINAPI Timeline_IAMTimeline_QueryInterface(IAMTimeline *iface, REFIID riid, void **ppv) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + return IUnknown_QueryInterface(This->outer_unk, riid, ppv); +} + +static ULONG WINAPI Timeline_IAMTimeline_AddRef(IAMTimeline *iface) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + return IUnknown_AddRef(This->outer_unk); +} + +static ULONG WINAPI Timeline_IAMTimeline_Release(IAMTimeline *iface) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + return IUnknown_Release(This->outer_unk); +} + +static HRESULT WINAPI Timeline_IAMTimeline_CreateEmptyNode(IAMTimeline *iface, IAMTimelineObj **obj, + TIMELINE_MAJOR_TYPE type) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + TimelineObjImpl* obj_impl; + + TRACE("(%p)->(%p,%d)\n", This, obj, type); + + if (!obj) + return E_POINTER; + + switch (type) + { + case TIMELINE_MAJOR_TYPE_COMPOSITE: + case TIMELINE_MAJOR_TYPE_TRACK: + case TIMELINE_MAJOR_TYPE_SOURCE: + case TIMELINE_MAJOR_TYPE_TRANSITION: + case TIMELINE_MAJOR_TYPE_EFFECT: + case TIMELINE_MAJOR_TYPE_GROUP: + break; + default: + return E_INVALIDARG; + } + + obj_impl = CoTaskMemAlloc(sizeof(TimelineObjImpl)); + if (!obj_impl) { + *obj = NULL; + return E_OUTOFMEMORY; + } + + obj_impl->ref = 1; + obj_impl->IAMTimelineObj_iface.lpVtbl = &IAMTimelineObj_VTable; + obj_impl->timeline_type = type; + + *obj = &obj_impl->IAMTimelineObj_iface; + return S_OK; +} + +static HRESULT WINAPI Timeline_IAMTimeline_AddGroup(IAMTimeline *iface, IAMTimelineObj *group) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, group); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_RemGroupFromList(IAMTimeline *iface, IAMTimelineObj *group) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, group); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetGroup(IAMTimeline *iface, IAMTimelineObj **group, LONG index) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p,%d): not implemented!\n", This, group, index); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetGroupCount(IAMTimeline *iface, LONG *count) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, count); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_ClearAllGroups(IAMTimeline *iface) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p): not implemented!\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetInsertMode(IAMTimeline *iface, LONG *mode) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, mode); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_SetInsertMode(IAMTimeline *iface, LONG mode) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%d): not implemented!\n", This, mode); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_EnableTransitions(IAMTimeline *iface, BOOL enabled) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%d): not implemented!\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_TransitionsEnabled(IAMTimeline *iface, BOOL *enabled) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_EnableEffects(IAMTimeline *iface, BOOL enabled) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%d): not implemented!\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_EffectsEnabled(IAMTimeline *iface, BOOL *enabled) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, enabled); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_SetInterestRange(IAMTimeline *iface, REFERENCE_TIME start, + REFERENCE_TIME stop) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%s,%s): not implemented!\n", This, wine_dbgstr_longlong(start), + wine_dbgstr_longlong(stop)); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetDuration(IAMTimeline *iface, REFERENCE_TIME *duration) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, duration); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetDuration2(IAMTimeline *iface, double *duration) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, duration); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultFPS(IAMTimeline *iface, double fps) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%f): not implemented!\n", This, fps); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultFPS(IAMTimeline *iface, double *fps) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, fps); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_IsDirty(IAMTimeline *iface, BOOL *dirty) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, dirty); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetDirtyRange(IAMTimeline *iface, REFERENCE_TIME *start, + REFERENCE_TIME *stop) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetCountOfType(IAMTimeline *iface, LONG group, LONG *value, + LONG *value_with_comps, TIMELINE_MAJOR_TYPE type) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%d,%p,%p,%04x): not implemented!\n", This, group, value, value_with_comps, type); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_ValidateSourceNames(IAMTimeline *iface, LONG flags, IMediaLocator *override, + LONG_PTR notify_event) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%d,%p,%lx): not implemented!\n", This, flags, override, notify_event); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultTransition(IAMTimeline *iface, GUID *guid) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(guid)); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultTransition(IAMTimeline *iface, GUID *guid) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(guid)); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultEffect(IAMTimeline *iface, GUID *guid) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(guid)); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultEffect(IAMTimeline *iface, GUID *guid) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(guid)); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultTransitionB(IAMTimeline *iface, BSTR guidb) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, guidb); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultTransitionB(IAMTimeline *iface, BSTR *guidb) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, guidb); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_SetDefaultEffectB(IAMTimeline *iface, BSTR guidb) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, guidb); + return E_NOTIMPL; +} + +static HRESULT WINAPI Timeline_IAMTimeline_GetDefaultEffectB(IAMTimeline *iface, BSTR *guidb) +{ + TimelineImpl *This = impl_from_IAMTimeline(iface); + FIXME("(%p)->(%p): not implemented!\n", This, guidb); + return E_NOTIMPL; +} + +static const IAMTimelineVtbl IAMTimeline_VTable = +{ + Timeline_IAMTimeline_QueryInterface, + Timeline_IAMTimeline_AddRef, + Timeline_IAMTimeline_Release, + Timeline_IAMTimeline_CreateEmptyNode, + Timeline_IAMTimeline_AddGroup, + Timeline_IAMTimeline_RemGroupFromList, + Timeline_IAMTimeline_GetGroup, + Timeline_IAMTimeline_GetGroupCount, + Timeline_IAMTimeline_ClearAllGroups, + Timeline_IAMTimeline_GetInsertMode, + Timeline_IAMTimeline_SetInsertMode, + Timeline_IAMTimeline_EnableTransitions, + Timeline_IAMTimeline_TransitionsEnabled, + Timeline_IAMTimeline_EnableEffects, + Timeline_IAMTimeline_EffectsEnabled, + Timeline_IAMTimeline_SetInterestRange, + Timeline_IAMTimeline_GetDuration, + Timeline_IAMTimeline_GetDuration2, + Timeline_IAMTimeline_SetDefaultFPS, + Timeline_IAMTimeline_GetDefaultFPS, + Timeline_IAMTimeline_IsDirty, + Timeline_IAMTimeline_GetDirtyRange, + Timeline_IAMTimeline_GetCountOfType, + Timeline_IAMTimeline_ValidateSourceNames, + Timeline_IAMTimeline_SetDefaultTransition, + Timeline_IAMTimeline_GetDefaultTransition, + Timeline_IAMTimeline_SetDefaultEffect, + Timeline_IAMTimeline_GetDefaultEffect, + Timeline_IAMTimeline_SetDefaultTransitionB, + Timeline_IAMTimeline_GetDefaultTransitionB, + Timeline_IAMTimeline_SetDefaultEffectB, + Timeline_IAMTimeline_GetDefaultEffectB, +}; + +HRESULT AMTimeline_create(IUnknown *pUnkOuter, LPVOID *ppv) +{ + TimelineImpl* obj = NULL; + + TRACE("(%p,%p)\n", pUnkOuter, ppv); + + obj = CoTaskMemAlloc(sizeof(TimelineImpl)); + if (NULL == obj) { + *ppv = NULL; + return E_OUTOFMEMORY; + } + ZeroMemory(obj, sizeof(TimelineImpl)); + + obj->ref = 1; + obj->IUnknown_inner.lpVtbl = &timeline_vtbl; + obj->IAMTimeline_iface.lpVtbl = &IAMTimeline_VTable; + + if (pUnkOuter) + obj->outer_unk = pUnkOuter; + else + obj->outer_unk = &obj->IUnknown_inner; + + *ppv = &obj->IUnknown_inner; + return S_OK; +} + +/* IAMTimelineObj implementation */ + +static HRESULT WINAPI TimelineObj_QueryInterface(IAMTimelineObj *iface, REFIID riid, void **ppv) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + + TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); + + if (!ppv) + return E_POINTER; + + *ppv = NULL; + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IAMTimelineObj)) + *ppv = &This->IAMTimelineObj_iface; + else + WARN("(%p, %s,%p): not found\n", This, debugstr_guid(riid), ppv); + + if (!*ppv) + return E_NOINTERFACE; + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +static ULONG WINAPI TimelineObj_AddRef(IAMTimelineObj *iface) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + ULONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) new ref = %u\n", This, ref); + + return ref; +} + +static ULONG WINAPI TimelineObj_Release(IAMTimelineObj *iface) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) new ref = %u\n", This, ref); + + if (!ref) + CoTaskMemFree(This); + + return ref; +} + +static HRESULT WINAPI TimelineObj_GetStartStop(IAMTimelineObj *iface, REFERENCE_TIME *start, REFERENCE_TIME *stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetStartStop2(IAMTimelineObj *iface, REFTIME *start, REFTIME *stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_FixTimes(IAMTimelineObj *iface, REFERENCE_TIME *start, REFERENCE_TIME *stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_FixTimes2(IAMTimelineObj *iface, REFTIME *start, REFTIME *stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetStartStop(IAMTimelineObj *iface, REFERENCE_TIME start, REFERENCE_TIME stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%s,%s): not implemented!\n", This, wine_dbgstr_longlong(start), wine_dbgstr_longlong(stop)); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetStartStop2(IAMTimelineObj *iface, REFTIME start, REFTIME stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%f,%f): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetPropertySetter(IAMTimelineObj *iface, IPropertySetter **setter) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, setter); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetPropertySetter(IAMTimelineObj *iface, IPropertySetter *setter) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, setter); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetSubObject(IAMTimelineObj *iface, IUnknown **obj) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, obj); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetSubObject(IAMTimelineObj *iface, IUnknown *obj) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, obj); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetSubObjectGUID(IAMTimelineObj *iface, GUID guid) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_guid(&guid)); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetSubObjectGUIDB(IAMTimelineObj *iface, BSTR guidb) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_w(guidb)); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetSubObjectGUID(IAMTimelineObj *iface, GUID *guid) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, guid); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetSubObjectGUIDB(IAMTimelineObj *iface, BSTR *guidb) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, guidb); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetSubObjectLoaded(IAMTimelineObj *iface, BOOL *loaded) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, loaded); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetTimelineType(IAMTimelineObj *iface, TIMELINE_MAJOR_TYPE *type) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + TRACE("(%p)->(%p)\n", This, type); + if (!type) return E_POINTER; + *type = This->timeline_type; + return S_OK; +} + +static HRESULT WINAPI TimelineObj_SetTimelineType(IAMTimelineObj *iface, TIMELINE_MAJOR_TYPE type) +{ + /* MSDN says that this function is "not supported" */ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + TRACE("(%p)->(%d)\n", This, type); + if (type != This->timeline_type) return E_INVALIDARG; + return S_OK; +} + +static HRESULT WINAPI TimelineObj_GetUserID(IAMTimelineObj *iface, LONG *id) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, id); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetUserID(IAMTimelineObj *iface, LONG id) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%d): not implemented!\n", This, id); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetGenID(IAMTimelineObj *iface, LONG *id) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, id); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetUserName(IAMTimelineObj *iface, BSTR *name) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, name); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetUserName(IAMTimelineObj *iface, BSTR name) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%s): not implemented!\n", This, wine_dbgstr_w(name)); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetUserData(IAMTimelineObj *iface, BYTE *data, LONG *size) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p,%p): not implemented!\n", This, data, size); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetUserData(IAMTimelineObj *iface, BYTE *data, LONG size) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p,%d): not implemented!\n", This, data, size); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetMuted(IAMTimelineObj *iface, BOOL *muted) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, muted); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetMuted(IAMTimelineObj *iface, BOOL muted) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%d): not implemented!\n", This, muted); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetLocked(IAMTimelineObj *iface, BOOL *locked) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, locked); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetLocked(IAMTimelineObj *iface, BOOL locked) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%d): not implemented!\n", This, locked); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetDirtyRange(IAMTimelineObj *iface, REFERENCE_TIME *start, REFERENCE_TIME *stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetDirtyRange2(IAMTimelineObj *iface, REFTIME *start, REFTIME *stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p,%p): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetDirtyRange(IAMTimelineObj *iface, REFERENCE_TIME start, REFERENCE_TIME stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%s,%s): not implemented!\n", This, wine_dbgstr_longlong(start), wine_dbgstr_longlong(stop)); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_SetDirtyRange2(IAMTimelineObj *iface, REFTIME start, REFTIME stop) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%f,%f): not implemented!\n", This, start, stop); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_ClearDirty(IAMTimelineObj *iface) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p): not implemented!\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_Remove(IAMTimelineObj *iface) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p): not implemented!\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_RemoveAll(IAMTimelineObj *iface) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p): not implemented!\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetTimelineNoRef(IAMTimelineObj *iface, IAMTimeline **timeline) +{ + /* MSDN says that this function is "not supported" */ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + TRACE("(%p)->(%p)\n", This, timeline); + if (!timeline) return E_POINTER; + *timeline = NULL; + return E_NOINTERFACE; +} + +static HRESULT WINAPI TimelineObj_GetGroupIBelongTo(IAMTimelineObj *iface, IAMTimelineGroup **group) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, group); + return E_NOTIMPL; +} + +static HRESULT WINAPI TimelineObj_GetEmbedDepth(IAMTimelineObj *iface, LONG *depth) +{ + TimelineObjImpl *This = impl_from_IAMTimelineObj(iface); + FIXME("(%p)->(%p): not implemented!\n", This, depth); + return E_NOTIMPL; +} + +static const IAMTimelineObjVtbl IAMTimelineObj_VTable = +{ + TimelineObj_QueryInterface, + TimelineObj_AddRef, + TimelineObj_Release, + TimelineObj_GetStartStop, + TimelineObj_GetStartStop2, + TimelineObj_FixTimes, + TimelineObj_FixTimes2, + TimelineObj_SetStartStop, + TimelineObj_SetStartStop2, + TimelineObj_GetPropertySetter, + TimelineObj_SetPropertySetter, + TimelineObj_GetSubObject, + TimelineObj_SetSubObject, + TimelineObj_SetSubObjectGUID, + TimelineObj_SetSubObjectGUIDB, + TimelineObj_GetSubObjectGUID, + TimelineObj_GetSubObjectGUIDB, + TimelineObj_GetSubObjectLoaded, + TimelineObj_GetTimelineType, + TimelineObj_SetTimelineType, + TimelineObj_GetUserID, + TimelineObj_SetUserID, + TimelineObj_GetGenID, + TimelineObj_GetUserName, + TimelineObj_SetUserName, + TimelineObj_GetUserData, + TimelineObj_SetUserData, + TimelineObj_GetMuted, + TimelineObj_SetMuted, + TimelineObj_GetLocked, + TimelineObj_SetLocked, + TimelineObj_GetDirtyRange, + TimelineObj_GetDirtyRange2, + TimelineObj_SetDirtyRange, + TimelineObj_SetDirtyRange2, + TimelineObj_ClearDirty, + TimelineObj_Remove, + TimelineObj_RemoveAll, + TimelineObj_GetTimelineNoRef, + TimelineObj_GetGroupIBelongTo, + TimelineObj_GetEmbedDepth, +};
Propchange: trunk/reactos/dll/directx/wine/qedit/timeline.c ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/media/doc/README.WINE URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=7... ============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Jul 2 15:52:21 2016 @@ -38,7 +38,7 @@ reactos/dll/directx/wine/dsound # Synced to Wine-1.3.29 reactos/dll/directx/wine/dxdiagn # Synced to WineStaging-1.9.4 reactos/dll/directx/wine/msdmo # Synced to WineStaging-1.9.4 -reactos/dll/directx/wine/qedit # Synced to WineStaging-1.9.4 +reactos/dll/directx/wine/qedit # Synced to WineStaging-1.9.11 reactos/dll/directx/wine/quartz # Synced to WineStaging-1.9.4 reactos/dll/directx/wine/wined3d # Synced to WineStaging-1.9.4