Started on avifil32 implementation (only stubs currently).

This commit is contained in:
Marcus Meissner 1999-03-13 18:07:44 +00:00 committed by Alexandre Julliard
parent 8085b6ccfd
commit b3d1a22a44
10 changed files with 703 additions and 172 deletions

View File

@ -29,6 +29,7 @@ LIBSUBDIRS = \
controls \ controls \
console \ console \
dlls/advapi32 \ dlls/advapi32 \
dlls/avifil32 \
dlls/comctl32 \ dlls/comctl32 \
dlls/commdlg \ dlls/commdlg \
dlls/imagehlp \ dlls/imagehlp \
@ -101,6 +102,7 @@ LIBOBJS = \
controls/controls.o \ controls/controls.o \
console/console.o \ console/console.o \
dlls/advapi32/advapi32.o \ dlls/advapi32/advapi32.o \
dlls/avifil32/avifil32.o \
dlls/comctl32/comctl32.o \ dlls/comctl32/comctl32.o \
dlls/commdlg/commdlg.o \ dlls/commdlg/commdlg.o \
dlls/imagehlp/imagehlp.o \ dlls/imagehlp/imagehlp.o \

2
configure vendored
View File

@ -4597,6 +4597,7 @@ controls/Makefile
debugger/Makefile debugger/Makefile
dlls/Makefile dlls/Makefile
dlls/advapi32/Makefile dlls/advapi32/Makefile
dlls/avifil32/Makefile
dlls/comctl32/Makefile dlls/comctl32/Makefile
dlls/commdlg/Makefile dlls/commdlg/Makefile
dlls/imagehlp/Makefile dlls/imagehlp/Makefile
@ -4758,6 +4759,7 @@ controls/Makefile
debugger/Makefile debugger/Makefile
dlls/Makefile dlls/Makefile
dlls/advapi32/Makefile dlls/advapi32/Makefile
dlls/avifil32/Makefile
dlls/comctl32/Makefile dlls/comctl32/Makefile
dlls/commdlg/Makefile dlls/commdlg/Makefile
dlls/imagehlp/Makefile dlls/imagehlp/Makefile

View File

@ -622,6 +622,7 @@ controls/Makefile
debugger/Makefile debugger/Makefile
dlls/Makefile dlls/Makefile
dlls/advapi32/Makefile dlls/advapi32/Makefile
dlls/avifil32/Makefile
dlls/comctl32/Makefile dlls/comctl32/Makefile
dlls/commdlg/Makefile dlls/commdlg/Makefile
dlls/imagehlp/Makefile dlls/imagehlp/Makefile

View File

@ -1,5 +1,6 @@
SUBDIRS = \ SUBDIRS = \
advapi32 \ advapi32 \
avifil32 \
comctl32 \ comctl32 \
commdlg \ commdlg \
imagehlp \ imagehlp \

1
dlls/avifil32/.cvsignore Normal file
View File

@ -0,0 +1 @@
Makefile

16
dlls/avifil32/Makefile.in Normal file
View File

@ -0,0 +1,16 @@
DEFS = @DLLFLAGS@ -D__WINE__
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = avifil32
C_SRCS = \
avifile.c
all: $(MODULE).o
@MAKE_RULES@
### Dependencies:

505
dlls/avifil32/avifile.c Normal file
View File

