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/CMa…
==============================================================================
--- 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/mai…
==============================================================================
--- 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/med…
==============================================================================
--- 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/qed…
==============================================================================
--- 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/qed…
==============================================================================
--- 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/qed…
==============================================================================
--- 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/sam…
==============================================================================
--- 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/tim…
==============================================================================
--- 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=…
==============================================================================
--- 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