From: Miguel F. <mig...@us...> - 2002-12-23 15:54:47
|
Update of /cvsroot/xine/xine-lib/src/libw32dll/DirectShow In directory sc8-pr-cvs1:/tmp/cvs-serv7617/DirectShow Modified Files: DS_AudioDecoder.c DS_Filter.c allocator.c allocator.h cmediasample.c guids.c guids.h inputpin.h interfaces.h iunk.h outputpin.c outputpin.h Log Message: wmv9 support Index: DS_AudioDecoder.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/DS_AudioDecoder.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- DS_AudioDecoder.c 6 Jan 2002 18:56:19 -0000 1.4 +++ DS_AudioDecoder.c 23 Dec 2002 15:54:42 -0000 1.5 @@ -30,18 +30,6 @@ #include <stdlib.h> #define __MODULE__ "DirectShow audio decoder" -const GUID FORMAT_WaveFormatEx = { - 0x05589f81, 0xc356, 0x11CE, - { 0xBF, 0x01, 0x00, 0xAA, 0x00, 0x55, 0x59, 0x5A } -}; -const GUID MEDIATYPE_Audio = { - 0x73647561, 0x0000, 0x0010, - { 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 } -}; -const GUID MEDIASUBTYPE_PCM = { - 0x00000001, 0x0000, 0x0010, - { 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 } -}; typedef long STDCALL (*GETCLASS) (GUID*, GUID*, void**); Index: DS_Filter.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/DS_Filter.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- DS_Filter.c 1 Feb 2002 14:23:13 -0000 1.6 +++ DS_Filter.c 23 Dec 2002 15:54:42 -0000 1.7 @@ -3,10 +3,12 @@ #include "com.h" #include <stdio.h> #include <string.h> +#include <stdlib.h> +#include "win32.h" // printf macro typedef long STDCALL (*GETCLASS) (const GUID*, const GUID*, void**); -//extern "C" STDCALL void* GetProcAddress(int, const char*); // STDCALL has to be first NetBSD +//void trapbug(); static void DS_Filter_Start(DS_Filter* This) { @@ -16,7 +18,7 @@ return; //Debug printf("DS_Filter_Start(%p)\n", This); - hr = This->m_pFilter->vt->Run(This->m_pFilter, 0); + hr = This->m_pFilter->vt->Run(This->m_pFilter, (REFERENCE_TIME)0); if (hr != 0) { Debug printf("WARNING: m_Filter->Run() failed, error code %x\n", (int)hr); @@ -71,7 +73,7 @@ // FIXME - we are still leaving few things allocated! if (This->m_iHandle) - FreeLibrary(This->m_iHandle); + FreeLibrary((unsigned)This->m_iHandle); free(This); @@ -82,6 +84,7 @@ AM_MEDIA_TYPE* in_fmt, AM_MEDIA_TYPE* out_fmt) { + HRESULT result = 0; int init = 0; /* char eb[250]; -- unused */ const char* em = NULL; @@ -106,7 +109,6 @@ for (;;) { - HRESULT result; GETCLASS func; struct IClassFactory* factory = NULL; struct IUnknown* object = NULL; @@ -121,7 +123,7 @@ em = "could not open DirectShow DLL"; break; } - func = (GETCLASS)GetProcAddress(This->m_iHandle, "DllGetClassObject"); + func = (GETCLASS)GetProcAddress((unsigned)This->m_iHandle, "DllGetClassObject"); if (!func) { em = "illegal or corrupt DirectShow DLL"; @@ -144,7 +146,7 @@ object->vt->Release((IUnknown*)object); if (result || !This->m_pFilter) { - em = "object does not have IBaseFilter interface"; + em = "object does not provide IBaseFilter interface"; break; } // enumerate pins @@ -217,7 +219,6 @@ } This->m_pOurOutput = COutputPinCreate(This->m_pDestType); - result = This->m_pOutputPin->vt->ReceiveConnection(This->m_pOutputPin, (IPin*) This->m_pOurOutput, This->m_pDestType); @@ -235,7 +236,7 @@ if (!init) { DS_Filter_Destroy(This); - printf("Warning: DS_Filter() %s. (DLL=%.200s)\n", em, dllname); + printf("Warning: DS_Filter() %s. (DLL=%.200s, r=0x%x)\n", em, dllname, result); This = 0; } return This; Index: allocator.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/allocator.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- allocator.c 29 Apr 2002 20:58:50 -0000 1.3 +++ allocator.c 23 Dec 2002 15:54:43 -0000 1.4 @@ -2,9 +2,17 @@ #include "com.h" #include "../wine/winerror.h" #include <stdio.h> +#include <stdlib.h> static int AllocatorKeeper = 0; +struct _avm_list_t +{ + struct _avm_list_t* next; + struct _avm_list_t* prev; + void* member; +}; + static inline int avm_list_size(avm_list_t* head) { avm_list_t* it = head; @@ -100,7 +108,7 @@ return NULL; } -static long MemAllocator_CreateAllocator(GUID* clsid, GUID* iid, void** ppv) +static long MemAllocator_CreateAllocator(GUID* clsid, const GUID* iid, void** ppv) { IMemAllocator* p; int result; @@ -275,7 +283,7 @@ } } -void MemAllocator_Destroy(MemAllocator* This) +static void MemAllocator_Destroy(MemAllocator* This) { Debug printf("MemAllocator_Destroy(%p) called (%d, %d)\n", This, This->refcount, AllocatorKeeper); if (--AllocatorKeeper == 0) Index: allocator.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/allocator.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- allocator.h 21 Jun 2002 01:44:17 -0000 1.4 +++ allocator.h 23 Dec 2002 15:54:43 -0000 1.5 @@ -4,14 +4,9 @@ #include "interfaces.h" #include "cmediasample.h" -typedef struct avm_list_t -{ - struct avm_list_t* next; - struct avm_list_t* prev; - void* member; -} avm_list_t; - +typedef struct _avm_list_t avm_list_t; typedef struct _MemAllocator MemAllocator; + struct _MemAllocator { IMemAllocator_vt* vt; @@ -27,6 +22,6 @@ void ( *ResetPointer )(MemAllocator* This); }; -MemAllocator* MemAllocatorCreate(); +MemAllocator* MemAllocatorCreate(void); #endif /* DS_ALLOCATOR_H */ Index: cmediasample.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/cmediasample.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- cmediasample.c 29 Apr 2002 20:58:51 -0000 1.3 +++ cmediasample.c 23 Dec 2002 15:54:43 -0000 1.4 @@ -2,9 +2,17 @@ #include "../wine/winerror.h" #include <stdio.h> #include <string.h> +#include <stdlib.h> + +/* + * currently hack to make some extra room for DS Acel codec which + * seems to overwrite allocated memory - FIXME better later + * check the buffer allocation + */ +static const int SAFETY_ACEL = 1024; static long STDCALL CMediaSample_QueryInterface(IUnknown* This, - /* [in] */ IID* iid, + /* [in] */ const GUID* iid, /* [iid_is][out] */ void **ppv) { Debug printf("CMediaSample_QueryInterface(%p) called\n", This); @@ -77,7 +85,7 @@ /* [out] */ REFERENCE_TIME *pTimeStart, /* [out] */ REFERENCE_TIME *pTimeEnd) { - Debug printf("CMediaSample_GetTime(%p) called (UNIMPLIMENTED)\n", This); + Debug printf("CMediaSample_GetTime(%p) called (UNIMPLEMENTED)\n", This); return E_NOTIMPL; } @@ -85,7 +93,7 @@ /* [in] */ REFERENCE_TIME *pTimeStart, /* [in] */ REFERENCE_TIME *pTimeEnd) { - Debug printf("CMediaSample_SetTime(%p) called (UNIMPLIMENTED)\n", This); + Debug printf("CMediaSample_SetTime(%p) called (UNIMPLEMENTED)\n", This); return E_NOTIMPL; } @@ -134,12 +142,13 @@ { CMediaSample* cms = (CMediaSample*)This; Debug printf("CMediaSample_SetActualDataLength(%p, %ld) called\n", This, __MIDL_0010); + if (__MIDL_0010 > cms->size) { char* c = cms->own_block; - Debug printf(" CMediaSample - buffer overflow %ld %d %p %p\n", + Debug printf("CMediaSample - buffer overflow %ld %d %p %p\n", __MIDL_0010, ((CMediaSample*)This)->size, cms->own_block, cms->block); - cms->own_block = realloc(cms->own_block, __MIDL_0010); + cms->own_block = (char*) realloc(cms->own_block, (size_t) __MIDL_0010 + SAFETY_ACEL); if (c == cms->block) cms->block = cms->own_block; cms->size = __MIDL_0010; @@ -265,7 +274,7 @@ // _size = (_size + 0xfff) & ~0xfff; This->vt = (IMediaSample_vt*) malloc(sizeof(IMediaSample_vt)); - This->own_block = (char*) malloc(_size); + This->own_block = (char*) malloc((size_t)_size + SAFETY_ACEL); This->media_type.pbFormat = 0; if (!This->vt || !This->own_block) Index: guids.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/guids.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- guids.c 5 Jul 2002 20:54:37 -0000 1.3 +++ guids.c 23 Dec 2002 15:54:43 -0000 1.4 @@ -1,68 +1,79 @@ #include "guids.h" -int DSHOW_DEBUG = 0; -GUID CLSID_DivxDecompressorCF={0x82CCd3E0, 0xF71A, 0x11D0, +const GUID CLSID_DivxDecompressorCF={0x82CCd3E0, 0xF71A, 0x11D0, { 0x9f, 0xe5, 0x00, 0x60, 0x97, 0x78, 0xaa, 0xaa}}; -GUID IID_IDivxFilterInterface={0xd132ee97, 0x3e38, 0x4030, +const GUID IID_IDivxFilterInterface={0xd132ee97, 0x3e38, 0x4030, {0x8b, 0x17, 0x59, 0x16, 0x3b, 0x30, 0xa1, 0xf5}}; -GUID CLSID_IV50_Decoder={0x30355649, 0x0000, 0x0010, +const GUID CLSID_IV50_Decoder={0x30355649, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID IID_IBaseFilter={0x56a86895, 0x0ad4, 0x11ce, +const GUID IID_IBaseFilter={0x56a86895, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID IID_IEnumPins={0x56a86892, 0x0ad4, 0x11ce, +const GUID IID_IEnumPins={0x56a86892, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID IID_IEnumMediaTypes={0x89c31040, 0x846b, 0x11ce, +const GUID IID_IEnumMediaTypes={0x89c31040, 0x846b, 0x11ce, {0x97, 0xd3, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}}; -GUID IID_IMemInputPin={0x56a8689d, 0x0ad4, 0x11ce, +const GUID IID_IMemInputPin={0x56a8689d, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID IID_IMemAllocator={0x56a8689c, 0x0ad4, 0x11ce, +const GUID IID_IMemAllocator={0x56a8689c, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID IID_IMediaSample={0x56a8689a, 0x0ad4, 0x11ce, +const GUID IID_IMediaSample={0x56a8689a, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID MEDIATYPE_Video={0x73646976, 0x0000, 0x0010, +const GUID MEDIATYPE_Video={0x73646976, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID GUID_NULL={0x0, 0x0, 0x0, +const GUID GUID_NULL={0x0, 0x0, 0x0, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}; -GUID FORMAT_VideoInfo={0x05589f80, 0xc356, 0x11ce, +const GUID FORMAT_VideoInfo={0x05589f80, 0xc356, 0x11ce, {0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}}; -GUID MEDIASUBTYPE_RGB565={0xe436eb7b, 0x524f, 0x11ce, +const GUID MEDIASUBTYPE_RGB1={0xe436eb78, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID MEDIASUBTYPE_RGB555={0xe436eb7c, 0x524f, 0x11ce, +const GUID MEDIASUBTYPE_RGB4={0xe436eb79, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID MEDIASUBTYPE_RGB24={0xe436eb7d, 0x524f, 0x11ce, +const GUID MEDIASUBTYPE_RGB8={0xe436eb7a, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID MEDIASUBTYPE_RGB32={0xe436eb7e, 0x524f, 0x11ce, +const GUID MEDIASUBTYPE_RGB565={0xe436eb7b, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; -GUID MEDIASUBTYPE_YUYV={0x56595559, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_RGB555={0xe436eb7c, 0x524f, 0x11ce, + {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; +const GUID MEDIASUBTYPE_RGB24={0xe436eb7d, 0x524f, 0x11ce, + {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; +const GUID MEDIASUBTYPE_RGB32={0xe436eb7e, 0x524f, 0x11ce, + {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}}; +const GUID MEDIASUBTYPE_YUYV={0x56595559, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_IYUV={0x56555949, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_IYUV={0x56555949, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_YVU9={0x39555659, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_YVU9={0x39555659, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_Y411={0x31313459, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_Y411={0x31313459, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_Y41P={0x50313459, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_Y41P={0x50313459, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_YUY2={0x32595559, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_YUY2={0x32595559, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_YVYU={0x55595659, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_YVYU={0x55595659, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_UYVY={0x59565955, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_UYVY={0x59565955, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_Y211={0x31313259, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_Y211={0x31313259, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_YV12={0x32315659, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_YV12={0x32315659, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_I420={0x30323449, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_I420={0x30323449, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID MEDIASUBTYPE_IF09={0x39304649, 0x0000, 0x0010, +const GUID MEDIASUBTYPE_IF09={0x39304649, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; -GUID CLSID_MemoryAllocator={0x1e651cc0, 0xb199, 0x11d0, +const GUID CLSID_MemoryAllocator={0x1e651cc0, 0xb199, 0x11d0, {0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45}}; -GUID IID_DivxHidden={0x598eba01, 0xb49a, 0x11d2, +const GUID IID_DivxHidden={0x598eba01, 0xb49a, 0x11d2, {0xa1, 0xc1, 0x00, 0x60, 0x97, 0x78, 0xaa, 0xaa}}; -GUID IID_Iv50Hidden={0x665a4442, 0xd905, 0x11d0, +const GUID IID_Iv50Hidden={0x665a4442, 0xd905, 0x11d0, {0xa3, 0x0e, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}}; +const GUID FORMAT_WaveFormatEx = {0x05589f81, 0xc356, 0x11CE, + {0xBF, 0x01, 0x00, 0xAA, 0x00, 0x55, 0x59, 0x5A}}; +const GUID MEDIATYPE_Audio = {0x73647561, 0x0000, 0x0010, + {0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71}}; +const GUID MEDIASUBTYPE_PCM = {0x00000001, 0x0000, 0x0010, + {0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71}}; Index: guids.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/guids.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- guids.h 5 Jul 2002 20:54:37 -0000 1.5 +++ guids.h 23 Dec 2002 15:54:43 -0000 1.6 @@ -1,13 +1,13 @@ -#ifndef GUIDS_H -#define GUIDS_H +#ifndef DS_GUIDS_H +#define DS_GUIDS_H #include "com.h" #include "../wine/module.h" #include "../wine/windef.h" #include "../wine/vfw.h" -extern int DSHOW_DEBUG; -#define Debug if(DSHOW_DEBUG) +//#define Debug if(1) +#define Debug if(0) typedef struct __attribute__((__packed__)) _MediaType { @@ -22,12 +22,6 @@ char* pbFormat; //0x44 } AM_MEDIA_TYPE; -typedef enum -{ - PINDIR_INPUT = 0, - PINDIR_OUTPUT -} PIN_DIRECTION; - typedef long long REFERENCE_TIME; typedef struct __attribute__((__packed__)) RECT32 @@ -35,8 +29,8 @@ int left, top, right, bottom; } RECT32; -typedef struct __attribute__((__packed__)) tagVIDEOINFOHEADER { - +typedef struct __attribute__((__packed__)) tagVIDEOINFOHEADER +{ RECT32 rcSource; // The bit we really want to use RECT32 rcTarget; // Where the video should go unsigned long dwBitRate; // Approximate bit data rate @@ -46,52 +40,46 @@ //int reserved[3]; } VIDEOINFOHEADER; -typedef struct _AllocatorProperties -{ - long cBuffers; - long cbBuffer; - long cbAlign; - long cbPrefix; -} ALLOCATOR_PROPERTIES; +typedef GUID CLSID; +typedef GUID IID; -typedef struct _IBaseFilter IBaseFilter; -typedef struct _PinInfo -{ - IBaseFilter* pFilter; - PIN_DIRECTION dir; - unsigned short achName[128]; -} PIN_INFO; - - -extern GUID IID_IBaseFilter; -extern GUID IID_IEnumPins; -extern GUID IID_IEnumMediaTypes; -extern GUID IID_IMemInputPin; -extern GUID IID_IMemAllocator; -extern GUID IID_IMediaSample; -extern GUID IID_DivxHidden; -extern GUID IID_Iv50Hidden; -extern GUID CLSID_DivxDecompressorCF; -extern GUID IID_IDivxFilterInterface; -extern GUID CLSID_IV50_Decoder; -extern GUID CLSID_MemoryAllocator; -extern GUID MEDIATYPE_Video; -extern GUID GUID_NULL; -extern GUID FORMAT_VideoInfo; -extern GUID MEDIASUBTYPE_RGB565; -extern GUID MEDIASUBTYPE_RGB555; -extern GUID MEDIASUBTYPE_RGB24; -extern GUID MEDIASUBTYPE_RGB32; -extern GUID MEDIASUBTYPE_YUYV; -extern GUID MEDIASUBTYPE_IYUV; -extern GUID MEDIASUBTYPE_YVU9; -extern GUID MEDIASUBTYPE_Y411; -extern GUID MEDIASUBTYPE_Y41P; -extern GUID MEDIASUBTYPE_YUY2; -extern GUID MEDIASUBTYPE_YVYU; -extern GUID MEDIASUBTYPE_UYVY; -extern GUID MEDIASUBTYPE_Y211; -extern GUID MEDIASUBTYPE_YV12; -extern GUID MEDIASUBTYPE_I420; +extern const GUID IID_IBaseFilter; +extern const GUID IID_IEnumPins; +extern const GUID IID_IEnumMediaTypes; +extern const GUID IID_IMemInputPin; +extern const GUID IID_IMemAllocator; +extern const GUID IID_IMediaSample; +extern const GUID IID_DivxHidden; +extern const GUID IID_Iv50Hidden; +extern const GUID CLSID_DivxDecompressorCF; +extern const GUID IID_IDivxFilterInterface; +extern const GUID CLSID_IV50_Decoder; +extern const GUID CLSID_MemoryAllocator; +extern const GUID MEDIATYPE_Video; +extern const GUID GUID_NULL; +extern const GUID FORMAT_VideoInfo; +extern const GUID MEDIASUBTYPE_RGB1; +extern const GUID MEDIASUBTYPE_RGB4; +extern const GUID MEDIASUBTYPE_RGB8; +extern const GUID MEDIASUBTYPE_RGB565; +extern const GUID MEDIASUBTYPE_RGB555; +extern const GUID MEDIASUBTYPE_RGB24; +extern const GUID MEDIASUBTYPE_RGB32; +extern const GUID MEDIASUBTYPE_YUYV; +extern const GUID MEDIASUBTYPE_IYUV; +extern const GUID MEDIASUBTYPE_YVU9; +extern const GUID MEDIASUBTYPE_Y411; +extern const GUID MEDIASUBTYPE_Y41P; +extern const GUID MEDIASUBTYPE_YUY2; +extern const GUID MEDIASUBTYPE_YVYU; +extern const GUID MEDIASUBTYPE_UYVY; +extern const GUID MEDIASUBTYPE_Y211; +extern const GUID MEDIASUBTYPE_YV12; +extern const GUID MEDIASUBTYPE_I420; +extern const GUID MEDIASUBTYPE_IF09; + +extern const GUID FORMAT_WaveFormatEx; +extern const GUID MEDIATYPE_Audio; +extern const GUID MEDIASUBTYPE_PCM; -#endif +#endif /* DS_GUIDS_H */ Index: inputpin.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/inputpin.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- inputpin.h 21 Jun 2002 01:44:17 -0000 1.4 +++ inputpin.h 23 Dec 2002 15:54:43 -0000 1.5 @@ -14,7 +14,7 @@ IPin* ( *GetPin )(CBaseFilter2* This); }; -CBaseFilter2* CBaseFilter2Create(); +CBaseFilter2* CBaseFilter2Create(void); typedef struct _CBaseFilter CBaseFilter; @@ -33,20 +33,19 @@ CBaseFilter* CBaseFilterCreate(const AM_MEDIA_TYPE* vhdr, CBaseFilter2* parent); -typedef struct _CInputPin CInputPin; -struct _CInputPin +typedef struct { IPin_vt* vt; DECLARE_IUNKNOWN(); CBaseFilter* parent; AM_MEDIA_TYPE type; GUID interfaces[1]; -}; +} CInputPin; CInputPin* CInputPinCreate(CBaseFilter* parent, const AM_MEDIA_TYPE* vhdr); -typedef struct CRemotePin +typedef struct { IPin_vt* vt; DECLARE_IUNKNOWN(); @@ -58,7 +57,7 @@ CRemotePin* CRemotePinCreate(CBaseFilter* pt, IPin* rpin); -typedef struct CRemotePin2 +typedef struct { IPin_vt* vt; DECLARE_IUNKNOWN(); Index: interfaces.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/interfaces.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- interfaces.h 6 Jan 2002 18:56:20 -0000 1.2 +++ interfaces.h 23 Dec 2002 15:54:43 -0000 1.3 @@ -2,26 +2,41 @@ #define DS_INTERFACES_H /* - -Definition of important DirectShow interfaces. -Created using freely-available DirectX 8.0 SDK -( http://msdn.microsoft.com ) - -*/ + * Definition of important DirectShow interfaces. + * Created using freely-available DirectX 8.0 SDK + * ( http://msdn.microsoft.com ) + */ #include "iunk.h" #include "com.h" -//typedef GUID& REFIID; -typedef GUID CLSID; -typedef GUID IID; - /* Sh*t. MSVC++ and g++ use different methods of storing vtables. */ typedef struct _IReferenceClock IReferenceClock; typedef struct _IFilterGraph IFilterGraph; -enum PIN_DIRECTION; +typedef struct _IBaseFilter IBaseFilter; + +typedef enum +{ + PINDIR_INPUT = 0, + PINDIR_OUTPUT +} PIN_DIRECTION; + +typedef struct _PinInfo +{ + IBaseFilter* pFilter; + PIN_DIRECTION dir; + unsigned short achName[128]; +} PIN_INFO; + +typedef struct _AllocatorProperties +{ + long cBuffers; + long cbBuffer; + long cbAlign; + long cbPrefix; +} ALLOCATOR_PROPERTIES; typedef struct _IEnumMediaTypes IEnumMediaTypes; typedef struct IEnumMediaTypes_vt Index: iunk.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/iunk.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- iunk.h 6 Jan 2002 18:56:20 -0000 1.3 +++ iunk.h 23 Dec 2002 15:54:43 -0000 1.4 @@ -2,10 +2,9 @@ #define DS_IUNK_H #include "guids.h" -#include <stdlib.h> #define INHERIT_IUNKNOWN() \ - long STDCALL ( *QueryInterface )(IUnknown * This, GUID* riid, void **ppvObject); \ + long STDCALL ( *QueryInterface )(IUnknown * This, const GUID* riid, void **ppvObject); \ long STDCALL ( *AddRef )(IUnknown * This); \ long STDCALL ( *Release )(IUnknown * This); @@ -14,12 +13,12 @@ #define IMPLEMENT_IUNKNOWN(CLASSNAME) \ static long STDCALL CLASSNAME ## _QueryInterface(IUnknown * This, \ - GUID* riid, void **ppvObject) \ + const GUID* riid, void **ppvObject) \ { \ CLASSNAME * me = (CLASSNAME *)This; \ - GUID* r; unsigned int i = 0; \ + const GUID* r; unsigned int i = 0; \ Debug printf(#CLASSNAME "_QueryInterface(%p) called\n", This);\ - if (!ppvObject) return 0x80004003; \ + if (!ppvObject) return E_POINTER; \ for(r=me->interfaces; i<sizeof(me->interfaces)/sizeof(me->interfaces[0]); r++, i++) \ if(!memcmp(r, riid, sizeof(*r))) \ { \ @@ -27,7 +26,7 @@ *ppvObject=This; \ return 0; \ } \ - Debug printf("Query failed!\n"); \ + Debug printf("Query failed! (GUID: 0x%x)\n", *(const unsigned int*)riid); \ return E_NOINTERFACE; \ } \ \ Index: outputpin.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/outputpin.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- outputpin.c 21 Jun 2002 01:44:17 -0000 1.6 +++ outputpin.c 23 Dec 2002 15:54:43 -0000 1.7 @@ -4,6 +4,7 @@ #include "outputpin.h" #include <stdio.h> #include <string.h> +#include <stdlib.h> /* An object beyond interface IEnumMediaTypes. @@ -24,6 +25,15 @@ GUID interfaces[2]; } CEnumMediaTypes; +struct _COutputMemPin +{ + IMemInputPin_vt* vt; + DECLARE_IUNKNOWN(); + char** frame_pointer; + long* frame_size_pointer; + MemAllocator* pAllocator; + COutputPin* parent; +}; static HRESULT STDCALL CEnumMediaTypes_Next(IEnumMediaTypes * This, /* [in] */ ULONG cMediaTypes, @@ -74,7 +84,7 @@ return E_NOTIMPL; } -void CEnumMediaTypes_Destroy(CEnumMediaTypes* This) +static void CEnumMediaTypes_Destroy(CEnumMediaTypes* This) { free(This->vt); free(This); @@ -83,7 +93,7 @@ // IPin->IUnknown methods IMPLEMENT_IUNKNOWN(CEnumMediaTypes) -CEnumMediaTypes* CEnumMediaTypesCreate(const AM_MEDIA_TYPE* amt) +static CEnumMediaTypes* CEnumMediaTypesCreate(const AM_MEDIA_TYPE* amt) { CEnumMediaTypes *This = (CEnumMediaTypes*) malloc(sizeof(CEnumMediaTypes)) ; @@ -120,7 +130,7 @@ *************/ -static HRESULT STDCALL COutputPin_QueryInterface(IUnknown* This, GUID* iid, void** ppv) +static HRESULT STDCALL COutputPin_QueryInterface(IUnknown* This, const GUID* iid, void** ppv) { COutputPin* p = (COutputPin*) This; @@ -284,7 +294,7 @@ // IMemInputPin->IUnknown methods -static HRESULT STDCALL COutputPin_M_QueryInterface(IUnknown* This, GUID* iid, void** ppv) +static HRESULT STDCALL COutputPin_M_QueryInterface(IUnknown* This, const GUID* iid, void** ppv) { COutputPin* p = (COutputPin*)This; Index: outputpin.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libw32dll/DirectShow/outputpin.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- outputpin.h 21 Jun 2002 01:44:17 -0000 1.5 +++ outputpin.h 23 Dec 2002 15:54:43 -0000 1.6 @@ -5,18 +5,8 @@ #include "allocator.h" -typedef struct _COutputPin COutputPin; - typedef struct _COutputMemPin COutputMemPin; -struct _COutputMemPin -{ - IMemInputPin_vt* vt; - DECLARE_IUNKNOWN(); - char** frame_pointer; - long* frame_size_pointer; - MemAllocator* pAllocator; - COutputPin* parent; -}; +typedef struct _COutputPin COutputPin; struct _COutputPin { |