@ -0,0 +1,505 @@
/*
* Copyright 1999 Marcus Meissner
*/
#include <string.h>
#include <stdio.h>
#include <assert.h>
#include "vfw.h"
#include "winbase.h"
#include "wine/winestring.h"
#include "driver.h"
#include "mmsystem.h"
#include "winerror.h"
#include "debugstr.h"
#include "debug.h"
typedef struct IAVIStreamImpl {
/* IUnknown stuff */
ICOM_VTABLE(IAVIStream)* lpvtbl;
DWORD ref;
/* IAVIStream stuff */
LPVOID lpInputFormat;
DWORD inputformatsize;
BOOL iscompressing;
DWORD curframe;
/* Compressor stuff */
HIC hic;
LPVOID lpCompressFormat;
ICINFO icinfo;
DWORD compbufsize;
LPVOID compbuffer;
DWORD decompbufsize;
LPVOID decompbuffer;
LPVOID decompformat;
AVICOMPRESSOPTIONS aco;
LPVOID lpPrev; /* pointer to decompressed frame later */
LPVOID lpPrevFormat; /* pointer to decompressed info later */
} IAVIStreamImpl;
void WINAPI
AVIFileInit(void) {
FIXME(avifile,"(),stub!\n");
}
typedef struct IAVIFileImpl {
/* IUnknown stuff */
ICOM_VTABLE(IAVIFile)* lpvtbl;
DWORD ref;
/* IAVIFile stuff... */
} IAVIFileImpl;
struct ICOM_VTABLE(IAVIStream) iavist;
static HRESULT WINAPI IAVIFile_fnQueryInterface(IAVIFile* iface,REFIID refiid,LPVOID *obj) {
ICOM_THIS(IAVIFileImpl,iface);
char xrefiid[50];
WINE_StringFromCLSID((LPCLSID)refiid,xrefiid);
TRACE(relay,"(%p)->QueryInterface(%s,%p)\n",This,xrefiid,obj);
if ( !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
!memcmp(&IID_IAVIFile,refiid,sizeof(IID_IAVIFile))
) {
*obj = iface;
return S_OK;
}
return OLE_E_ENUM_NOMORE;
}
static ULONG WINAPI IAVIFile_fnAddRef(IAVIFile* iface) {
ICOM_THIS(IAVIFileImpl,iface);
FIXME(relay,"(%p)->AddRef()\n",iface);
return ++(This->ref);
}
static ULONG WINAPI IAVIFile_fnRelease(IAVIFile* iface) {
ICOM_THIS(IAVIFileImpl,iface);
FIXME(relay,"(%p)->Release()\n",iface);
if (!--(This->ref)) {
HeapFree(GetProcessHeap(),0,iface);
return 0;
}
return This->ref;
}
static HRESULT WINAPI IAVIFile_fnInfo(IAVIFile*iface,AVIFILEINFOW*afi,LONG size) {
FIXME(avifile,"(%p)->Info(%p,%ld)\n",iface,afi,size);
/* FIXME: fill out struct? */
return E_FAIL;
}
static HRESULT WINAPI IAVIFile_fnGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam) {
FIXME(avifile,"(%p)->GetStream(%p,0x%08lx,%ld)\n",iface,avis,fccType,lParam);
/* FIXME: create interface etc. */
return E_FAIL;
}
static HRESULT WINAPI IAVIFile_fnCreateStream(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi) {
ICOM_THIS(IAVIStreamImpl,iface);
char fcc[5];
IAVIStreamImpl *istream;
FIXME(avifile,"(%p,%p,%p)\n",This,avis,asi);
istream = (IAVIStreamImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IAVIStreamImpl));
istream->ref = 1;
istream->lpvtbl = &iavist;
fcc[4]='\0';
memcpy(fcc,(char*)&(asi->fccType),4);
FIXME(avifile,"\tfccType '%s'\n",fcc);
memcpy(fcc,(char*)&(asi->fccHandler),4);
FIXME(avifile,"\tfccHandler '%s'\n",fcc);
FIXME(avifile,"\tdwFlags 0x%08lx\n",asi->dwFlags);
FIXME(avifile,"\tdwCaps 0x%08lx\n",asi->dwCaps);
FIXME(avifile,"\tname '%s'\n",debugstr_w(asi->szName));
istream->curframe = 0;
*avis = (PAVISTREAM)istream;
return S_OK;
}
static HRESULT WINAPI IAVIFile_fnWriteData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG size) {
FIXME(avifile,"(%p)->WriteData(0x%08lx,%p,%ld)\n",iface,ckid,lpData,size);
/* FIXME: write data to file */
return E_FAIL;
}
static HRESULT WINAPI IAVIFile_fnReadData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG *size) {
FIXME(avifile,"(%p)->ReadData(0x%08lx,%p,%p)\n",iface,ckid,lpData,size);
/* FIXME: read at most size bytes from file */
return E_FAIL;
}
static HRESULT WINAPI IAVIFile_fnEndRecord(IAVIFile*iface) {
FIXME(avifile,"(%p)->EndRecord()\n",iface);
/* FIXME: end record? */
return E_FAIL;
}
static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam) {
FIXME(avifile,"(%p)->DeleteStream(0x%08lx,%ld)\n",iface,fccType,lParam);
/* FIXME: delete stream? */
return E_FAIL;
}
struct ICOM_VTABLE(IAVIFile) iavift = {
IAVIFile_fnQueryInterface,
IAVIFile_fnAddRef,
IAVIFile_fnRelease,
IAVIFile_fnInfo,
IAVIFile_fnGetStream,
IAVIFile_fnCreateStream,
IAVIFile_fnWriteData,
IAVIFile_fnReadData,
IAVIFile_fnEndRecord,
IAVIFile_fnDeleteStream
};
HRESULT WINAPI AVIFileOpenA(
PAVIFILE * ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler
) {
char buf[80];
IAVIFileImpl *iavi;
if (HIWORD(lpHandler))
WINE_StringFromCLSID(lpHandler,buf);
else
sprintf(buf,"<clsid-0x%04lx>",(DWORD)lpHandler);
FIXME(avifile,"(%p,%s,0x%08lx,%s),stub!\n",ppfile,szFile,(DWORD)uMode,buf);
iavi = (IAVIFileImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IAVIFileImpl));
iavi->ref = 1;
iavi->lpvtbl = &iavift;
*ppfile = (LPVOID)iavi;
return S_OK;
}
static HRESULT WINAPI IAVIStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID *obj) {
ICOM_THIS(IAVIStreamImpl,iface);
char xrefiid[50];
WINE_StringFromCLSID((LPCLSID)refiid,xrefiid);
TRACE(relay,"(%p)->QueryInterface(%s,%p)\n",This,xrefiid,obj);
if ( !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
!memcmp(&IID_IAVIStream,refiid,sizeof(IID_IAVIStream))
) {
*obj = This;
return S_OK;
}
/* can return IGetFrame interface too */
return OLE_E_ENUM_NOMORE;
}
static ULONG WINAPI IAVIStream_fnAddRef(IAVIStream*iface) {
ICOM_THIS(IAVIStreamImpl,iface);
FIXME(relay,"(%p)->AddRef()\n",iface);
return ++(This->ref);
}
static ULONG WINAPI IAVIStream_fnRelease(IAVIStream* iface) {
ICOM_THIS(IAVIStreamImpl,iface);
FIXME(relay,"(%p)->Release()\n",iface);
if (!--(This->ref)) {
HeapFree(GetProcessHeap(),0,This);
return 0;
}
return This->ref;
}
HRESULT WINAPI IAVIStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2) {
FIXME(avifile,"(%p)->Create(0x%08lx,0x%08lx)\n",iface,lParam1,lParam2);
return E_FAIL;
}
HRESULT WINAPI IAVIStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size) {
FIXME(avifile,"(%p)->Info(%p,%ld)\n",iface,psi,size);
return E_FAIL;
}
LONG WINAPI IAVIStream_fnFindSample(IAVIStream*iface,LONG pos,LONG flags) {
FIXME(avifile,"(%p)->FindSample(%ld,0x%08lx)\n",iface,pos,flags);
return E_FAIL;
}
HRESULT WINAPI IAVIStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG *formatsize) {
FIXME(avifile,"(%p)->ReadFormat(%ld,%p,%p)\n",iface,pos,format,formatsize);
return E_FAIL;
}
/*****************************************************************************
* [IAVIStream::SetFormat]
*/
HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize) {
IAVIStreamImpl *as = (IAVIStreamImpl*)iface;
FIXME(avifile,"(%p)->SetFormat(%ld,%p,%ld)\n",iface,pos,format,formatsize);
if (as->lpInputFormat) HeapFree(GetProcessHeap(),0,as->lpInputFormat);
as->inputformatsize = formatsize;
as->lpInputFormat = HeapAlloc(GetProcessHeap(),0,formatsize);
memcpy(as->lpInputFormat,format,formatsize);
if (as->iscompressing) {
int xsize;
/* Set up the Compressor part */
xsize = ICCompressGetFormatSize(as->hic,as->lpInputFormat);
as->lpCompressFormat = HeapAlloc(GetProcessHeap(),0,xsize);
ICCompressGetFormat(as->hic,as->lpInputFormat,as->lpCompressFormat);
ICCompressBegin(as->hic,as->lpInputFormat,as->lpCompressFormat);
as->compbufsize = ICCompressGetSize(as->hic,as->lpInputFormat,as->lpCompressFormat);
as->compbuffer = HeapAlloc(GetProcessHeap(),0,as->compbufsize);
/* Set up the Decompressor part (for prev frames?) */
xsize=ICDecompressGetFormatSize(as->hic,as->lpCompressFormat);
as->decompformat = HeapAlloc(GetProcessHeap(),0,xsize);
ICDecompressGetFormat(as->hic,as->lpCompressFormat,as->decompformat);
as->decompbufsize=((LPBITMAPINFOHEADER)as->decompbuffer)->biSizeImage;
as->decompbuffer = HeapReAlloc(GetProcessHeap(),0,as->decompbuffer,as->decompbufsize);
memset(as->decompbuffer,0xff,as->decompbufsize);
assert(HeapValidate(GetProcessHeap(),0,NULL));
ICDecompressGetFormat(as->hic,as->lpCompressFormat,as->decompformat);
ICDecompressBegin(as->hic,as->lpCompressFormat,as->decompformat);
as->lpPrev = as->lpPrevFormat = NULL;
}
return S_OK;
}
HRESULT WINAPI IAVIStream_fnRead(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread) {
FIXME(avifile,"(%p)->Read(%ld,%ld,%p,%ld,%p,%p)\n",iface,start,samples,buffer,buffersize,bytesread,samplesread);
return E_FAIL;
}
HRESULT WINAPI IAVIStream_fnWrite(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
IAVIStreamImpl *as = (IAVIStreamImpl*)iface;
DWORD ckid,xflags;
FIXME(avifile,"(%p)->Write(%ld,%ld,%p,%ld,0x%08lx,%p,%p)\n",iface,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
ICCompress(
as->hic,flags,
as->lpCompressFormat,
as->compbuffer,
as->lpInputFormat,buffer,
&ckid,&xflags,
as->curframe,0xffffff/*framesize*/,as->aco.dwQuality,
as->lpPrevFormat,as->lpPrev
);
ICDecompress(
as->hic,
flags, /* FIXME: check */
as->lpCompressFormat,
as->compbuffer,
as->decompformat,
as->decompbuffer
);
/* We now have a prev format for the next compress ... */
as->lpPrevFormat = as->decompformat;
as->lpPrev = as->decompbuffer;
return S_OK;
}
HRESULT WINAPI IAVIStream_fnDelete(IAVIStream*iface,LONG start,LONG samples) {
FIXME(avifile,"(%p)->Delete(%ld,%ld)\n",iface,start,samples);
return E_FAIL;
}
HRESULT WINAPI IAVIStream_fnReadData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG *lpread) {
FIXME(avifile,"(%p)->ReadData(0x%08lx,%p,%p)\n",iface,fcc,lp,lpread);
return E_FAIL;
}
HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size) {
FIXME(avifile,"(%p)->WriteData(0x%08lx,%p,%ld)\n",iface,fcc,lp,size);
return E_FAIL;
}
HRESULT WINAPI IAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen) {
FIXME(avifile,"(%p)->SetInfo(%p,%ld)\n",iface,info,infolen);
return E_FAIL;
}
struct ICOM_VTABLE(IAVIStream) iavist = {
IAVIStream_fnQueryInterface,
IAVIStream_fnAddRef,
IAVIStream_fnRelease,
IAVIStream_fnCreate,
IAVIStream_fnInfo,
IAVIStream_fnFindSample,
IAVIStream_fnReadFormat,
IAVIStream_fnSetFormat,
IAVIStream_fnRead,
IAVIStream_fnWrite,
IAVIStream_fnDelete,
IAVIStream_fnReadData,
IAVIStream_fnWriteData,
IAVIStream_fnSetInfo
};
HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE iface,PAVISTREAM *ppavi,AVISTREAMINFOA * psi) {
AVISTREAMINFOW psiw;
/* Only the szName at the end is different */
memcpy(&psiw,psi,sizeof(*psi)-sizeof(psi->szName));
lstrcpynAtoW(psiw.szName,psi->szName,sizeof(psi->szName));
return iface->lpvtbl->fnCreateStream(iface,ppavi,&psiw);
}
HRESULT WINAPI AVIFileCreateStreamW(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi) {
return iface->lpvtbl->fnCreateStream(iface,avis,asi);
}
HRESULT WINAPI AVIFileGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam) {
return iface->lpvtbl->fnGetStream(iface,avis,fccType,lParam);
}
HRESULT WINAPI AVIFileInfoA(PAVIFILE iface,LPAVIFILEINFOA afi,LONG size) {
AVIFILEINFOW afiw;
HRESULT hres;
if (size < sizeof(AVIFILEINFOA))
return AVIERR_BADSIZE;
hres = iface->lpvtbl->fnInfo(iface,&afiw,sizeof(afiw));
memcpy(afi,&afiw,sizeof(*afi)-sizeof(afi->szFileType));
lstrcpynWtoA(afi->szFileType,afiw.szFileType,sizeof(afi->szFileType));
return hres;
}
HRESULT WINAPI AVIStreamInfoW(PAVISTREAM iface,AVISTREAMINFOW *asi,LONG
size) {
return iface->lpvtbl->fnInfo(iface,asi,size);
}
HRESULT WINAPI AVIStreamInfoA(PAVISTREAM iface,AVISTREAMINFOA *asi,LONG
size) {
AVISTREAMINFOW asiw;
HRESULT hres;
if (size<sizeof(AVISTREAMINFOA))
return AVIERR_BADSIZE;
hres = iface->lpvtbl->fnInfo(iface,&asiw,sizeof(asiw));
memcpy(asi,&asiw,sizeof(asiw)-sizeof(asiw.szName));
lstrcpynWtoA(asi->szName,asiw.szName,sizeof(asi->szName));
return hres;
}
HRESULT WINAPI AVIFileInfoW(PAVIFILE iface,LPAVIFILEINFOW afi,LONG size) {
return iface->lpvtbl->fnInfo(iface,afi,size);
}
HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *aco,CLSID *pclsidHandler) {
char fcc[5];
IAVIStreamImpl *as;
FIXME(avifile,"(%p,%p,%p,%p)\n",ppsCompressed,ppsSource,aco,pclsidHandler);
fcc[4]='\0';
memcpy(fcc,&(aco->fccType),4);
FIXME(avifile,"\tfccType: '%s'\n",fcc);
memcpy(fcc,&(aco->fccHandler),4);
FIXME(avifile,"\tfccHandler: '%s'\n",fcc);
FIXME(avifile,"\tdwFlags: 0x%08lx\n",aco->dwFlags);
/* we just create a duplicate for now */
((IUnknown*)ppsSource)->lpvtbl->fnAddRef((IUnknown*)ppsSource);
*ppsCompressed = ppsSource;
as = (IAVIStreamImpl*)ppsSource;
/* this is where the fun begins. Open a compressor and prepare it. */
as->hic = ICOpen(aco->fccType,aco->fccHandler,ICMODE_COMPRESS);
/* May happen. for instance if the codec is not able to compress */
if (!as->hic)
return AVIERR_UNSUPPORTED;
ICGetInfo(as->hic,&(as->icinfo),sizeof(ICINFO));
FIXME(avifile,"Opened compressor: '%s' '%s'\n",debugstr_w(as->icinfo.szName),debugstr_w(as->icinfo.szDescription));
as->iscompressing = TRUE;
memcpy(&(as->aco),aco,sizeof(*aco));
if (as->icinfo.dwFlags & VIDCF_COMPRESSFRAMES) {
ICCOMPRESSFRAMES icf;
/* now what to fill in there ... Hmm */
memset(&icf,0,sizeof(icf));
icf.lDataRate = aco->dwBytesPerSecond;
icf.lQuality = aco->dwQuality;
icf.lKeyRate = aco->dwKeyFrameEvery;
icf.GetData = (void*)0xdead4242;
icf.PutData = (void*)0xdead4243;
ICSendMessage(as->hic,ICM_COMPRESS_FRAMES_INFO,(LPARAM)&icf,sizeof(icf));
}
return S_OK;
}
HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG formatsize) {
return iface->lpvtbl->fnSetFormat(iface,pos,format,formatsize);
}
HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG *formatsize) {
return iface->lpvtbl->fnReadFormat(iface,pos,format,formatsize);
}
HRESULT WINAPI AVIStreamWrite(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
return iface->lpvtbl->fnWrite(iface,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
}
HRESULT WINAPI AVIStreamRead(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread) {
return iface->lpvtbl->fnRead(iface,start,samples,buffer,buffersize,bytesread,samplesread);
}
HRESULT WINAPI AVIStreamWriteData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG size) {
return iface->lpvtbl->fnWriteData(iface,fcc,lp,size);
}
HRESULT WINAPI AVIStreamReadData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG *lpread) {
return iface->lpvtbl->fnReadData(iface,fcc,lp,lpread);
}
LONG WINAPI AVIStreamStart(PAVISTREAM iface) {
AVISTREAMINFOW si;
iface->lpvtbl->fnInfo(iface,&si,sizeof(si));
return si.dwStart;
}
LONG WINAPI AVIStreamLength(PAVISTREAM iface) {
AVISTREAMINFOW si;
HRESULT ret;
ret = iface->lpvtbl->fnInfo(iface,&si,sizeof(si));
if (ret) /* error */
return 1;
return si.dwLength;
}
ULONG WINAPI AVIStreamRelease(PAVISTREAM iface) {
return ((LPUNKNOWN)iface)->lpvtbl->fnRelease((LPUNKNOWN)iface);
}
PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM iface,LPBITMAPINFOHEADER bmi) {
FIXME(msvideo,"(%p)->(%p),stub!\n",iface,bmi);
return NULL;
}
LPVOID WINAPI AVIStreamGetFrame(PGETFRAME pg,LONG pos) {
return pg->lpvtbl->fnGetFrame(pg,pos);
}
HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pg) {
if (pg) ((LPUNKNOWN)pg)->lpvtbl->fnRelease((LPUNKNOWN)pg);
return 0;
}
ULONG WINAPI AVIFileRelease(PAVIFILE iface) {
return ((LPUNKNOWN)iface)->lpvtbl->fnRelease((LPUNKNOWN)iface);
}
void WINAPI AVIFileExit(void) {
FIXME(avifile,"(), stub.\n");
}

