From 425acfdc21f6e7371bc5ced32276ab23daac93c7 Mon Sep 17 00:00:00 2001 From: Hidenori Takeshima Date: Mon, 8 Apr 2002 20:13:54 +0000 Subject: [PATCH] Added some stubs. --- dlls/quartz/Makefile.in | 2 + dlls/quartz/main.c | 2 + dlls/quartz/mpadec.c | 187 +++++++++++++++++++++++++++++++++++++++ dlls/quartz/mpvdec.c | 188 ++++++++++++++++++++++++++++++++++++++++ dlls/quartz/xform.h | 2 + 5 files changed, 381 insertions(+) create mode 100644 dlls/quartz/mpadec.c create mode 100644 dlls/quartz/mpvdec.c diff --git a/dlls/quartz/Makefile.in b/dlls/quartz/Makefile.in index 7e3be21fcf5..e4fd59b7e43 100644 --- a/dlls/quartz/Makefile.in +++ b/dlls/quartz/Makefile.in @@ -36,7 +36,9 @@ C_SRCS = \ iunk.c \ main.c \ memalloc.c \ + mpadec.c \ mpgparse.c \ + mpvdec.c \ mtype.c \ parser.c \ regsvr.c \ diff --git a/dlls/quartz/main.c b/dlls/quartz/main.c index 0949840acda..0a85ef26405 100644 --- a/dlls/quartz/main.c +++ b/dlls/quartz/main.c @@ -110,6 +110,8 @@ static const QUARTZ_CLASSENTRY QUARTZ_ClassList[] = { &CLSID_Colour, &QUARTZ_CreateColour }, { &CLSID_ACMWrapper, &QUARTZ_CreateACMWrapper }, { &CLSID_FileWriter, &QUARTZ_CreateFileWriter }, + { &CLSID_CMpegAudioCodec, &QUARTZ_CreateCMpegAudioCodec }, + { &CLSID_CMpegVideoCodec, &QUARTZ_CreateCMpegVideoCodec }, { NULL, NULL }, }; diff --git a/dlls/quartz/mpadec.c b/dlls/quartz/mpadec.c new file mode 100644 index 00000000000..a2a1604354a --- /dev/null +++ b/dlls/quartz/mpadec.c @@ -0,0 +1,187 @@ +/* + * Implements MPEG Audio Decoder(CLSID_CMpegAudioCodec) + * + * FIXME - what library can we use? SMPEG?? + * + * FIXME - stub + * + * Copyright (C) Hidenori TAKESHIMA + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "winerror.h" +#include "strmif.h" +#include "control.h" +#include "amvideo.h" +#include "vfwmsgs.h" +#include "uuids.h" + +#include "wine/debug.h" +WINE_DEFAULT_DEBUG_CHANNEL(quartz); + +#include "quartz_private.h" +#include "xform.h" +#include "mtype.h" + +static const WCHAR CMPEGAudioDecoderImpl_FilterName[] = +{'M','P','E','G',' ','A','u','d','i','o',' ','D','e','c','o','d','e','r',0}; + + +typedef struct CMPEGAudioDecoderImpl +{ + int dummy; +} CMPEGAudioDecoderImpl; + + +/*************************************************************************** + * + * CMPEGAudioDecoderImpl methods + * + */ + +static HRESULT CMPEGAudioDecoderImpl_Init( CTransformBaseImpl* pImpl ) +{ + CMPEGAudioDecoderImpl* This = pImpl->m_pUserData; + + TRACE("(%p)\n",This); + + if ( This != NULL ) + return NOERROR; + + This = (CMPEGAudioDecoderImpl*)QUARTZ_AllocMem( sizeof(CMPEGAudioDecoderImpl) ); + if ( This == NULL ) + return E_OUTOFMEMORY; + ZeroMemory( This, sizeof(CMPEGAudioDecoderImpl) ); + pImpl->m_pUserData = This; + + /* construct */ + + return S_OK; +} + +static HRESULT CMPEGAudioDecoderImpl_Cleanup( CTransformBaseImpl* pImpl ) +{ + CMPEGAudioDecoderImpl* This = pImpl->m_pUserData; + + TRACE("(%p)\n",This); + + if ( This == NULL ) + return S_OK; + + /* destruct */ + + QUARTZ_FreeMem( This ); + pImpl->m_pUserData = NULL; + + return S_OK; +} + +static HRESULT CMPEGAudioDecoderImpl_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut ) +{ + CMPEGAudioDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGAudioDecoderImpl_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes ) +{ + CMPEGAudioDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGAudioDecoderImpl_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample ) +{ + CMPEGAudioDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGAudioDecoderImpl_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample ) +{ + CMPEGAudioDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p,%p,%p,%d)\n",This,pmtIn,pmtOut,bReuseSample); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGAudioDecoderImpl_ProcessReceive( CTransformBaseImpl* pImpl, IMediaSample* pSampIn ) +{ + CMPEGAudioDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGAudioDecoderImpl_EndTransform( CTransformBaseImpl* pImpl ) +{ + CMPEGAudioDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static const TransformBaseHandlers transhandlers = +{ + CMPEGAudioDecoderImpl_Init, + CMPEGAudioDecoderImpl_Cleanup, + CMPEGAudioDecoderImpl_CheckMediaType, + CMPEGAudioDecoderImpl_GetOutputTypes, + CMPEGAudioDecoderImpl_GetAllocProp, + CMPEGAudioDecoderImpl_BeginTransform, + CMPEGAudioDecoderImpl_ProcessReceive, + NULL, + CMPEGAudioDecoderImpl_EndTransform, +}; + +HRESULT QUARTZ_CreateCMpegAudioCodec(IUnknown* punkOuter,void** ppobj) +{ + return QUARTZ_CreateTransformBase( + punkOuter,ppobj, + &CLSID_CMpegAudioCodec, + CMPEGAudioDecoderImpl_FilterName, + NULL, NULL, + &transhandlers ); +} + + diff --git a/dlls/quartz/mpvdec.c b/dlls/quartz/mpvdec.c new file mode 100644 index 00000000000..5784096daf2 --- /dev/null +++ b/dlls/quartz/mpvdec.c @@ -0,0 +1,188 @@ +/* + * Implements MPEG Video Decoder(CLSID_CMpegVideoCodec) + * + * FIXME - what library can we use? SMPEG?? + * + * FIXME - stub + * + * Copyright (C) Hidenori TAKESHIMA + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "winerror.h" +#include "strmif.h" +#include "control.h" +#include "amvideo.h" +#include "vfwmsgs.h" +#include "uuids.h" + +#include "wine/debug.h" +WINE_DEFAULT_DEBUG_CHANNEL(quartz); + +#include "quartz_private.h" +#include "xform.h" +#include "mtype.h" + +static const WCHAR CMPEGVideoDecoderImpl_FilterName[] = +{'M','P','E','G',' ','V','i','d','e','o',' ','D','e','c','o','d','e','r',0}; + + +typedef struct CMPEGVideoDecoderImpl +{ + int dummy; +} CMPEGVideoDecoderImpl; + + +/*************************************************************************** + * + * CMPEGVideoDecoderImpl methods + * + */ + +static HRESULT CMPEGVideoDecoderImpl_Init( CTransformBaseImpl* pImpl ) +{ + CMPEGVideoDecoderImpl* This = pImpl->m_pUserData; + + TRACE("(%p)\n",This); + + if ( This != NULL ) + return NOERROR; + + This = (CMPEGVideoDecoderImpl*)QUARTZ_AllocMem( sizeof(CMPEGVideoDecoderImpl) ); + if ( This == NULL ) + return E_OUTOFMEMORY; + ZeroMemory( This, sizeof(CMPEGVideoDecoderImpl) ); + pImpl->m_pUserData = This; + + /* construct */ + + return S_OK; +} + +static HRESULT CMPEGVideoDecoderImpl_Cleanup( CTransformBaseImpl* pImpl ) +{ + CMPEGVideoDecoderImpl* This = pImpl->m_pUserData; + + TRACE("(%p)\n",This); + + if ( This == NULL ) + return S_OK; + + /* destruct */ + + QUARTZ_FreeMem( This ); + pImpl->m_pUserData = NULL; + + return S_OK; +} + +static HRESULT CMPEGVideoDecoderImpl_CheckMediaType( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut ) +{ + CMPEGVideoDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGVideoDecoderImpl_GetOutputTypes( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE** ppmtAcceptTypes, ULONG* pcAcceptTypes ) +{ + CMPEGVideoDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGVideoDecoderImpl_GetAllocProp( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, ALLOCATOR_PROPERTIES* pProp, BOOL* pbTransInPlace, BOOL* pbTryToReuseSample ) +{ + CMPEGVideoDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGVideoDecoderImpl_BeginTransform( CTransformBaseImpl* pImpl, const AM_MEDIA_TYPE* pmtIn, const AM_MEDIA_TYPE* pmtOut, BOOL bReuseSample ) +{ + CMPEGVideoDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p,%p,%p,%d)\n",This,pmtIn,pmtOut,bReuseSample); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGVideoDecoderImpl_ProcessReceive( CTransformBaseImpl* pImpl, IMediaSample* pSampIn ) +{ + CMPEGVideoDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static HRESULT CMPEGVideoDecoderImpl_EndTransform( CTransformBaseImpl* pImpl ) +{ + CMPEGVideoDecoderImpl* This = pImpl->m_pUserData; + + FIXME("(%p)\n",This); + if ( This == NULL ) + return E_UNEXPECTED; + + return E_NOTIMPL; +} + +static const TransformBaseHandlers transhandlers = +{ + CMPEGVideoDecoderImpl_Init, + CMPEGVideoDecoderImpl_Cleanup, + CMPEGVideoDecoderImpl_CheckMediaType, + CMPEGVideoDecoderImpl_GetOutputTypes, + CMPEGVideoDecoderImpl_GetAllocProp, + CMPEGVideoDecoderImpl_BeginTransform, + CMPEGVideoDecoderImpl_ProcessReceive, + NULL, + CMPEGVideoDecoderImpl_EndTransform, +}; + +HRESULT QUARTZ_CreateCMpegVideoCodec(IUnknown* punkOuter,void** ppobj) +{ + return QUARTZ_CreateTransformBase( + punkOuter,ppobj, + &CLSID_CMpegVideoCodec, + CMPEGVideoDecoderImpl_FilterName, + NULL, NULL, + &transhandlers ); +} + + + diff --git a/dlls/quartz/xform.h b/dlls/quartz/xform.h index a88c00e3aa3..02b970dba4a 100644 --- a/dlls/quartz/xform.h +++ b/dlls/quartz/xform.h @@ -122,5 +122,7 @@ HRESULT QUARTZ_CreateTransformBaseOutPin( HRESULT QUARTZ_CreateAVIDec(IUnknown* punkOuter,void** ppobj); HRESULT QUARTZ_CreateColour(IUnknown* punkOuter,void** ppobj); HRESULT QUARTZ_CreateACMWrapper(IUnknown* punkOuter,void** ppobj); +HRESULT QUARTZ_CreateCMpegAudioCodec(IUnknown* punkOuter,void** ppobj); +HRESULT QUARTZ_CreateCMpegVideoCodec(IUnknown* punkOuter,void** ppobj); #endif /* WINE_DSHOW_XFORM_H */