strmbase: Initial creation of static strmbase library for Quartz and Quartz filters.
Move the Media Type Functions.
This commit is contained in:
parent
e1b96eb347
commit
961921060c
|
@ -14884,6 +14884,7 @@ wine_fn_config_dll sti enable_sti sti
|
||||||
wine_fn_config_test dlls/sti/tests sti_test
|
wine_fn_config_test dlls/sti/tests sti_test
|
||||||
wine_fn_config_dll storage.dll16 enable_win16
|
wine_fn_config_dll storage.dll16 enable_win16
|
||||||
wine_fn_config_dll stress.dll16 enable_win16
|
wine_fn_config_dll stress.dll16 enable_win16
|
||||||
|
wine_fn_config_lib strmbase
|
||||||
wine_fn_config_lib strmiids
|
wine_fn_config_lib strmiids
|
||||||
wine_fn_config_dll svrapi enable_svrapi
|
wine_fn_config_dll svrapi enable_svrapi
|
||||||
wine_fn_config_dll sxs enable_sxs
|
wine_fn_config_dll sxs enable_sxs
|
||||||
|
|
|
@ -2662,6 +2662,7 @@ WINE_CONFIG_DLL(sti,,[sti])
|
||||||
WINE_CONFIG_TEST(dlls/sti/tests)
|
WINE_CONFIG_TEST(dlls/sti/tests)
|
||||||
WINE_CONFIG_DLL(storage.dll16,enable_win16)
|
WINE_CONFIG_DLL(storage.dll16,enable_win16)
|
||||||
WINE_CONFIG_DLL(stress.dll16,enable_win16)
|
WINE_CONFIG_DLL(stress.dll16,enable_win16)
|
||||||
|
WINE_CONFIG_LIB(strmbase)
|
||||||
WINE_CONFIG_LIB(strmiids)
|
WINE_CONFIG_LIB(strmiids)
|
||||||
WINE_CONFIG_DLL(svrapi)
|
WINE_CONFIG_DLL(svrapi)
|
||||||
WINE_CONFIG_DLL(sxs)
|
WINE_CONFIG_DLL(sxs)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
MODULE = qcap.dll
|
MODULE = qcap.dll
|
||||||
IMPORTS = strmiids uuid ole32 gdi32 advapi32
|
IMPORTS = strmiids strmbase uuid ole32 gdi32 advapi32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
capturegraph.c \
|
capturegraph.c \
|
||||||
|
|
|
@ -32,37 +32,10 @@
|
||||||
#include "qcap_main.h"
|
#include "qcap_main.h"
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
#include "wine/strmbase.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(qcap);
|
WINE_DEFAULT_DEBUG_CHANNEL(qcap);
|
||||||
|
|
||||||
HRESULT CopyMediaType(AM_MEDIA_TYPE * pDest, const AM_MEDIA_TYPE *pSrc)
|
|
||||||
{
|
|
||||||
*pDest = *pSrc;
|
|
||||||
if (!pSrc->pbFormat) return S_OK;
|
|
||||||
if (!(pDest->pbFormat = CoTaskMemAlloc(pSrc->cbFormat)))
|
|
||||||
return E_OUTOFMEMORY;
|
|
||||||
memcpy(pDest->pbFormat, pSrc->pbFormat, pSrc->cbFormat);
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void FreeMediaType(AM_MEDIA_TYPE * pMediaType)
|
|
||||||
{
|
|
||||||
CoTaskMemFree(pMediaType->pbFormat);
|
|
||||||
pMediaType->pbFormat = NULL;
|
|
||||||
|
|
||||||
if (pMediaType->pUnk)
|
|
||||||
{
|
|
||||||
IUnknown_Release(pMediaType->pUnk);
|
|
||||||
pMediaType->pUnk = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeleteMediaType(AM_MEDIA_TYPE * pMediaType)
|
|
||||||
{
|
|
||||||
FreeMediaType(pMediaType);
|
|
||||||
CoTaskMemFree(pMediaType);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2,
|
BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2,
|
||||||
BOOL bWildcards)
|
BOOL bWildcards)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#ifndef _QCAP_MAIN_H_DEFINED
|
#ifndef _QCAP_MAIN_H_DEFINED
|
||||||
#define _QCAP_MAIN_H_DEFINED
|
#define _QCAP_MAIN_H_DEFINED
|
||||||
|
|
||||||
|
#include "wine/strmbase.h"
|
||||||
|
|
||||||
extern DWORD ObjectRefCount(BOOL increment);
|
extern DWORD ObjectRefCount(BOOL increment);
|
||||||
|
|
||||||
extern IUnknown * WINAPI QCAP_createAudioCaptureFilter(IUnknown *pUnkOuter, HRESULT *phr);
|
extern IUnknown * WINAPI QCAP_createAudioCaptureFilter(IUnknown *pUnkOuter, HRESULT *phr);
|
||||||
|
@ -50,8 +52,6 @@ typedef struct tagENUMEDIADETAILS
|
||||||
HRESULT IEnumPinsImpl_Construct(const ENUMPINDETAILS * pDetails, IEnumPins ** ppEnum);
|
HRESULT IEnumPinsImpl_Construct(const ENUMPINDETAILS * pDetails, IEnumPins ** ppEnum);
|
||||||
HRESULT IEnumMediaTypesImpl_Construct(const ENUMMEDIADETAILS * pDetails, IEnumMediaTypes ** ppEnum);
|
HRESULT IEnumMediaTypesImpl_Construct(const ENUMMEDIADETAILS * pDetails, IEnumMediaTypes ** ppEnum);
|
||||||
|
|
||||||
HRESULT CopyMediaType(AM_MEDIA_TYPE * pDest, const AM_MEDIA_TYPE *pSrc);
|
|
||||||
void DeleteMediaType(AM_MEDIA_TYPE * pmt);
|
|
||||||
BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2, BOOL bWildcards);
|
BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2, BOOL bWildcards);
|
||||||
void dump_AM_MEDIA_TYPE(const AM_MEDIA_TYPE * pmt);
|
void dump_AM_MEDIA_TYPE(const AM_MEDIA_TYPE * pmt);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
MODULE = quartz.dll
|
MODULE = quartz.dll
|
||||||
IMPORTLIB = quartz
|
IMPORTLIB = quartz
|
||||||
IMPORTS = strmiids uuid dsound msacm32 msvfw32 ole32 oleaut32 shlwapi rpcrt4 user32 gdi32 advapi32
|
IMPORTS = strmiids strmbase uuid dsound msacm32 msvfw32 ole32 oleaut32 shlwapi rpcrt4 user32 gdi32 advapi32
|
||||||
EXTRADEFS = -DENTRY_PREFIX=QUARTZ_ -DPROXY_DELEGATION -DREGISTER_PROXY_DLL
|
EXTRADEFS = -DENTRY_PREFIX=QUARTZ_ -DPROXY_DELEGATION -DREGISTER_PROXY_DLL
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
|
|
|
@ -24,55 +24,6 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(quartz);
|
WINE_DEFAULT_DEBUG_CHANNEL(quartz);
|
||||||
|
|
||||||
HRESULT CopyMediaType(AM_MEDIA_TYPE * pDest, const AM_MEDIA_TYPE *pSrc)
|
|
||||||
{
|
|
||||||
*pDest = *pSrc;
|
|
||||||
if (!pSrc->pbFormat) return S_OK;
|
|
||||||
if (!(pDest->pbFormat = CoTaskMemAlloc(pSrc->cbFormat)))
|
|
||||||
return E_OUTOFMEMORY;
|
|
||||||
memcpy(pDest->pbFormat, pSrc->pbFormat, pSrc->cbFormat);
|
|
||||||
if (pDest->pUnk)
|
|
||||||
IUnknown_AddRef(pDest->pUnk);
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FreeMediaType(AM_MEDIA_TYPE * pMediaType)
|
|
||||||
{
|
|
||||||
if (pMediaType->pbFormat)
|
|
||||||
{
|
|
||||||
CoTaskMemFree(pMediaType->pbFormat);
|
|
||||||
pMediaType->pbFormat = NULL;
|
|
||||||
}
|
|
||||||
if (pMediaType->pUnk)
|
|
||||||
{
|
|
||||||
IUnknown_Release(pMediaType->pUnk);
|
|
||||||
pMediaType->pUnk = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static AM_MEDIA_TYPE * CreateMediaType(AM_MEDIA_TYPE const * pSrc)
|
|
||||||
{
|
|
||||||
AM_MEDIA_TYPE * pDest;
|
|
||||||
|
|
||||||
pDest = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
|
|
||||||
if (!pDest)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (FAILED(CopyMediaType(pDest, pSrc)))
|
|
||||||
{
|
|
||||||
CoTaskMemFree(pDest);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return pDest;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeleteMediaType(AM_MEDIA_TYPE * pMediaType)
|
|
||||||
{
|
|
||||||
FreeMediaType(pMediaType);
|
|
||||||
CoTaskMemFree(pMediaType);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2, BOOL bWildcards)
|
BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2, BOOL bWildcards)
|
||||||
{
|
{
|
||||||
TRACE("pmt1: ");
|
TRACE("pmt1: ");
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "wingdi.h"
|
#include "wingdi.h"
|
||||||
#include "winuser.h"
|
#include "winuser.h"
|
||||||
#include "dshow.h"
|
#include "dshow.h"
|
||||||
|
#include "wine/strmbase.h"
|
||||||
#include "wine/list.h"
|
#include "wine/list.h"
|
||||||
|
|
||||||
#define MEDIATIME_FROM_BYTES(x) ((LONGLONG)(x) * 10000000)
|
#define MEDIATIME_FROM_BYTES(x) ((LONGLONG)(x) * 10000000)
|
||||||
|
@ -77,9 +78,6 @@ HRESULT IEnumFiltersImpl_Construct(IBaseFilter ** ppFilters, ULONG nFilters, IEn
|
||||||
|
|
||||||
extern const char * qzdebugstr_guid(const GUID * id);
|
extern const char * qzdebugstr_guid(const GUID * id);
|
||||||
|
|
||||||
HRESULT CopyMediaType(AM_MEDIA_TYPE * pDest, const AM_MEDIA_TYPE *pSrc);
|
|
||||||
void FreeMediaType(AM_MEDIA_TYPE * pmt);
|
|
||||||
void DeleteMediaType(AM_MEDIA_TYPE * pmt);
|
|
||||||
BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2, BOOL bWildcards);
|
BOOL CompareMediaTypes(const AM_MEDIA_TYPE * pmt1, const AM_MEDIA_TYPE * pmt2, BOOL bWildcards);
|
||||||
void dump_AM_MEDIA_TYPE(const AM_MEDIA_TYPE * pmt);
|
void dump_AM_MEDIA_TYPE(const AM_MEDIA_TYPE * pmt);
|
||||||
HRESULT updatehres( HRESULT original, HRESULT new );
|
HRESULT updatehres( HRESULT original, HRESULT new );
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
MODULE = strmbase
|
||||||
|
|
||||||
|
C_SRCS = \
|
||||||
|
mediatype.c
|
||||||
|
|
||||||
|
@MAKE_IMPLIB_RULES@
|
|
@ -0,0 +1,78 @@
|
||||||
|
/*
|
||||||
|
* Implementation of MedaType utility functions
|
||||||
|
*
|
||||||
|
* Copyright 2003 Robert Shearman
|
||||||
|
* Copyright 2010 Aric Stewart, CodeWeavers
|
||||||
|
*
|
||||||
|
* 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 <stdarg.h>
|
||||||
|
|
||||||
|
#define COBJMACROS
|
||||||
|
#include "dshow.h"
|
||||||
|
|
||||||
|
#include "wine/strmbase.h"
|
||||||
|
#include "wine/debug.h"
|
||||||
|
|
||||||
|
WINE_DEFAULT_DEBUG_CHANNEL(strmbase);
|
||||||
|
|
||||||
|
HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE * pDest, const AM_MEDIA_TYPE *pSrc)
|
||||||
|
{
|
||||||
|
*pDest = *pSrc;
|
||||||
|
if (!pSrc->pbFormat) return S_OK;
|
||||||
|
if (!(pDest->pbFormat = CoTaskMemAlloc(pSrc->cbFormat)))
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
memcpy(pDest->pbFormat, pSrc->pbFormat, pSrc->cbFormat);
|
||||||
|
if (pDest->pUnk)
|
||||||
|
IUnknown_AddRef(pDest->pUnk);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WINAPI FreeMediaType(AM_MEDIA_TYPE * pMediaType)
|
||||||
|
{
|
||||||
|
if (pMediaType->pbFormat)
|
||||||
|
{
|
||||||
|
CoTaskMemFree(pMediaType->pbFormat);
|
||||||
|
pMediaType->pbFormat = NULL;
|
||||||
|
}
|
||||||
|
if (pMediaType->pUnk)
|
||||||
|
{
|
||||||
|
IUnknown_Release(pMediaType->pUnk);
|
||||||
|
pMediaType->pUnk = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const * pSrc)
|
||||||
|
{
|
||||||
|
AM_MEDIA_TYPE * pDest;
|
||||||
|
|
||||||
|
pDest = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
|
||||||
|
if (!pDest)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (FAILED(CopyMediaType(pDest, pSrc)))
|
||||||
|
{
|
||||||
|
CoTaskMemFree(pDest);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pDest;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WINAPI DeleteMediaType(AM_MEDIA_TYPE * pMediaType)
|
||||||
|
{
|
||||||
|
FreeMediaType(pMediaType);
|
||||||
|
CoTaskMemFree(pMediaType);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* Header file for Wine's strmbase implementation
|
||||||
|
*
|
||||||
|
* Copyright 2003 Robert Shearman
|
||||||
|
* Copyright 2010 Aric Stewart, CodeWeavers
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
HRESULT WINAPI CopyMediaType(AM_MEDIA_TYPE * pDest, const AM_MEDIA_TYPE *pSrc);
|
||||||
|
void WINAPI FreeMediaType(AM_MEDIA_TYPE * pMediaType);
|
||||||
|
AM_MEDIA_TYPE * WINAPI CreateMediaType(AM_MEDIA_TYPE const * pSrc);
|
||||||
|
void WINAPI DeleteMediaType(AM_MEDIA_TYPE * pMediaType);
|
Loading…
Reference in New Issue