View File

@ -10,153 +10,154 @@
#define dbch_animate 2 #define dbch_animate 2
#define dbch_aspi 3 #define dbch_aspi 3
#define dbch_atom 4 #define dbch_atom 4
#define dbch_bitblt 5 #define dbch_avifile 5
#define dbch_bitmap 6 #define dbch_bitblt 6
#define dbch_caret 7 #define dbch_bitmap 7
#define dbch_cdaudio 8 #define dbch_caret 8
#define dbch_class 9 #define dbch_cdaudio 9
#define dbch_clipboard 10 #define dbch_class 10
#define dbch_clipping 11 #define dbch_clipboard 11
#define dbch_combo 12 #define dbch_clipping 12
#define dbch_comboex 13 #define dbch_combo 13
#define dbch_comm 14 #define dbch_comboex 14
#define dbch_commctrl 15 #define dbch_comm 15
#define dbch_commdlg 16 #define dbch_commctrl 16
#define dbch_console 17 #define dbch_commdlg 17
#define dbch_crtdll 18 #define dbch_console 18
#define dbch_cursor 19 #define dbch_crtdll 19
#define dbch_datetime 20 #define dbch_cursor 20
#define dbch_dc 21 #define dbch_datetime 21
#define dbch_dde 22 #define dbch_dc 22
#define dbch_ddeml 23 #define dbch_dde 23
#define dbch_ddraw 24 #define dbch_ddeml 24
#define dbch_debug 25 #define dbch_ddraw 25
#define dbch_dialog 26 #define dbch_debug 26
#define dbch_dinput 27 #define dbch_dialog 27
#define dbch_dll 28 #define dbch_dinput 28
#define dbch_dosfs 29 #define dbch_dll 29
#define dbch_dosmem 30 #define dbch_dosfs 30
#define dbch_dplay 31 #define dbch_dosmem 31
#define dbch_driver 32 #define dbch_dplay 32
#define dbch_dsound 33 #define dbch_driver 33
#define dbch_edit 34 #define dbch_dsound 34
#define dbch_event 35 #define dbch_edit 35
#define dbch_exec 36 #define dbch_event 36
#define dbch_file 37 #define dbch_exec 37
#define dbch_fixup 38 #define dbch_file 38
#define dbch_font 39 #define dbch_fixup 39
#define dbch_gdi 40 #define dbch_font 40
#define dbch_global 41 #define dbch_gdi 41
#define dbch_graphics 42 #define dbch_global 42
#define dbch_header 43 #define dbch_graphics 43
#define dbch_heap 44 #define dbch_header 44
#define dbch_hook 45 #define dbch_heap 45
#define dbch_hotkey 46 #define dbch_hook 46
#define dbch_icon 47 #define dbch_hotkey 47
#define dbch_imagehlp 48 #define dbch_icon 48
#define dbch_imagelist 49 #define dbch_imagehlp 49
#define dbch_imm 50 #define dbch_imagelist 50
#define dbch_int 51 #define dbch_imm 51
#define dbch_int10 52 #define dbch_int 52
#define dbch_int16 53 #define dbch_int10 53
#define dbch_int17 54 #define dbch_int16 54
#define dbch_int19 55 #define dbch_int17 55
#define dbch_int21 56 #define dbch_int19 56
#define dbch_int31 57 #define dbch_int21 57
#define dbch_io 58 #define dbch_int31 58
#define dbch_ipaddress 59 #define dbch_io 59
#define dbch_key 60 #define dbch_ipaddress 60
#define dbch_keyboard 61 #define dbch_key 61
#define dbch_ldt 62 #define dbch_keyboard 62
#define dbch_listbox 63 #define dbch_ldt 63
#define dbch_listview 64 #define dbch_listbox 64
#define dbch_local 65 #define dbch_listview 65
#define dbch_mci 66 #define dbch_local 66
#define dbch_mcianim 67 #define dbch_mci 67
#define dbch_mciavi 68 #define dbch_mcianim 68
#define dbch_mcimidi 69 #define dbch_mciavi 69
#define dbch_mciwave 70 #define dbch_mcimidi 70
#define dbch_mdi 71 #define dbch_mciwave 71
#define dbch_menu 72 #define dbch_mdi 72
#define dbch_message 73 #define dbch_menu 73
#define dbch_metafile 74 #define dbch_message 74
#define dbch_midi 75 #define dbch_metafile 75
#define dbch_mmaux 76 #define dbch_midi 76
#define dbch_mmio 77 #define dbch_mmaux 77
#define dbch_mmsys 78 #define dbch_mmio 78
#define dbch_mmtime 79 #define dbch_mmsys 79
#define dbch_module 80 #define dbch_mmtime 80
#define dbch_monthcal 81 #define dbch_module 81
#define dbch_mpr 82 #define dbch_monthcal 82
#define dbch_msacm 83 #define dbch_mpr 83
#define dbch_msg 84 #define dbch_msacm 84
#define dbch_msvideo 85 #define dbch_msg 85
#define dbch_nativefont 86 #define dbch_msvideo 86
#define dbch_nonclient 87 #define dbch_nativefont 87
#define dbch_ntdll 88 #define dbch_nonclient 88
#define dbch_ole 89 #define dbch_ntdll 89
#define dbch_pager 90 #define dbch_ole 90
#define dbch_palette 91 #define dbch_pager 91
#define dbch_pidl 92 #define dbch_palette 92
#define dbch_print 93 #define dbch_pidl 93
#define dbch_process 94 #define dbch_print 94
#define dbch_profile 95 #define dbch_process 95
#define dbch_progress 96 #define dbch_profile 96
#define dbch_prop 97 #define dbch_progress 97
#define dbch_propsheet 98 #define dbch_prop 98
#define dbch_psapi 99 #define dbch_propsheet 99
#define dbch_psdrv 100 #define dbch_psapi 100
#define dbch_ras 101 #define dbch_psdrv 101
#define dbch_rebar 102 #define dbch_ras 102
#define dbch_reg 103 #define dbch_rebar 103
#define dbch_region 104 #define dbch_reg 104
#define dbch_relay 105 #define dbch_region 105
#define dbch_resource 106 #define dbch_relay 106
#define dbch_scroll 107 #define dbch_resource 107
#define dbch_security 108 #define dbch_scroll 108
#define dbch_segment 109 #define dbch_security 109
#define dbch_selector 110 #define dbch_segment 110
#define dbch_sem 111 #define dbch_selector 111
#define dbch_sendmsg 112 #define dbch_sem 112
#define dbch_server 113 #define dbch_sendmsg 113
#define dbch_shell 114 #define dbch_server 114
#define dbch_shm 115 #define dbch_shell 115
#define dbch_snoop 116 #define dbch_shm 116
#define dbch_sound 117 #define dbch_snoop 117
#define dbch_static 118 #define dbch_sound 118
#define dbch_statusbar 119 #define dbch_static 119
#define dbch_stress 120 #define dbch_statusbar 120
#define dbch_string 121 #define dbch_stress 121
#define dbch_syscolor 122 #define dbch_string 122
#define dbch_system 123 #define dbch_syscolor 123
#define dbch_tab 124 #define dbch_system 124
#define dbch_task 125 #define dbch_tab 125
#define dbch_text 126 #define dbch_task 126
#define dbch_thread 127 #define dbch_text 127
#define dbch_thunk 128 #define dbch_thread 128
#define dbch_timer 129 #define dbch_thunk 129
#define dbch_toolbar 130 #define dbch_timer 130
#define dbch_toolhelp 131 #define dbch_toolbar 131
#define dbch_tooltips 132 #define dbch_toolhelp 132
#define dbch_trackbar 133 #define dbch_tooltips 133
#define dbch_treeview 134 #define dbch_trackbar 134
#define dbch_ttydrv 135 #define dbch_treeview 135
#define dbch_tweak 136 #define dbch_ttydrv 136
#define dbch_uitools 137 #define dbch_tweak 137
#define dbch_unknown 138 #define dbch_uitools 138
#define dbch_updown 139 #define dbch_unknown 139
#define dbch_ver 140 #define dbch_updown 140
#define dbch_virtual 141 #define dbch_ver 141
#define dbch_vxd 142 #define dbch_virtual 142
#define dbch_wave 143 #define dbch_vxd 143
#define dbch_win 144 #define dbch_wave 144
#define dbch_win16drv 145 #define dbch_win 145
#define dbch_win32 146 #define dbch_win16drv 146
#define dbch_wing 147 #define dbch_win32 147
#define dbch_winsock 148 #define dbch_wing 148
#define dbch_wnet 149 #define dbch_winsock 149
#define dbch_x11 150 #define dbch_wnet 150
#define dbch_x11drv 151 #define dbch_x11 151
#define dbch_x11drv 152
/* Definitions for classes identifiers */ /* Definitions for classes identifiers */
#define dbcl_fixme 0 #define dbcl_fixme 0
#define dbcl_err 1 #define dbcl_err 1

