Ignore:
Timestamp:
Sep 15, 2001, 11:47:44 AM (24 years ago)
Author:
sandervl
Message:

restored old version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/avifil32/api.c

    r6644 r6712  
    1 /* $Id: api.c,v 1.2 2001-09-05 12:00:53 bird Exp $
    2  *
     1/*
    32 * Copyright 1999 Marcus Meissner
    43 * Copyright 2001 Hidenori TAKESHIMA <hidenori@a2.ctktv.ne.jp>
     
    2322
    2423/***********************************************************************
    25  *      AVIFileInit (AVIFILE.100)
    26  *      AVIFileInit (AVIFIL32.@)
     24 *              AVIFileInit (AVIFILE.100)
     25 *              AVIFileInit (AVIFIL32.@)
    2726 */
    2827void WINAPI AVIFileInit(void)
    2928{
    30     TRACE("()\n");
    31     if ( AVIFILE_data.dwAVIFileRef == 0 )
    32     {
    33         if ( FAILED(CoInitialize(NULL)) )
    34             AVIFILE_data.fInitCOM = FALSE;
    35         else
    36             AVIFILE_data.fInitCOM = TRUE;
    37     }
    38     AVIFILE_data.dwAVIFileRef ++;
    39 }
    40 
    41 /***********************************************************************
    42  *      AVIFileExit (AVIFILE.101)
    43  *      AVIFileExit (AVIFIL32.@)
     29        TRACE("()\n");
     30        if ( AVIFILE_data.dwAVIFileRef == 0 )
     31        {
     32                if ( FAILED(CoInitialize(NULL)) )
     33                        AVIFILE_data.fInitCOM = FALSE;
     34                else
     35                        AVIFILE_data.fInitCOM = TRUE;
     36        }
     37        AVIFILE_data.dwAVIFileRef ++;
     38}
     39
     40/***********************************************************************
     41 *              AVIFileExit (AVIFILE.101)
     42 *              AVIFileExit (AVIFIL32.@)
    4443 */
    4544void WINAPI AVIFileExit(void)
    4645{
    47     TRACE("()\n");
    48     if ( AVIFILE_data.dwAVIFileRef == 0 )
    49     {
    50         ERR( "unexpected AVIFileExit()\n" );
    51         return;
    52     }
    53 
    54     AVIFILE_data.dwAVIFileRef --;
    55     if ( AVIFILE_data.dwAVIFileRef == 0 )
    56     {
    57         if ( AVIFILE_data.fInitCOM )
    58         {
    59             CoUninitialize();
    60             AVIFILE_data.fInitCOM = FALSE;
    61         }
    62     }
    63 }
    64 
    65 /***********************************************************************
    66  *      AVIFileAddRef (AVIFIL32.@)
     46        TRACE("()\n");
     47        if ( AVIFILE_data.dwAVIFileRef == 0 )
     48        {
     49                ERR( "unexpected AVIFileExit()\n" );
     50                return;
     51        }
     52
     53        AVIFILE_data.dwAVIFileRef --;
     54        if ( AVIFILE_data.dwAVIFileRef == 0 )
     55        {
     56                if ( AVIFILE_data.fInitCOM )
     57                {
     58                        CoUninitialize();
     59                        AVIFILE_data.fInitCOM = FALSE;
     60                }
     61        }
     62}
     63
     64/***********************************************************************
     65 *              AVIFileAddRef (AVIFIL32.@)
    6766 */
    6867ULONG WINAPI AVIFileAddRef(PAVIFILE pfile)
    6968{
    70     return IAVIFile_AddRef( pfile );
    71 }
    72 
    73 /***********************************************************************
    74  *      AVIFileRelease (AVIFILE.141)
    75  *      AVIFileRelease (AVIFIL32.@)
     69        return IAVIFile_AddRef( pfile );
     70}
     71
     72/***********************************************************************
     73 *              AVIFileRelease (AVIFILE.141)
     74 *              AVIFileRelease (AVIFIL32.@)
    7675 */
    7776ULONG WINAPI AVIFileRelease(PAVIFILE pfile)
    7877{
    79     return IAVIFile_Release( pfile );
    80 }
    81 
    82 /***********************************************************************
    83  *      AVIFileOpen  (AVIFILE.102)
    84  *      AVIFileOpenA (AVIFIL32.@)
     78        return IAVIFile_Release( pfile );
     79}
     80
     81/***********************************************************************
     82 *              AVIFileOpen  (AVIFILE.102)
     83 *              AVIFileOpenA (AVIFIL32.@)
    8584 */
    8685HRESULT WINAPI AVIFileOpenA(
    87     PAVIFILE* ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler )
    88 {
    89     WCHAR*  pwsz;
    90     HRESULT hr;
    91 
    92     TRACE("(%p,%p,%u,%p)\n",ppfile,szFile,uMode,lpHandler);
    93     pwsz = AVIFILE_strdupAtoW( szFile );
    94     if ( pwsz == NULL )
    95         return AVIERR_MEMORY;
    96     hr = AVIFileOpenW(ppfile,pwsz,uMode,lpHandler);
    97     HeapFree( AVIFILE_data.hHeap, 0, pwsz );
    98     return hr;
    99 }
    100 
    101 /***********************************************************************
    102  *      AVIFileOpenW (AVIFIL32.@)
     86        PAVIFILE* ppfile,LPCSTR szFile,UINT uMode,LPCLSID lpHandler )
     87{
     88        WCHAR*  pwsz;
     89        HRESULT hr;
     90
     91        TRACE("(%p,%p,%u,%p)\n",ppfile,szFile,uMode,lpHandler);
     92        pwsz = AVIFILE_strdupAtoW( szFile );
     93        if ( pwsz == NULL )
     94                return AVIERR_MEMORY;
     95        hr = AVIFileOpenW(ppfile,pwsz,uMode,lpHandler);
     96        HeapFree( AVIFILE_data.hHeap, 0, pwsz );
     97        return hr;
     98}
     99
     100/***********************************************************************
     101 *              AVIFileOpenW (AVIFIL32.@)
    103102 */
    104103HRESULT WINAPI AVIFileOpenW(
    105     PAVIFILE* ppfile,LPCWSTR szFile,UINT uMode,LPCLSID lpHandler )
    106 {
    107     HRESULT hr;
    108     IClassFactory*  pcf;
    109     CLSID   clsRIFF;
    110 
    111     TRACE("(%p,%p,%u,%p)\n",ppfile,szFile,uMode,lpHandler);
    112     *ppfile = (PAVIFILE)NULL;
    113 
    114     if ( lpHandler == NULL )
    115     {
    116         /* FIXME - check RIFF type and get a handler from registry
    117         *         if IAVIFile::Open is worked...
    118         */
    119         memcpy( &clsRIFF, &CLSID_AVIFile, sizeof(CLSID) );
    120         lpHandler = &clsRIFF;
    121     }
    122 
    123     /*
    124     * FIXME - MS says IAVIFile::Open will be called,
    125     *         but no such method in vfw.h... why????
    126     */
    127     if ( !IsEqualGUID( lpHandler, &CLSID_AVIFile ) )
    128         return REGDB_E_CLASSNOTREG;
    129 
    130     hr = AVIFILE_DllGetClassObject(&CLSID_AVIFile,
    131                        &IID_IClassFactory,(void**)&pcf);
    132     if ( hr != S_OK )
    133         return hr;
    134 
    135     hr = IClassFactory_CreateInstance( pcf, NULL, &IID_IAVIFile,
    136                        (void**)ppfile );
    137     IClassFactory_Release( pcf );
    138 
    139     if ( hr == S_OK )
    140     {
    141         /* FIXME??? */
    142         hr = AVIFILE_IAVIFile_Open( *ppfile, szFile, uMode );
    143         if ( hr != S_OK )
    144         {
    145             IAVIFile_Release( (*ppfile) );
    146             *ppfile = NULL;
    147         }
    148     }
    149 
    150     return hr;
    151 }
    152 
    153 /***********************************************************************
    154  *      AVIFileInfoW (AVIFIL32.@)
     104        PAVIFILE* ppfile,LPCWSTR szFile,UINT uMode,LPCLSID lpHandler )
     105{
     106        HRESULT hr;
     107        IClassFactory*  pcf;
     108        CLSID   clsRIFF;
     109
     110        TRACE("(%p,%p,%u,%p)\n",ppfile,szFile,uMode,lpHandler);
     111        *ppfile = (PAVIFILE)NULL;
     112
     113        if ( lpHandler == NULL )
     114        {
     115                /* FIXME - check RIFF type and get a handler from registry
     116                *         if IAVIFile::Open is worked...
     117                */
     118                memcpy( &clsRIFF, &CLSID_AVIFile, sizeof(CLSID) );
     119                lpHandler = &clsRIFF;
     120        }
     121
     122        /*
     123        * FIXME - MS says IAVIFile::Open will be called,
     124        *         but no such method in vfw.h... why????
     125        */
     126        if ( !IsEqualGUID( lpHandler, &CLSID_AVIFile ) )
     127                return REGDB_E_CLASSNOTREG;
     128
     129        hr = AVIFILE_DllGetClassObject(&CLSID_AVIFile,
     130                                       &IID_IClassFactory,(void**)&pcf);
     131        if ( hr != S_OK )
     132                return hr;
     133
     134        hr = IClassFactory_CreateInstance( pcf, NULL, &IID_IAVIFile,
     135                                           (void**)ppfile );
     136        IClassFactory_Release( pcf );
     137
     138        if ( hr == S_OK )
     139        {
     140                /* FIXME??? */
     141                hr = AVIFILE_IAVIFile_Open( *ppfile, szFile, uMode );
     142                if ( hr != S_OK )
     143                {
     144                        IAVIFile_Release( (*ppfile) );
     145                        *ppfile = NULL;
     146                }
     147        }
     148
     149        return hr;
     150}
     151
     152/***********************************************************************
     153 *              AVIFileInfoW (AVIFIL32.@)
    155154 */
    156155HRESULT WINAPI AVIFileInfoW(PAVIFILE pfile,AVIFILEINFOW* pfi,LONG lSize)
    157156{
    158     return IAVIFile_Info( pfile, pfi, lSize );
    159 }
    160 
    161 /***********************************************************************
    162  *      AVIFileInfo  (AVIFIL32.@)
    163  *      AVIFileInfoA (AVIFIL32.@)
     157        return IAVIFile_Info( pfile, pfi, lSize );
     158}
     159
     160/***********************************************************************
     161 *              AVIFileInfo  (AVIFIL32.@)
     162 *              AVIFileInfoA (AVIFIL32.@)
    164163 */
    165164HRESULT WINAPI AVIFileInfoA(PAVIFILE pfile,AVIFILEINFOA* pfi,LONG lSize)
    166165{
    167     AVIFILEINFOW    fiw;
    168     HRESULT     hr;
    169 
    170     if ( lSize < sizeof(AVIFILEINFOA) )
    171         return AVIERR_BADSIZE;
    172     hr = AVIFileInfoW( pfile, &fiw, sizeof(AVIFILEINFOW) );
    173     if ( hr != S_OK )
    174         return hr;
    175     memcpy( pfi,&fiw,sizeof(AVIFILEINFOA) );
    176     AVIFILE_strncpyWtoA( pfi->szFileType, fiw.szFileType,
    177                  sizeof(pfi->szFileType) );
    178     pfi->szFileType[sizeof(pfi->szFileType)-1] = 0;
    179 
    180     return S_OK;
    181 }
    182 
    183 /***********************************************************************
    184  *      AVIFileGetStream (AVIFILE.143)
    185  *      AVIFileGetStream (AVIFIL32.@)
     166        AVIFILEINFOW    fiw;
     167        HRESULT         hr;
     168
     169        if ( lSize < sizeof(AVIFILEINFOA) )
     170                return AVIERR_BADSIZE;
     171        hr = AVIFileInfoW( pfile, &fiw, sizeof(AVIFILEINFOW) );
     172        if ( hr != S_OK )
     173                return hr;
     174        memcpy( pfi,&fiw,sizeof(AVIFILEINFOA) );
     175        AVIFILE_strncpyWtoA( pfi->szFileType, fiw.szFileType,
     176                             sizeof(pfi->szFileType) );
     177        pfi->szFileType[sizeof(pfi->szFileType)-1] = 0;
     178
     179        return S_OK;
     180}
     181
     182/***********************************************************************
     183 *              AVIFileGetStream (AVIFILE.143)
     184 *              AVIFileGetStream (AVIFIL32.@)
    186185 */
    187186HRESULT WINAPI AVIFileGetStream(PAVIFILE pfile,PAVISTREAM* pas,DWORD fccType,LONG lParam)
    188187{
    189     return IAVIFile_GetStream(pfile,pas,fccType,lParam);
    190 }
    191 
    192 /***********************************************************************
    193  *      AVIFileCreateStreamW (AVIFIL32.@)
     188        return IAVIFile_GetStream(pfile,pas,fccType,lParam);
     189}
     190
     191/***********************************************************************
     192 *              AVIFileCreateStreamW (AVIFIL32.@)
    194193 */
    195194HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE pfile,PAVISTREAM* ppas,AVISTREAMINFOW* pasi)
    196195{
    197     return IAVIFile_CreateStream(pfile,ppas,pasi);
    198 }
    199 
    200 /***********************************************************************
    201  *      AVIFileCreateStreamA (AVIFIL32.@)
     196        return IAVIFile_CreateStream(pfile,ppas,pasi);
     197}
     198
     199/***********************************************************************
     200 *              AVIFileCreateStreamA (AVIFIL32.@)
    202201 */
    203202HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE pfile,PAVISTREAM* ppas,AVISTREAMINFOA* pasi)
    204203{
    205     AVISTREAMINFOW  siw;
    206     HRESULT     hr;
    207 
    208     memcpy( &siw,pasi,sizeof(AVISTREAMINFOA) );
    209     AVIFILE_strncpyAtoW( siw.szName, pasi->szName,
    210         sizeof(siw.szName)/sizeof(siw.szName[0]) );
    211     siw.szName[sizeof(siw.szName)/sizeof(siw.szName[0])-1] = 0;
    212 
    213     hr = AVIFileCreateStreamW(pfile,ppas,&siw);
    214 
    215     return hr;
    216 }
    217 
    218 /***********************************************************************
    219  *      AVIFileWriteData (AVIFIL32.@)
     204        AVISTREAMINFOW  siw;
     205        HRESULT         hr;
     206
     207        memcpy( &siw,pasi,sizeof(AVISTREAMINFOA) );
     208        AVIFILE_strncpyAtoW( siw.szName, pasi->szName,
     209                sizeof(siw.szName)/sizeof(siw.szName[0]) );
     210        siw.szName[sizeof(siw.szName)/sizeof(siw.szName[0])-1] = 0;
     211
     212        hr = AVIFileCreateStreamW(pfile,ppas,&siw);
     213
     214        return hr;
     215}
     216
     217/***********************************************************************
     218 *              AVIFileWriteData (AVIFIL32.@)
    220219 */
    221220HRESULT WINAPI AVIFileWriteData(
    222     PAVIFILE pfile,DWORD dwChunkId,LPVOID lpvData,LONG cbData )
    223 {
    224     return IAVIFile_WriteData( pfile,dwChunkId,lpvData,cbData );
    225 }
    226 
    227 /***********************************************************************
    228  *      AVIFileReadData (AVIFIL32.@)
     221        PAVIFILE pfile,DWORD dwChunkId,LPVOID lpvData,LONG cbData )
     222{
     223        return IAVIFile_WriteData( pfile,dwChunkId,lpvData,cbData );
     224}
     225
     226/***********************************************************************
     227 *              AVIFileReadData (AVIFIL32.@)
    229228 */
    230229HRESULT WINAPI AVIFileReadData(
    231     PAVIFILE pfile,DWORD dwChunkId,LPVOID lpvData,LPLONG pcbData )
    232 {
    233     return IAVIFile_ReadData( pfile,dwChunkId,lpvData,pcbData );
    234 }
    235 
    236 /***********************************************************************
    237  *      AVIFileEndRecord (AVIFIL32.@)
     230        PAVIFILE pfile,DWORD dwChunkId,LPVOID lpvData,LPLONG pcbData )
     231{
     232        return IAVIFile_ReadData( pfile,dwChunkId,lpvData,pcbData );
     233}
     234
     235/***********************************************************************
     236 *              AVIFileEndRecord (AVIFIL32.@)
    238237 */
    239238HRESULT WINAPI AVIFileEndRecord( PAVIFILE pfile )
    240239{
    241     return IAVIFile_EndRecord( pfile );
    242 }
    243 
    244 /***********************************************************************
    245  *      AVIStreamAddRef (AVIFIL32.@)
     240        return IAVIFile_EndRecord( pfile );
     241}
     242
     243/***********************************************************************
     244 *              AVIStreamAddRef (AVIFIL32.@)
    246245 */
    247246ULONG WINAPI AVIStreamAddRef(PAVISTREAM pas)
    248247{
    249     return IAVIStream_Release(pas);
    250 }
    251 
    252 /***********************************************************************
    253  *      AVIStreamRelease (AVIFIL32.@)
     248        return IAVIStream_Release(pas);
     249}
     250
     251/***********************************************************************
     252 *              AVIStreamRelease (AVIFIL32.@)
    254253 */
    255254ULONG WINAPI AVIStreamRelease(PAVISTREAM pas)
    256255{
    257     return IAVIStream_Release(pas);
    258 }
    259 
    260 /***********************************************************************
    261  *      AVIStreamInfoW (AVIFIL32.@)
     256        return IAVIStream_Release(pas);
     257}
     258
     259/***********************************************************************
     260 *              AVIStreamInfoW (AVIFIL32.@)
    262261 */
    263262HRESULT WINAPI AVIStreamInfoW(PAVISTREAM pas,AVISTREAMINFOW* psi,LONG lSize)
    264263{
    265     return IAVIStream_Info(pas,psi,lSize);
    266 }
    267 
    268 /***********************************************************************
    269  *      AVIStreamInfo  (AVIFIL32.@)
    270  *      AVIStreamInfoA (AVIFIL32.@)
     264        return IAVIStream_Info(pas,psi,lSize);
     265}
     266
     267/***********************************************************************
     268 *              AVIStreamInfo  (AVIFIL32.@)
     269 *              AVIStreamInfoA (AVIFIL32.@)
    271270 */
    272271HRESULT WINAPI AVIStreamInfoA(PAVISTREAM pas,AVISTREAMINFOA* psi,LONG lSize)
    273272{
    274     AVISTREAMINFOW  siw;
    275     HRESULT     hr;
    276 
    277     if (lSize < sizeof(AVISTREAMINFOA))
    278         return AVIERR_BADSIZE;
    279     hr = AVIStreamInfoW(pas,&siw,sizeof(AVISTREAMINFOW));
    280     if ( hr != S_OK )
    281         return hr;
    282     memcpy( psi,&siw,sizeof(AVIFILEINFOA) );
    283     AVIFILE_strncpyWtoA( psi->szName, siw.szName, sizeof(psi->szName) );
    284     psi->szName[sizeof(psi->szName)-1] = 0;
    285 
    286     return hr;
    287 }
    288 
    289 /***********************************************************************
    290  *      AVIStreamFindSample (AVIFIL32.@)
     273        AVISTREAMINFOW  siw;
     274        HRESULT         hr;
     275
     276        if (lSize < sizeof(AVISTREAMINFOA))
     277                return AVIERR_BADSIZE;
     278        hr = AVIStreamInfoW(pas,&siw,sizeof(AVISTREAMINFOW));
     279        if ( hr != S_OK )
     280                return hr;
     281        memcpy( psi,&siw,sizeof(AVIFILEINFOA) );
     282        AVIFILE_strncpyWtoA( psi->szName, siw.szName, sizeof(psi->szName) );
     283        psi->szName[sizeof(psi->szName)-1] = 0;
     284
     285        return hr;
     286}
     287
     288/***********************************************************************
     289 *              AVIStreamFindSample (AVIFIL32.@)
    291290 */
    292291LONG WINAPI AVIStreamFindSample(PAVISTREAM pas,LONG lPos,LONG lFlags)
    293292{
    294     return IAVIStream_FindSample(pas,lPos,lFlags);
    295 }
    296 
    297 /***********************************************************************
    298  *      AVIStreamReadFormat (AVIFIL32.@)
     293        return IAVIStream_FindSample(pas,lPos,lFlags);
     294}
     295
     296/***********************************************************************
     297 *              AVIStreamReadFormat (AVIFIL32.@)
    299298 */
    300299HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM pas,LONG pos,LPVOID format,LONG *formatsize) {
    301     return IAVIStream_ReadFormat(pas,pos,format,formatsize);
    302 }
    303 
    304 /***********************************************************************
    305  *      AVIStreamSetFormat (AVIFIL32.@)
     300        return IAVIStream_ReadFormat(pas,pos,format,formatsize);
     301}
     302
     303/***********************************************************************
     304 *              AVIStreamSetFormat (AVIFIL32.@)
    306305 */
    307306HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM pas,LONG pos,LPVOID format,LONG formatsize) {
    308     return IAVIStream_SetFormat(pas,pos,format,formatsize);
    309 }
    310 
    311 /***********************************************************************
    312  *      AVIStreamReadData (AVIFIL32.@)
     307        return IAVIStream_SetFormat(pas,pos,format,formatsize);
     308}
     309
     310/***********************************************************************
     311 *              AVIStreamReadData (AVIFIL32.@)
    313312 */
    314313HRESULT WINAPI AVIStreamReadData(PAVISTREAM pas,DWORD fcc,LPVOID lp,LONG *lpread) {
    315     return IAVIStream_ReadData(pas,fcc,lp,lpread);
    316 }
    317 
    318 /***********************************************************************
    319  *      AVIStreamWriteData (AVIFIL32.@)
     314        return IAVIStream_ReadData(pas,fcc,lp,lpread);
     315}
     316
     317/***********************************************************************
     318 *              AVIStreamWriteData (AVIFIL32.@)
    320319 */
    321320HRESULT WINAPI AVIStreamWriteData(PAVISTREAM pas,DWORD fcc,LPVOID lp,LONG size) {
    322     return IAVIStream_WriteData(pas,fcc,lp,size);
    323 }
    324 
    325 /***********************************************************************
    326  *      AVIStreamRead (AVIFIL32.@)
     321        return IAVIStream_WriteData(pas,fcc,lp,size);
     322}
     323
     324/***********************************************************************
     325 *              AVIStreamRead (AVIFIL32.@)
    327326 */
    328327HRESULT WINAPI AVIStreamRead(PAVISTREAM pas,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread)
    329328{
    330     return IAVIStream_Read(pas,start,samples,buffer,buffersize,bytesread,samplesread);
    331 }
    332 
    333 /***********************************************************************
    334  *      AVIStreamWrite (AVIFIL32.@)
     329        return IAVIStream_Read(pas,start,samples,buffer,buffersize,bytesread,samplesread);
     330}
     331
     332/***********************************************************************
     333 *              AVIStreamWrite (AVIFIL32.@)
    335334 */
    336335HRESULT WINAPI AVIStreamWrite(PAVISTREAM pas,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten) {
    337     return IAVIStream_Write(pas,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
    338 }
    339 
    340 
    341 /***********************************************************************
    342  *      AVIStreamStart (AVIFIL32.@)
     336        return IAVIStream_Write(pas,start,samples,buffer,buffersize,flags,sampwritten,byteswritten);
     337}
     338
     339
     340/***********************************************************************
     341 *              AVIStreamStart (AVIFIL32.@)
    343342 */
    344343LONG WINAPI AVIStreamStart(PAVISTREAM pas)
    345344{
    346     AVISTREAMINFOW  si;
    347     HRESULT         hr;
    348 
    349     hr = IAVIStream_Info(pas,&si,sizeof(si));
    350     if (hr != S_OK)
    351         return -1;
    352     return (LONG)si.dwStart;
    353 }
    354 
    355 /***********************************************************************
    356  *      AVIStreamLength (AVIFIL32.@)
     345        AVISTREAMINFOW  si;
     346        HRESULT                 hr;
     347
     348        hr = IAVIStream_Info(pas,&si,sizeof(si));
     349        if (hr != S_OK)
     350                return -1;
     351        return (LONG)si.dwStart;
     352}
     353
     354/***********************************************************************
     355 *              AVIStreamLength (AVIFIL32.@)
    357356 */
    358357LONG WINAPI AVIStreamLength(PAVISTREAM pas)
    359358{
    360     AVISTREAMINFOW  si;
    361     HRESULT         hr;
    362 
    363     hr = IAVIStream_Info(pas,&si,sizeof(si));
    364     if (hr != S_OK)
    365         return -1;
    366     return (LONG)si.dwLength;
    367 }
    368 
    369 /***********************************************************************
    370  *      AVIStreamTimeToSample (AVIFIL32.@)
     359        AVISTREAMINFOW  si;
     360        HRESULT                 hr;
     361
     362        hr = IAVIStream_Info(pas,&si,sizeof(si));
     363        if (hr != S_OK)
     364                return -1;
     365        return (LONG)si.dwLength;
     366}
     367
     368/***********************************************************************
     369 *              AVIStreamTimeToSample (AVIFIL32.@)
    371370 */
    372371LONG WINAPI AVIStreamTimeToSample(PAVISTREAM pas,LONG lTime)
    373372{
    374     AVISTREAMINFOW  si;
    375     HRESULT         hr;
    376 
    377     hr = IAVIStream_Info(pas,&si,sizeof(si));
    378     if (hr != S_OK)
    379         return -1;
    380 
    381     /* I am too lazy... */
    382     FIXME("(%p,%ld)",pas,lTime);
    383     return (LONG)-1L;
    384 }
    385 
    386 /***********************************************************************
    387  *      AVIStreamSampleToTime (AVIFIL32.@)
     373        AVISTREAMINFOW  si;
     374        HRESULT                 hr;
     375
     376        hr = IAVIStream_Info(pas,&si,sizeof(si));
     377        if (hr != S_OK)
     378                return -1;
     379
     380        /* I am too lazy... */
     381        FIXME("(%p,%ld)",pas,lTime);
     382        return (LONG)-1L;
     383}
     384
     385/***********************************************************************
     386 *              AVIStreamSampleToTime (AVIFIL32.@)
    388387 */
    389388LONG WINAPI AVIStreamSampleToTime(PAVISTREAM pas,LONG lSample)
    390389{
    391     AVISTREAMINFOW  si;
    392     HRESULT         hr;
    393 
    394     hr = IAVIStream_Info(pas,&si,sizeof(si));
    395     if (hr != S_OK)
    396         return -1;
    397 
    398     /* I am too lazy... */
    399     FIXME("(%p,%ld)",pas,lSample);
    400     return (LONG)-1L;
    401 }
    402 
    403 /***********************************************************************
    404  *      AVIStreamBeginStreaming (AVIFIL32.@)
     390        AVISTREAMINFOW  si;
     391        HRESULT                 hr;
     392
     393        hr = IAVIStream_Info(pas,&si,sizeof(si));
     394        if (hr != S_OK)
     395                return -1;
     396
     397        /* I am too lazy... */
     398        FIXME("(%p,%ld)",pas,lSample);
     399        return (LONG)-1L;
     400}
     401
     402/***********************************************************************
     403 *              AVIStreamBeginStreaming (AVIFIL32.@)
    405404 */
    406405HRESULT WINAPI AVIStreamBeginStreaming(PAVISTREAM pas,LONG lStart,LONG lEnd,LONG lRate)
    407406{
    408     FIXME("(%p)->(%ld,%ld,%ld),stub!\n",pas,lStart,lEnd,lRate);
    409     return E_FAIL;
    410 }
    411 
    412 /***********************************************************************
    413  *      AVIStreamEndStreaming (AVIFIL32.@)
     407        FIXME("(%p)->(%ld,%ld,%ld),stub!\n",pas,lStart,lEnd,lRate);
     408        return E_FAIL;
     409}
     410
     411/***********************************************************************
     412 *              AVIStreamEndStreaming (AVIFIL32.@)
    414413 */
    415414HRESULT WINAPI AVIStreamEndStreaming(PAVISTREAM pas)
    416415{
    417     FIXME("(%p)->(),stub!\n",pas);
    418     return E_FAIL;
    419 }
    420 
    421 /***********************************************************************
    422  *      AVIStreamGetFrameOpen (AVIFIL32.@)
     416        FIXME("(%p)->(),stub!\n",pas);
     417        return E_FAIL;
     418}
     419
     420/***********************************************************************
     421 *              AVIStreamGetFrameOpen (AVIFIL32.@)
    423422 */
    424423PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM pas,LPBITMAPINFOHEADER pbi)
    425424{
    426     IGetFrame*  pgf;
    427     HRESULT     hr;
    428     AVISTREAMINFOW  si;
    429 
    430     FIXME("(%p,%p)\n",pas,pbi);
    431 
    432     hr = IAVIStream_Info(pas,&si,sizeof(si));
    433     if (hr != S_OK)
    434         return NULL;
    435 
    436     hr = AVIFILE_CreateIGetFrame((void**)&pgf,pas,pbi);
    437     if ( hr != S_OK )
    438         return NULL;
    439     hr = IGetFrame_Begin( pgf, si.dwStart, si.dwLength, 1000 );
    440     if ( hr != S_OK )
    441     {
    442         IGetFrame_Release( pgf );
    443         return NULL;
    444     }
    445 
    446     return pgf;
    447 }
    448 
    449 /***********************************************************************
    450  *      AVIStreamGetFrame (AVIFIL32.@)
     425        IGetFrame*      pgf;
     426        HRESULT         hr;
     427        AVISTREAMINFOW  si;
     428
     429        FIXME("(%p,%p)\n",pas,pbi);
     430
     431        hr = IAVIStream_Info(pas,&si,sizeof(si));
     432        if (hr != S_OK)
     433                return NULL;
     434
     435        hr = AVIFILE_CreateIGetFrame((void**)&pgf,pas,pbi);
     436        if ( hr != S_OK )
     437                return NULL;
     438        hr = IGetFrame_Begin( pgf, si.dwStart, si.dwLength, 1000 );
     439        if ( hr != S_OK )
     440        {
     441                IGetFrame_Release( pgf );
     442                return NULL;
     443        }
     444
     445        return pgf;
     446}
     447
     448/***********************************************************************
     449 *              AVIStreamGetFrame (AVIFIL32.@)
    451450 */
    452451LPVOID WINAPI AVIStreamGetFrame(PGETFRAME pgf, LONG lPos)
    453452{
    454     return IGetFrame_GetFrame(pgf,lPos);
    455 }
    456 
    457 /***********************************************************************
    458  *      AVIStreamGetFrameClose (AVIFIL32.@)
     453        return IGetFrame_GetFrame(pgf,lPos);
     454}
     455
     456/***********************************************************************
     457 *              AVIStreamGetFrameClose (AVIFIL32.@)
    459458 */
    460459HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pgf)
    461460{
    462     return IGetFrame_End(pgf);
    463 }
    464 
    465 /***********************************************************************
    466  *      AVIStreamOpenFromFileA (AVIFIL32.@)
     461        return IGetFrame_End(pgf);
     462}
     463
     464/***********************************************************************
     465 *              AVIStreamOpenFromFileA (AVIFIL32.@)
    467466 */
    468467HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM* ppas, LPCSTR szFile, DWORD fccType, LONG lParam, UINT uMode, CLSID* lpHandler)
    469468{
    470     WCHAR*  pwsz;
    471     HRESULT hr;
    472 
    473     pwsz = AVIFILE_strdupAtoW( szFile );
    474     if ( pwsz == NULL )
    475         return AVIERR_MEMORY;
    476     hr = AVIStreamOpenFromFileW(ppas,pwsz,fccType,lParam,uMode,lpHandler);
    477     HeapFree( AVIFILE_data.hHeap, 0, pwsz );
    478     return hr;
    479 }
    480 
    481 /***********************************************************************
    482  *      AVIStreamOpenFromFileW (AVIFIL32.@)
     469        WCHAR*  pwsz;
     470        HRESULT hr;
     471
     472        pwsz = AVIFILE_strdupAtoW( szFile );
     473        if ( pwsz == NULL )
     474                return AVIERR_MEMORY;
     475        hr = AVIStreamOpenFromFileW(ppas,pwsz,fccType,lParam,uMode,lpHandler);
     476        HeapFree( AVIFILE_data.hHeap, 0, pwsz );
     477        return hr;
     478}
     479
     480/***********************************************************************
     481 *              AVIStreamOpenFromFileW (AVIFIL32.@)
    483482 */
    484483HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM* ppas, LPCWSTR szFile, DWORD fccType, LONG lParam, UINT uMode, CLSID* lpHandler)
    485484{
    486     HRESULT hr;
    487     PAVIFILE    paf;
    488     AVIFILEINFOW    fi;
    489 
    490     *ppas = NULL;
    491     hr = AVIFileOpenW(&paf,szFile,uMode,lpHandler);
    492     if ( hr != S_OK )
    493         return hr;
    494     hr = AVIFileInfoW(paf,&fi,sizeof(AVIFILEINFOW));
    495     if ( hr == S_OK )
    496         hr = AVIFileGetStream(paf,ppas,fccType,lParam);
    497 
    498     IAVIFile_Release(paf);
    499 
    500     return hr;
    501 }
    502 
    503 /***********************************************************************
    504  *      AVIStreamCreate (AVIFIL32.@)
     485        HRESULT hr;
     486        PAVIFILE        paf;
     487        AVIFILEINFOW    fi;
     488
     489        *ppas = NULL;
     490        hr = AVIFileOpenW(&paf,szFile,uMode,lpHandler);
     491        if ( hr != S_OK )
     492                return hr;
     493        hr = AVIFileInfoW(paf,&fi,sizeof(AVIFILEINFOW));
     494        if ( hr == S_OK )
     495                hr = AVIFileGetStream(paf,ppas,fccType,lParam);
     496
     497        IAVIFile_Release(paf);
     498
     499        return hr;
     500}
     501
     502/***********************************************************************
     503 *              AVIStreamCreate (AVIFIL32.@)
    505504 */
    506505HRESULT WINAPI AVIStreamCreate(PAVISTREAM* ppas, LONG lParam1, LONG lParam2, CLSID* lpHandler)
    507506{
    508     HRESULT hr;
    509     IClassFactory*  pcf;
    510 
    511     *ppas = NULL;
    512 
    513     if ( lpHandler == NULL )
    514     {
    515         hr = AVIFILE_DllGetClassObject(&CLSID_AVIFile,
    516                            &IID_IClassFactory,(void**)&pcf);
    517     }
    518     else
    519     {
    520         if ( !AVIFILE_data.fInitCOM )
    521             return E_UNEXPECTED;
    522         hr = CoGetClassObject(lpHandler,CLSCTX_INPROC_SERVER,
    523                       NULL,&IID_IClassFactory,(void**)&pcf);
    524     }
    525     if ( hr != S_OK )
    526         return hr;
    527 
    528     hr = IClassFactory_CreateInstance( pcf, NULL, &IID_IAVIStream,
    529                        (void**)ppas );
    530     IClassFactory_Release( pcf );
    531 
    532     if ( hr == S_OK )
    533     {
    534         hr = IAVIStream_Create((*ppas),lParam1,lParam2);
    535         if ( hr != S_OK )
    536         {
    537             IAVIStream_Release((*ppas));
    538             *ppas = NULL;
    539         }
    540     }
    541 
    542     return hr;
    543 }
    544 
    545 /***********************************************************************
    546  *      AVIMakeCompressedStream (AVIFIL32.@)
     507        HRESULT hr;
     508        IClassFactory*  pcf;
     509
     510        *ppas = NULL;
     511
     512        if ( lpHandler == NULL )
     513        {
     514                hr = AVIFILE_DllGetClassObject(&CLSID_AVIFile,
     515                                               &IID_IClassFactory,(void**)&pcf);
     516        }
     517        else
     518        {
     519                if ( !AVIFILE_data.fInitCOM )
     520                        return E_UNEXPECTED;
     521                hr = CoGetClassObject(lpHandler,CLSCTX_INPROC_SERVER,
     522                                      NULL,&IID_IClassFactory,(void**)&pcf);
     523        }
     524        if ( hr != S_OK )
     525                return hr;
     526
     527        hr = IClassFactory_CreateInstance( pcf, NULL, &IID_IAVIStream,
     528                                           (void**)ppas );
     529        IClassFactory_Release( pcf );
     530
     531        if ( hr == S_OK )
     532        {
     533                hr = IAVIStream_Create((*ppas),lParam1,lParam2);
     534                if ( hr != S_OK )
     535                {
     536                        IAVIStream_Release((*ppas));
     537                        *ppas = NULL;
     538                }
     539        }
     540
     541        return hr;
     542}
     543
     544/***********************************************************************
     545 *              AVIMakeCompressedStream (AVIFIL32.@)
    547546 */
    548547HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM ppsSource,AVICOMPRESSOPTIONS *aco,CLSID *pclsidHandler)
    549548{
    550     FIXME("(%p,%p,%p,%p)\n",ppsCompressed,ppsSource,aco,pclsidHandler);
    551     return E_FAIL;
    552 }
    553 
     549        FIXME("(%p,%p,%p,%p)\n",ppsCompressed,ppsSource,aco,pclsidHandler);
     550        return E_FAIL;
     551}
     552
Note: See TracChangeset for help on using the changeset viewer.