Changeset 2109 for trunk/src


Ignore:
Timestamp:
Dec 18, 1999, 5:01:52 PM (26 years ago)
Author:
sandervl
Message:

JW: updated with the latest code from Wine 991212

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/avifil32/avifile.cpp

    r1658 r2109  
    1 /* $Id: avifile.cpp,v 1.4 1999-11-09 12:49:13 bird Exp $ */
    2 /*
     1/* $Id: avifile.cpp,v 1.5 1999-12-18 16:01:52 sandervl Exp $ */
     2/*                                 
    33 * Copyright 1999 Marcus Meissner
    44 */
     
    8686
    8787typedef struct IAVIStreamImpl {
    88         /* IUnknown stuff */
    89         ICOM_VTABLE(IAVIStream)*        lpvtbl;
    90         DWORD           ref;
    91         /* IAVIStream stuff */
    92         LPVOID          lpInputFormat;
    93         DWORD           inputformatsize;
    94         BOOL            iscompressing;
    95         DWORD           curframe;
    96 
    97             /* Compressor stuff */
    98             HIC hic;
    99             LPVOID      lpCompressFormat;
    100             ICINFO      icinfo;
    101             DWORD       compbufsize;
    102             LPVOID      compbuffer;
    103 
    104             DWORD       decompbufsize;
    105             LPVOID      decompbuffer;
    106             LPVOID      decompformat;
    107             AVICOMPRESSOPTIONS  aco;
    108 
    109             LPVOID      lpPrev; /* pointer to decompressed frame later */
    110             LPVOID      lpPrevFormat; /* pointer to decompressed info later */
     88        /* IUnknown stuff */
     89        ICOM_VFIELD(IAVIStream);
     90        DWORD           ref;
     91        /* IAVIStream stuff */
     92        LPVOID          lpInputFormat;
     93        DWORD           inputformatsize;
     94        BOOL            iscompressing;
     95        DWORD           curframe;
     96
     97            /* Compressor stuff */
     98            HIC hic;
     99            LPVOID      lpCompressFormat;
     100            ICINFO      icinfo;
     101            DWORD       compbufsize;
     102            LPVOID      compbuffer;
     103
     104            DWORD       decompbufsize;
     105            LPVOID      decompbuffer;
     106            LPVOID      decompformat;
     107            AVICOMPRESSOPTIONS  aco;
     108
     109            LPVOID      lpPrev; /* pointer to decompressed frame later */
     110            LPVOID      lpPrevFormat; /* pointer to decompressed info later */
    111111} IAVIStreamImpl;
    112112
    113113void WINAPI
    114114AVIFileInit(void) {
    115         FIXME_(avifile)("(),stub!\n");
     115        FIXME("(),stub!\n");
    116116}
    117117
    118118typedef struct IAVIFileImpl {
    119         /* IUnknown stuff */
    120         ICOM_VTABLE(IAVIFile)*  lpvtbl;
    121         DWORD                           ref;
    122         /* IAVIFile stuff... */
     119        /* IUnknown stuff */
     120        ICOM_VFIELD(IAVIFile);
     121        DWORD                           ref;
     122        /* IAVIFile stuff... */
    123123} IAVIFileImpl;
    124124
    125125static HRESULT WINAPI IAVIFile_fnQueryInterface(IAVIFile* iface,REFIID refiid,LPVOID *obj) {
    126         ICOM_THIS(IAVIFileImpl,iface);
    127         char    xrefiid[50];
    128 
    129         WINE_StringFromCLSID((LPCLSID)refiid,xrefiid);
    130         TRACE_(relay)("(%p)->QueryInterface(%s,%p)\n",This,xrefiid,obj);
    131         if (    !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
    132                 !memcmp(&IID_IAVIFile,refiid,sizeof(IID_IAVIFile))
    133         ) {
    134                 *obj = iface;
    135                 return S_OK;
    136         }
    137         return OLE_E_ENUM_NOMORE;
     126        ICOM_THIS(IAVIFileImpl,iface);
     127        char    xrefiid[50];
     128
     129        WINE_StringFromCLSID((LPCLSID)refiid,xrefiid);
     130        TRACE_(relay)("(%p)->QueryInterface(%s,%p)\n",This,xrefiid,obj);
     131        if (    !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
     132                !memcmp(&IID_IAVIFile,refiid,sizeof(IID_IAVIFile))
     133        ) {
     134                *obj = iface;
     135                return S_OK;
     136        }
     137        return OLE_E_ENUM_NOMORE;
    138138}
    139139
    140140static ULONG WINAPI IAVIFile_fnAddRef(IAVIFile* iface) {
    141         ICOM_THIS(IAVIFileImpl,iface);
    142 
    143         FIXME_(relay)("(%p)->AddRef()\n",iface);
    144         return ++(This->ref);
     141        ICOM_THIS(IAVIFileImpl,iface);
     142       
     143        FIXME_(relay)("(%p)->AddRef()\n",iface);
     144        return ++(This->ref);
    145145}
    146146
    147147static ULONG WINAPI IAVIFile_fnRelease(IAVIFile* iface) {
    148         ICOM_THIS(IAVIFileImpl,iface);
    149 
    150         FIXME_(relay)("(%p)->Release()\n",iface);
    151         if (!--(This->ref)) {
    152                 HeapFree(GetProcessHeap(),0,iface);
    153                 return 0;
    154         }
    155         return This->ref;
     148        ICOM_THIS(IAVIFileImpl,iface);
     149       
     150        FIXME_(relay)("(%p)->Release()\n",iface);
     151        if (!--(This->ref)) {
     152                HeapFree(GetProcessHeap(),0,iface);
     153                return 0;
     154        }
     155        return This->ref;
    156156}
    157157
    158158static HRESULT WINAPI IAVIFile_fnInfo(IAVIFile*iface,AVIFILEINFOW*afi,LONG size) {
    159         FIXME_(avifile)("(%p)->Info(%p,%ld)\n",iface,afi,size);
    160 
    161         /* FIXME: fill out struct? */
    162         return E_FAIL;
     159        FIXME("(%p)->Info(%p,%ld)\n",iface,afi,size);
     160
     161        /* FIXME: fill out struct? */
     162        return E_FAIL;
    163163}
    164164
    165165static HRESULT WINAPI IAVIFile_fnGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam) {
    166         FIXME_(avifile)("(%p)->GetStream(%p,0x%08lx,%ld)\n",iface,avis,fccType,lParam);
    167         /* FIXME: create interface etc. */
    168         return E_FAIL;
     166        FIXME("(%p)->GetStream(%p,0x%08lx,%ld)\n",iface,avis,fccType,lParam);
     167        /* FIXME: create interface etc. */
     168        return E_FAIL;
    169169}
    170170
    171171static HRESULT WINAPI IAVIFile_fnCreateStream(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi) {
    172         ICOM_THIS(IAVIStreamImpl,iface);
    173         char            fcc[5];
    174         IAVIStreamImpl  *istream;
    175 
    176         FIXME_(avifile)("(%p,%p,%p)\n",This,avis,asi);
    177         istream = (IAVIStreamImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IAVIStreamImpl));
    178         istream->ref = 1;
    179         istream->lpvtbl = &iavist;
    180         fcc[4]='\0';
    181         memcpy(fcc,(char*)&(asi->fccType),4);
    182         FIXME_(avifile)("\tfccType '%s'\n",fcc);
    183         memcpy(fcc,(char*)&(asi->fccHandler),4);
    184         FIXME_(avifile)("\tfccHandler '%s'\n",fcc);
    185         FIXME_(avifile)("\tdwFlags 0x%08lx\n",asi->dwFlags);
    186         FIXME_(avifile)("\tdwCaps 0x%08lx\n",asi->dwCaps);
    187         FIXME_(avifile)("\tname '%s'\n",debugstr_w(asi->szName));
    188 
    189         istream->curframe = 0;
    190         *avis = (PAVISTREAM)istream;
    191         return S_OK;
     172        ICOM_THIS(IAVIStreamImpl,iface);
     173        char            fcc[5];
     174        IAVIStreamImpl  *istream;
     175
     176        FIXME("(%p,%p,%p)\n",This,avis,asi);
     177        istream = (IAVIStreamImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IAVIStreamImpl));
     178        istream->ref = 1;
     179        ICOM_VTBL(istream) = &iavist;
     180        fcc[4]='\0';
     181        memcpy(fcc,(char*)&(asi->fccType),4);
     182        FIXME("\tfccType '%s'\n",fcc);
     183        memcpy(fcc,(char*)&(asi->fccHandler),4);
     184        FIXME("\tfccHandler '%s'\n",fcc);
     185        FIXME("\tdwFlags 0x%08lx\n",asi->dwFlags);
     186        FIXME("\tdwCaps 0x%08lx\n",asi->dwCaps);
     187        FIXME("\tname '%s'\n",debugstr_w(asi->szName));
     188
     189        istream->curframe = 0;
     190        *avis = (PAVISTREAM)istream;
     191        return S_OK;
    192192}
    193193
    194194static HRESULT WINAPI IAVIFile_fnWriteData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG size) {
    195         FIXME_(avifile)("(%p)->WriteData(0x%08lx,%p,%ld)\n",iface,ckid,lpData,size);
    196         /* FIXME: write data to file */
    197         return E_FAIL;
     195        FIXME("(%p)->WriteData(0x%08lx,%p,%ld)\n",iface,ckid,lpData,size);
     196        /* FIXME: write data to file */
     197        return E_FAIL;
    198198}
    199199
    200200static HRESULT WINAPI IAVIFile_fnReadData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG *size) {
    201         FIXME_(avifile)("(%p)->ReadData(0x%08lx,%p,%p)\n",iface,ckid,lpData,size);
    202         /* FIXME: read at most size bytes from file */
    203         return E_FAIL;
     201        FIXME("(%p)->ReadData(0x%08lx,%p,%p)\n",iface,ckid,lpData,size);
     202        /* FIXME: read at most size bytes from file */
     203        return E_FAIL;
    204204}
    205205
    206206static HRESULT WINAPI IAVIFile_fnEndRecord(IAVIFile*iface) {
    207         FIXME_(avifile)("(%p)->EndRecord()\n",iface);
    208         /* FIXME: end record? */
    209         return E_FAIL;
     207        FIXME("(%p)->EndRecord()\n",iface);
     208        /* FIXME: end record? */
     209        return E_FAIL;
    210210}
    211211
    212212static HRESULT WINAPI IAVIFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam) {
    213         FIXME_(avifile)("(%p)->DeleteStream(0x%08lx,%ld)\n",iface,fccType,lParam);
    214         /* FIXME: delete stream? */
    215         return E_FAIL;
     213        FIXME("(%p)->DeleteStream(0x%08lx,%ld)\n",iface,fccType,lParam);
     214        /* FIXME: delete stream? */
     215        return E_FAIL;
    216216}
    217217
    218218HRESULT WINAPI AVIFileOpenA(
    219         PAVIFILE * ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler
     219        PAVIFILE * ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler
    220220) {
    221         char    buf[80];
    222         IAVIFileImpl    *iavi;
    223 
    224 
    225         if (HIWORD(lpHandler))
    226                 WINE_StringFromCLSID(lpHandler,buf);
    227         else
    228                 sprintf(buf,"<clsid-0x%04lx>",(DWORD)lpHandler);
    229 
    230         FIXME_(avifile)("(%p,%s,0x%08lx,%s),stub!\n",ppfile,szFile,(DWORD)uMode,buf);
    231         iavi = (IAVIFileImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IAVIFileImpl));
    232         iavi->ref = 1;
    233         iavi->lpvtbl = &iavift;
     221        char    buf[80];
     222        IAVIFileImpl    *iavi;
     223
     224
     225        if (HIWORD(lpHandler))
     226                WINE_StringFromCLSID(lpHandler,buf);
     227        else
     228                sprintf(buf,"<clsid-0x%04lx>",(DWORD)lpHandler);
     229
     230        FIXME("(%p,%s,0x%08lx,%s),stub!\n",ppfile,szFile,(DWORD)uMode,buf);
     231        iavi = (IAVIFileImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IAVIFileImpl));
     232        iavi->ref = 1;
     233        ICOM_VTBL(iavi) = &iavift;
    234234        *ppfile = (PAVIFILE)iavi;
    235         return S_OK;
     235        return S_OK;
    236236}
    237237
    238238static HRESULT WINAPI IAVIStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID *obj) {
    239         ICOM_THIS(IAVIStreamImpl,iface);
    240         char    xrefiid[50];
    241 
    242         WINE_StringFromCLSID((LPCLSID)refiid,xrefiid);
    243         TRACE_(relay)("(%p)->QueryInterface(%s,%p)\n",This,xrefiid,obj);
    244         if (    !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
    245                 !memcmp(&IID_IAVIStream,refiid,sizeof(IID_IAVIStream))
    246         ) {
    247                 *obj = This;
    248                 return S_OK;
    249         }
    250         /* can return IGetFrame interface too */
    251         return OLE_E_ENUM_NOMORE;
     239        ICOM_THIS(IAVIStreamImpl,iface);
     240        char    xrefiid[50];
     241
     242        WINE_StringFromCLSID((LPCLSID)refiid,xrefiid);
     243        TRACE_(relay)("(%p)->QueryInterface(%s,%p)\n",This,xrefiid,obj);
     244        if (    !memcmp(&IID_IUnknown,refiid,sizeof(IID_IUnknown)) ||
     245                !memcmp(&IID_IAVIStream,refiid,sizeof(IID_IAVIStream))
     246        ) {
     247                *obj = This;
     248                return S_OK;
     249        }
     250        /* can return IGetFrame interface too */
     251        return OLE_E_ENUM_NOMORE;
    252252}
    253253
    254254static ULONG WINAPI IAVIStream_fnAddRef(IAVIStream*iface) {
    255         ICOM_THIS(IAVIStreamImpl,iface);
    256 
    257         FIXME_(relay)("(%p)->AddRef()\n",iface);
    258         return ++(This->ref);
     255        ICOM_THIS(IAVIStreamImpl,iface);
     256       
     257        FIXME_(relay)("(%p)->AddRef()\n",iface);
     258        return ++(This->ref);
    259259}
    260260
    261261static ULONG WINAPI IAVIStream_fnRelease(IAVIStream* iface) {
    262         ICOM_THIS(IAVIStreamImpl,iface);
    263 
    264         FIXME_(relay)("(%p)->Release()\n",iface);
    265         if (!--(This->ref)) {
    266                 HeapFree(GetProcessHeap(),0,This);
    267                 return 0;
    268         }
    269         return This->ref;
     262        ICOM_THIS(IAVIStreamImpl,iface);
     263       
     264        FIXME_(relay)("(%p)->Release()\n",iface);
     265        if (!--(This->ref)) {
     266                HeapFree(GetProcessHeap(),0,This);
     267                return 0;
     268        }
     269        return This->ref;
    270270}
    271271
    272272static HRESULT WINAPI IAVIStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2) {
    273         FIXME_(avifile)("(%p)->Create(0x%08lx,0x%08lx)\n",iface,lParam1,lParam2);
    274         return E_FAIL;
     273        FIXME("(%p)->Create(0x%08lx,0x%08lx)\n",iface,lParam1,lParam2);
     274        return E_FAIL;
    275275}
    276276
    277277static HRESULT WINAPI IAVIStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size) {
    278         FIXME_(avifile)("(%p)->Info(%p,%ld)\n",iface,psi,size);
    279         return E_FAIL;
     278        FIXME("(%p)->Info(%p,%ld)\n",iface,psi,size);
     279        return E_FAIL;
    280280}
    281281
    282282static LONG WINAPI IAVIStream_fnFindSample(IAVIStream*iface,LONG pos,LONG flags) {
    283         FIXME_(avifile)("(%p)->FindSample(%ld,0x%08lx)\n",iface,pos,flags);
    284         return E_FAIL;
     283        FIXME("(%p)->FindSample(%ld,0x%08lx)\n",iface,pos,flags);
     284        return E_FAIL;
    285285}
    286286
    287287static HRESULT WINAPI IAVIStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG *formatsize) {
    288         FIXME_(avifile)("(%p)->ReadFormat(%ld,%p,%p)\n",iface,pos,format,formatsize);
    289         return E_FAIL;
     288        FIXME("(%p)->ReadFormat(%ld,%p,%p)\n",iface,pos,format,formatsize);
     289        return E_FAIL;
    290290}
    291291
    292292/*****************************************************************************
    293  *                                              [IAVIStream::SetFormat]
     293 *                                              [IAVIStream::SetFormat]
    294294 */
    295295static HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize) {
    296         IAVIStreamImpl  *as = (IAVIStreamImpl*)iface;
    297 
    298         FIXME_(avifile)("(%p)->SetFormat(%ld,%p,%ld)\n",iface,pos,format,formatsize);
    299         if (as->lpInputFormat) HeapFree(GetProcessHeap(),0,as->lpInputFormat);
    300         as->inputformatsize = formatsize;
    301         as->lpInputFormat = HeapAlloc(GetProcessHeap(),0,formatsize);
    302         memcpy(as->lpInputFormat,format,formatsize);
    303         if (as->iscompressing) {
    304                 int     xsize;
    305                 /* Set up the Compressor part */
    306                 xsize = ICCompressGetFormatSize(as->hic,as->lpInputFormat);
    307                 as->lpCompressFormat = HeapAlloc(GetProcessHeap(),0,xsize);
    308                 ICCompressGetFormat(as->hic,as->lpInputFormat,as->lpCompressFormat);
    309                 ICCompressBegin(as->hic,as->lpInputFormat,as->lpCompressFormat);
    310                 as->compbufsize = ICCompressGetSize(as->hic,as->lpInputFormat,as->lpCompressFormat);
    311                 as->compbuffer = HeapAlloc(GetProcessHeap(),0,as->compbufsize);
    312 
    313                 /* Set up the Decompressor part (for prev frames?) */
    314                 xsize=ICDecompressGetFormatSize(as->hic,as->lpCompressFormat);
    315                 as->decompformat = HeapAlloc(GetProcessHeap(),0,xsize);
    316                 ICDecompressGetFormat(as->hic,as->lpCompressFormat,as->decompformat);
    317                 as->decompbufsize=((LPBITMAPINFOHEADER)as->decompbuffer)->biSizeImage;
    318                 as->decompbuffer = HeapReAlloc(GetProcessHeap(),0,as->decompbuffer,as->decompbufsize);
    319                 memset(as->decompbuffer,0xff,as->decompbufsize);
    320                 assert(HeapValidate(GetProcessHeap(),0,NULL));
    321 
    322                 ICDecompressGetFormat(as->hic,as->lpCompressFormat,as->decompformat);
    323                 ICDecompressBegin(as->hic,as->lpCompressFormat,as->decompformat);
    324                 as->lpPrev = as->lpPrevFormat = NULL;
    325         }
    326         return S_OK;
     296        IAVIStreamImpl  *as = (IAVIStreamImpl*)iface;
     297
     298        FIXME("(%p)->SetFormat(%ld,%p,%ld)\n",iface,pos,format,formatsize);
     299        if (as->lpInputFormat) HeapFree(GetProcessHeap(),0,as->lpInputFormat);
     300        as->inputformatsize = formatsize;
     301        as->lpInputFormat = HeapAlloc(GetProcessHeap(),0,formatsize);
     302        memcpy(as->lpInputFormat,format,formatsize);
     303        if (as->iscompressing) {
     304                int     xsize;
     305                /* Set up the Compressor part */
     306                xsize = ICCompressGetFormatSize(as->hic,as->lpInputFormat);
     307                as->lpCompressFormat = HeapAlloc(GetProcessHeap(),0,xsize);
     308                ICCompressGetFormat(as->hic,as->lpInputFormat,as->lpCompressFormat);
     309                ICCompressBegin(as->hic,as->lpInputFormat,as->lpCompressFormat);
     310                as->compbufsize = ICCompressGetSize(as->hic,as->lpInputFormat,as->lpCompressFormat);
     311                as->compbuffer = HeapAlloc(GetProcessHeap(),0,as->compbufsize);
     312
     313                /* Set up the Decompressor part (for prev frames?) */
     314                xsize=ICDecompressGetFormatSize(as->hic,as->lpCompressFormat);
     315                as->decompformat = HeapAlloc(GetProcessHeap(),0,xsize);
     316                ICDecompressGetFormat(as->hic,as->lpCompressFormat,as->decompformat);
     317                as->decompbufsize=((LPBITMAPINFOHEADER)as->decompbuffer)->biSizeImage;
     318                as->decompbuffer = HeapReAlloc(GetProcessHeap(),0,as->decompbuffer,as->decompbufsize);
     319                memset(as->decompbuffer,0xff,as->decompbufsize);
     320                assert(HeapValidate(GetProcessHeap(),0,NULL));
     321
     322                ICDecompressGetFormat(as->hic,as->lpCompressFormat,as->decompformat);
     323                ICDecompressBegin(as->hic,as->lpCompressFormat,as->decompformat);
     324                as->lpPrev = as->lpPrevFormat = NULL;
     325        }
     326        return S_OK;
    327327}
    328328
    329329static HRESULT WINAPI IAVIStream_fnRead(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread) {
    330         FIXME_(avifile)("(%p)->Read(%ld,%ld,%p,%ld,%p,%p)\n",iface,start,samples,buffer,buffersize,bytesread,samplesread);
    331         return E_FAIL;
     330        FIXME("(%p)->Read(%ld,%ld,%p,%ld,%p,%p)\n",iface,start,samples,buffer,buffersize,bytesread,samplesread);
     331        return E_FAIL;
    332332}
    333333
    334334static HRESULT WINAPI IAVIStream_fnWrite(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
    335         IAVIStreamImpl  *as = (IAVIStreamImpl*)iface;
    336         DWORD           ckid,xflags;
    337 
    338         FIXME_(avifile)("(%p)->Write(%ld,%ld,%p,%ld,0x%08lx,%p,%p)\n",iface,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
    339 
    340         ICCompress(
     335        IAVIStreamImpl  *as = (IAVIStreamImpl*)iface;
     336        DWORD           ckid,xflags;
     337
     338        FIXME("(%p)->Write(%ld,%ld,%p,%ld,0x%08lx,%p,%p)\n",iface,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
     339
     340        ICCompress(
    341341                as->hic,flags,
    342342                (LPBITMAPINFOHEADER)as->lpCompressFormat,
     
    347347                as->curframe,0xffffff/*framesize*/,as->aco.dwQuality,
    348348                (LPBITMAPINFOHEADER)as->lpPrevFormat,as->lpPrev
    349         );
    350         ICDecompress(
     349        );
     350        ICDecompress(
    351351                as->hic,
    352352                flags,  /* FIXME: check */
     
    355355                (LPBITMAPINFOHEADER)as->decompformat,
    356356                as->decompbuffer
    357         );
    358         /* We now have a prev format for the next compress ... */
    359         as->lpPrevFormat = as->decompformat;
    360         as->lpPrev = as->decompbuffer;
    361         return S_OK;
     357        );
     358        /* We now have a prev format for the next compress ... */
     359        as->lpPrevFormat = as->decompformat;
     360        as->lpPrev = as->decompbuffer;
     361        return S_OK;
    362362}
    363363
    364364static HRESULT WINAPI IAVIStream_fnDelete(IAVIStream*iface,LONG start,LONG samples) {
    365         FIXME_(avifile)("(%p)->Delete(%ld,%ld)\n",iface,start,samples);
    366         return E_FAIL;
     365        FIXME("(%p)->Delete(%ld,%ld)\n",iface,start,samples);
     366        return E_FAIL;
    367367}
    368368static HRESULT WINAPI IAVIStream_fnReadData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG *lpread) {
    369         FIXME_(avifile)("(%p)->ReadData(0x%08lx,%p,%p)\n",iface,fcc,lp,lpread);
    370         return E_FAIL;
     369        FIXME("(%p)->ReadData(0x%08lx,%p,%p)\n",iface,fcc,lp,lpread);
     370        return E_FAIL;
    371371}
    372372
    373373static HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size) {
    374         FIXME_(avifile)("(%p)->WriteData(0x%08lx,%p,%ld)\n",iface,fcc,lp,size);
    375         return E_FAIL;
     374        FIXME("(%p)->WriteData(0x%08lx,%p,%ld)\n",iface,fcc,lp,size);
     375        return E_FAIL;
    376376}
    377377
    378378static HRESULT WINAPI IAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen) {
    379         FIXME_(avifile)("(%p)->SetInfo(%p,%ld)\n",iface,info,infolen);
    380         return E_FAIL;
     379        FIXME("(%p)->SetInfo(%p,%ld)\n",iface,info,infolen);
     380        return E_FAIL;
    381381}
    382382
    383383HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE iface,PAVISTREAM *ppavi,AVISTREAMINFOA * psi) {
    384         AVISTREAMINFOW  psiw;
    385 
    386         /* Only the szName at the end is different */
    387         memcpy(&psiw,psi,sizeof(*psi)-sizeof(psi->szName));
    388         lstrcpynAtoW(psiw.szName,psi->szName,sizeof(psi->szName));
    389         return ICOM_VTBL(iface)->fnCreateStream(iface,ppavi,&psiw);
     384        AVISTREAMINFOW  psiw;
     385       
     386        /* Only the szName at the end is different */
     387        memcpy(&psiw,psi,sizeof(*psi)-sizeof(psi->szName));
     388        lstrcpynAtoW(psiw.szName,psi->szName,sizeof(psi->szName));
     389        return IAVIFile_CreateStream(iface,ppavi,&psiw);
    390390}
    391391
    392392HRESULT WINAPI AVIFileCreateStreamW(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi) {
    393         return ICOM_VTBL(iface)->fnCreateStream(iface,avis,asi);
     393        return IAVIFile_CreateStream(iface,avis,asi);
    394394}
    395395
    396396
    397397HRESULT WINAPI AVIFileGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam) {
    398         return ICOM_VTBL(iface)->fnGetStream(iface,avis,fccType,lParam);
     398        return IAVIFile_GetStream(iface,avis,fccType,lParam);
    399399}
    400400
    401401HRESULT WINAPI AVIFileInfoA(PAVIFILE iface,LPAVIFILEINFOA afi,LONG size) {
    402         AVIFILEINFOW    afiw;
    403         HRESULT         hres;
    404 
    405         if (size < sizeof(AVIFILEINFOA))
    406                 return AVIERR_BADSIZE;
    407         hres = ICOM_VTBL(iface)->fnInfo(iface,&afiw,sizeof(afiw));
    408         memcpy(afi,&afiw,sizeof(*afi)-sizeof(afi->szFileType));
    409         lstrcpynWtoA(afi->szFileType,afiw.szFileType,sizeof(afi->szFileType));
    410         return hres;
     402        AVIFILEINFOW    afiw;
     403        HRESULT         hres;
     404
     405        if (size < sizeof(AVIFILEINFOA))
     406                return AVIERR_BADSIZE;
     407        hres = IAVIFile_Info(iface,&afiw,sizeof(afiw));
     408        memcpy(afi,&afiw,sizeof(*afi)-sizeof(afi->szFileType));
     409        lstrcpynWtoA(afi->szFileType,afiw.szFileType,sizeof(afi->szFileType));
     410        return hres;
    411411}
    412412
    413413HRESULT WINAPI AVIStreamInfoW(PAVISTREAM iface,AVISTREAMINFOW *asi,LONG
    414414 size) {
    415         return ICOM_VTBL(iface)->fnInfo(iface,asi,size);
     415        return IAVIFile_Info(iface,asi,size);
    416416}
    417417
    418418HRESULT WINAPI AVIStreamInfoA(PAVISTREAM iface,AVISTREAMINFOA *asi,LONG
    419419 size) {
    420         AVISTREAMINFOW  asiw;
    421         HRESULT                 hres;
    422 
    423         if (size<sizeof(AVISTREAMINFOA))
    424                 return AVIERR_BADSIZE;
    425         hres = ICOM_VTBL(iface)->fnInfo(iface,&asiw,sizeof(asiw));
    426         memcpy(asi,&asiw,sizeof(asiw)-sizeof(asiw.szName));
    427         lstrcpynWtoA(asi->szName,asiw.szName,sizeof(asi->szName));
    428         return hres;
     420        AVISTREAMINFOW  asiw;
     421        HRESULT                 hres;
     422
     423        if (size<sizeof(AVISTREAMINFOA))
     424                return AVIERR_BADSIZE;
     425        hres = IAVIFile_Info(iface,&asiw,sizeof(asiw));
     426        memcpy(asi,&asiw,sizeof(asiw)-sizeof(asiw.szName));
     427        lstrcpynWtoA(asi->szName,asiw.szName,sizeof(asi->szName));
     428        return hres;
    429429}
    430430
    431431HRESULT WINAPI AVIFileInfoW(PAVIFILE iface,LPAVIFILEINFOW afi,LONG size) {
    432         return ICOM_VTBL(iface)->fnInfo(iface,afi,size);
     432        return IAVIFile_Info(iface,afi,size);
    433433}
    434434
    435435HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *aco,CLSID *pclsidHandler) {
    436         char                    fcc[5];
    437         IAVIStreamImpl  *as;
    438         FIXME_(avifile)("(%p,%p,%p,%p)\n",ppsCompressed,ppsSource,aco,pclsidHandler);
    439         fcc[4]='\0';
    440         memcpy(fcc,&(aco->fccType),4);
    441         FIXME_(avifile)("\tfccType: '%s'\n",fcc);
    442         memcpy(fcc,&(aco->fccHandler),4);
    443         FIXME_(avifile)("\tfccHandler: '%s'\n",fcc);
    444         FIXME_(avifile)("\tdwFlags: 0x%08lx\n",aco->dwFlags);
    445 
    446         /* we just create a duplicate for now */
    447         ICOM_VTBL((IUnknown*)ppsSource)->fnAddRef((IUnknown*)ppsSource);
    448         *ppsCompressed = ppsSource;
    449         as = (IAVIStreamImpl*)ppsSource;
    450 
    451         /* this is where the fun begins. Open a compressor and prepare it. */
    452         as->hic = ICOpen(aco->fccType,aco->fccHandler,ICMODE_COMPRESS);
    453 
    454         /* May happen. for instance if the codec is not able to compress */
    455         if (!as->hic)
    456                 return AVIERR_UNSUPPORTED;
    457 
    458         ICGetInfo(as->hic,&(as->icinfo),sizeof(ICINFO));
    459         FIXME_(avifile)("Opened compressor: '%s' '%s'\n",debugstr_w(as->icinfo.szName),debugstr_w(as->icinfo.szDescription));
    460         as->iscompressing = TRUE;
    461         memcpy(&(as->aco),aco,sizeof(*aco));
    462         if (as->icinfo.dwFlags & VIDCF_COMPRESSFRAMES) {
    463                 ICCOMPRESSFRAMES        icf;
    464 
    465                 /* now what to fill in there ... Hmm */
    466                 memset(&icf,0,sizeof(icf));
    467                 icf.lDataRate   = aco->dwBytesPerSecond;
    468                 icf.lQuality    = aco->dwQuality;
    469                 icf.lKeyRate    = aco->dwKeyFrameEvery;
     436        char                    fcc[5];
     437        IAVIStreamImpl  *as;
     438        FIXME("(%p,%p,%p,%p)\n",ppsCompressed,ppsSource,aco,pclsidHandler);
     439        fcc[4]='\0';
     440        memcpy(fcc,&(aco->fccType),4);
     441        FIXME("\tfccType: '%s'\n",fcc);
     442        memcpy(fcc,&(aco->fccHandler),4);
     443        FIXME("\tfccHandler: '%s'\n",fcc);
     444        FIXME("\tdwFlags: 0x%08lx\n",aco->dwFlags);
     445
     446        /* we just create a duplicate for now */
     447        IAVIStream_AddRef(ppsSource);
     448        *ppsCompressed = ppsSource;
     449        as = (IAVIStreamImpl*)ppsSource;
     450
     451        /* this is where the fun begins. Open a compressor and prepare it. */
     452        as->hic = ICOpen(aco->fccType,aco->fccHandler,ICMODE_COMPRESS);
     453
     454        /* May happen. for instance if the codec is not able to compress */
     455        if (!as->hic)
     456                return AVIERR_UNSUPPORTED;
     457
     458        ICGetInfo(as->hic,&(as->icinfo),sizeof(ICINFO));
     459        FIXME("Opened compressor: '%s' '%s'\n",debugstr_w(as->icinfo.szName),debugstr_w(as->icinfo.szDescription));
     460        as->iscompressing = TRUE;
     461        memcpy(&(as->aco),aco,sizeof(*aco));
     462        if (as->icinfo.dwFlags & VIDCF_COMPRESSFRAMES) {
     463                ICCOMPRESSFRAMES        icf;
     464
     465                /* now what to fill in there ... Hmm */
     466                memset(&icf,0,sizeof(icf));
     467                icf.lDataRate   = aco->dwBytesPerSecond;
     468                icf.lQuality    = aco->dwQuality;
     469                icf.lKeyRate    = aco->dwKeyFrameEvery;
    470470
    471471                icf.GetData = (LONG (_stdcall *)(LPARAM,LONG,LPVOID,LONG)) 0xdead4242;
    472472                icf.PutData = (LONG (_stdcall *)(LPARAM,LONG,LPVOID,LONG)) 0xdead4243;
    473                 ICSendMessage(as->hic,ICM_COMPRESS_FRAMES_INFO,(LPARAM)&icf,sizeof(icf));
    474         }
    475         return S_OK;
     473                ICSendMessage(as->hic,ICM_COMPRESS_FRAMES_INFO,(LPARAM)&icf,sizeof(icf));
     474        }
     475        return S_OK;
    476476}
    477477
    478478HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG formatsize) {
    479         return ICOM_VTBL(iface)->fnSetFormat(iface,pos,format,formatsize);
     479        return IAVIStream_SetFormat(iface,pos,format,formatsize);
    480480}
    481481
    482482HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM iface,LONG pos,LPVOID format,LONG *formatsize) {
    483         return ICOM_VTBL(iface)->fnReadFormat(iface,pos,format,formatsize);
     483        return IAVIStream_ReadFormat(iface,pos,format,formatsize);
    484484}
    485485
    486486HRESULT WINAPI AVIStreamWrite(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
    487         return ICOM_VTBL(iface)->fnWrite(iface,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
     487        return IAVIStream_Write(iface,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
    488488}
    489489
    490490HRESULT WINAPI AVIStreamRead(PAVISTREAM iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread) {
    491         return ICOM_VTBL(iface)->fnRead(iface,start,samples,buffer,buffersize,bytesread,samplesread);
     491        return IAVIStream_Read(iface,start,samples,buffer,buffersize,bytesread,samplesread);
    492492}
    493493
    494494HRESULT WINAPI AVIStreamWriteData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG size) {
    495         return ICOM_VTBL(iface)->fnWriteData(iface,fcc,lp,size);
     495        return IAVIStream_WriteData(iface,fcc,lp,size);
    496496}
    497497
    498498HRESULT WINAPI AVIStreamReadData(PAVISTREAM iface,DWORD fcc,LPVOID lp,LONG *lpread) {
    499         return ICOM_VTBL(iface)->fnReadData(iface,fcc,lp,lpread);
     499        return IAVIStream_ReadData(iface,fcc,lp,lpread);
    500500}
    501501
    502502LONG WINAPI AVIStreamStart(PAVISTREAM iface) {
    503         AVISTREAMINFOW  si;
    504 
    505         ICOM_VTBL(iface)->fnInfo(iface,&si,sizeof(si));
    506         return si.dwStart;
     503        AVISTREAMINFOW  si;
     504
     505        IAVIStream_Info(iface,&si,sizeof(si));
     506        return si.dwStart;
    507507}
    508508
    509509LONG WINAPI AVIStreamLength(PAVISTREAM iface) {
    510         AVISTREAMINFOW  si;
    511         HRESULT                 ret;
    512 
    513         ret = ICOM_VTBL(iface)->fnInfo(iface,&si,sizeof(si));
    514         if (ret) /* error */
    515                 return 1;
    516         return si.dwLength;
     510        AVISTREAMINFOW  si;
     511        HRESULT                 ret;
     512
     513        ret = IAVIStream_Info(iface,&si,sizeof(si));
     514        if (ret) /* error */
     515                return 1;
     516        return si.dwLength;
    517517}
    518518
    519519ULONG WINAPI AVIStreamRelease(PAVISTREAM iface) {
    520         return ICOM_VTBL((LPUNKNOWN)iface)->fnRelease((LPUNKNOWN)iface);
     520        return IAVIStream_Release(iface);
    521521}
    522522
    523523PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM iface,LPBITMAPINFOHEADER bmi) {
    524         FIXME_(msvideo)("(%p)->(%p),stub!\n",iface,bmi);
    525         return NULL;
     524        FIXME_(msvideo)("(%p)->(%p),stub!\n",iface,bmi);
     525        return NULL;
    526526}
    527527
    528528LPVOID WINAPI AVIStreamGetFrame(PGETFRAME pg,LONG pos) {
    529         return ICOM_VTBL(pg)->fnGetFrame(pg,pos);
     529        return IGetFrame_GetFrame(pg,pos);
    530530}
    531531
    532532HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pg) {
    533         if (pg) ICOM_VTBL((LPUNKNOWN)pg)->fnRelease((LPUNKNOWN)pg);
    534         return 0;
     533        if (pg) IGetFrame_Release(pg);
     534        return 0;
    535535}
    536536
    537537ULONG WINAPI AVIFileRelease(PAVIFILE iface) {
    538         return ICOM_VTBL((LPUNKNOWN)iface)->fnRelease((LPUNKNOWN)iface);
     538        return IAVIFile_Release(iface);
    539539}
    540540
    541541void WINAPI AVIFileExit(void) {
    542         FIXME_(avifile)("(), stub.\n");
    543 }
     542        FIXME("(), stub.\n");
     543}
Note: See TracChangeset for help on using the changeset viewer.