View File

@ -4,7 +4,7 @@
#include "debugtools.h" #include "debugtools.h"
#endif #endif
#define DEBUG_CHANNEL_COUNT 152 #define DEBUG_CHANNEL_COUNT 153
#ifdef DEBUG_RUNTIME #ifdef DEBUG_RUNTIME
short debug_msg_enabled[][DEBUG_CLASS_COUNT] = { short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
{1, 1, 0, 0}, {1, 1, 0, 0},
@ -159,6 +159,7 @@ short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
{1, 1, 0, 0}, {1, 1, 0, 0},
{1, 1, 0, 0}, {1, 1, 0, 0},
{1, 1, 0, 0}, {1, 1, 0, 0},
{1, 1, 0, 0},
}; };
const char* debug_ch_name[] = { const char* debug_ch_name[] = {
"accel", "accel",
@ -166,6 +167,7 @@ const char* debug_ch_name[] = {
"animate", "animate",
"aspi", "aspi",
"atom", "atom",
"avifile",
"bitblt", "bitblt",
"bitmap", "bitmap",
"caret", "caret",

View File

@ -7,23 +7,23 @@ type win32
3 stub AVIClearClipboard 3 stub AVIClearClipboard
4 stub AVIFileAddRef 4 stub AVIFileAddRef
5 stub AVIFileCreateStream 5 stub AVIFileCreateStream
6 stub AVIFileCreateStreamA 6 stdcall AVIFileCreateStreamA(ptr ptr ptr) AVIFileCreateStreamA
7 stub AVIFileCreateStreamW 7 stub AVIFileCreateStreamW
8 stub AVIFileEndRecord 8 stub AVIFileEndRecord
9 stub AVIFileExit 9 stdcall AVIFileExit() AVIFileExit
10 stub AVIFileGetStream 10 stub AVIFileGetStream
11 stub AVIFileInfo 11 stdcall AVIFileInfo (ptr ptr long) AVIFileInfoA # A in both Win95 and NT
12 stub AVIFileInfoA 12 stdcall AVIFileInfoA(ptr ptr long) AVIFileInfoA
13 stub AVIFileInfoW 13 stdcall AVIFileInfoW(ptr ptr long) AVIFileInfoW
14 stub AVIFileInit 14 stdcall AVIFileInit() AVIFileInit
15 stub AVIFileOpen 15 stub AVIFileOpen
16 stub AVIFileOpenA 16 stdcall AVIFileOpenA(ptr str long ptr) AVIFileOpenA
17 stub AVIFileOpenW 17 stub AVIFileOpenW
18 stub AVIFileReadData 18 stub AVIFileReadData
19 stub AVIFileRelease 19 stdcall AVIFileRelease(ptr) AVIFileRelease
20 stub AVIFileWriteData 20 stub AVIFileWriteData
21 stub AVIGetFromClipboard 21 stub AVIGetFromClipboard
22 stub AVIMakeCompressedStream 22 stdcall AVIMakeCompressedStream(ptr ptr ptr ptr) AVIMakeCompressedStream
23 stub AVIMakeFileFromStreams 23 stub AVIMakeFileFromStreams
24 stub AVIMakeStreamFromClipboard 24 stub AVIMakeStreamFromClipboard
25 stub AVIPutFileOnClipboard 25 stub AVIPutFileOnClipboard
@ -40,26 +40,26 @@ type win32
36 stub AVIStreamCreate 36 stub AVIStreamCreate
37 stub AVIStreamEndStreaming 37 stub AVIStreamEndStreaming
38 stub AVIStreamFindSample 38 stub AVIStreamFindSample
39 stub AVIStreamGetFrame 39 stdcall AVIStreamGetFrame(ptr long) AVIStreamGetFrame
40 stub AVIStreamGetFrameClose 40 stdcall AVIStreamGetFrameClose(ptr) AVIStreamGetFrameClose
41 stub AVIStreamGetFrameOpen 41 stdcall AVIStreamGetFrameOpen(ptr ptr) AVIStreamGetFrameOpen
42 stub AVIStreamInfo 42 stdcall AVIStreamInfo (ptr ptr long) AVIStreamInfoA
43 stub AVIStreamInfoA 43 stdcall AVIStreamInfoA(ptr ptr long) AVIStreamInfoA
44 stub AVIStreamInfoW 44 stdcall AVIStreamInfoW(ptr ptr long) AVIStreamInfoW
45 stub AVIStreamLength 45 stdcall AVIStreamLength(ptr) AVIStreamLength
46 stub AVIStreamOpenFromFile 46 stub AVIStreamOpenFromFile
47 stub AVIStreamOpenFromFileA 47 stub AVIStreamOpenFromFileA
48 stub AVIStreamOpenFromFileW 48 stub AVIStreamOpenFromFileW
49 stub AVIStreamRead 49 stdcall AVIStreamRead(ptr long long ptr long ptr ptr) AVIStreamRead
50 stub AVIStreamReadData 50 stdcall AVIStreamReadData(ptr long ptr ptr) AVIStreamReadData
51 stub AVIStreamReadFormat 51 stdcall AVIStreamReadFormat(ptr long ptr long) AVIStreamReadFormat
52 stub AVIStreamRelease 52 stdcall AVIStreamRelease(ptr) AVIStreamRelease
53 stub AVIStreamSampleToTime 53 stub AVIStreamSampleToTime
54 stub AVIStreamSetFormat 54 stdcall AVIStreamSetFormat(ptr long ptr long) AVIStreamSetFormat
55 stub AVIStreamStart 55 stdcall AVIStreamStart(ptr) AVIStreamStart
56 stub AVIStreamTimeToSample 56 stub AVIStreamTimeToSample
57 stub AVIStreamWrite 57 stdcall AVIStreamWrite(ptr long long ptr long long ptr ptr) AVIStreamWrite
58 stub AVIStreamWriteData 58 stdcall AVIStreamWriteData(ptr long ptr long) AVIStreamWriteData
59 stub CLSID_AVISimpleUnMarshal 59 stub CLSID_AVISimpleUnMarshal
60 stub CreateEditableStream 60 stub CreateEditableStream
61 stub DllCanUnloadNow 61 stub DllCanUnloadNow