📄 api.c
字号:
ULONG WINAPI AVIStreamAddRef(PAVISTREAM pstream)
{
TRACE("(%p)\n", pstream);
if (pstream == NULL) {
ERR(": bad handle passed!\n");
return 0;
}
return IAVIStream_AddRef(pstream);
}
/***********************************************************************
* AVIStreamRelease (AVIFIL32.@)
* AVIStreamRelease (AVIFILE.161)
*/
ULONG WINAPI AVIStreamRelease(PAVISTREAM pstream)
{
TRACE("(%p)\n", pstream);
if (pstream == NULL) {
ERR(": bad handle passed!\n");
return 0;
}
return IAVIStream_Release(pstream);
}
/***********************************************************************
* AVIStreamCreate (AVIFIL32.@)
* AVIStreamCreate (AVIFILE.104)
*/
HRESULT WINAPI AVIStreamCreate(PAVISTREAM *ppavi, LONG lParam1, LONG lParam2,
LPCLSID pclsidHandler)
{
HRESULT hr;
TRACE("(%p,0x%08X,0x%08X,%s)\n", ppavi, lParam1, lParam2,
debugstr_guid(pclsidHandler));
if (ppavi == NULL)
return AVIERR_BADPARAM;
*ppavi = NULL;
if (pclsidHandler == NULL)
return AVIERR_UNSUPPORTED;
hr = CoCreateInstance(pclsidHandler, NULL, CLSCTX_INPROC, &IID_IAVIStream, (LPVOID*)ppavi);
if (FAILED(hr) || *ppavi == NULL)
return hr;
hr = IAVIStream_Create(*ppavi, lParam1, lParam2);
if (FAILED(hr)) {
IAVIStream_Release(*ppavi);
*ppavi = NULL;
}
return hr;
}
/***********************************************************************
* AVIStreamInfo (AVIFIL32.@)
* AVIStreamInfoA (AVIFIL32.@)
* AVIStreamInfo (AVIFILE.162)
*/
HRESULT WINAPI AVIStreamInfoA(PAVISTREAM pstream, LPAVISTREAMINFOA asi,
LONG size)
{
AVISTREAMINFOW asiw;
HRESULT hres;
TRACE("(%p,%p,%d)\n", pstream, asi, size);
if (pstream == NULL)
return AVIERR_BADHANDLE;
if ((DWORD)size < sizeof(AVISTREAMINFOA))
return AVIERR_BADSIZE;
hres = IAVIStream_Info(pstream, &asiw, sizeof(asiw));
memcpy(asi, &asiw, sizeof(asiw) - sizeof(asiw.szName));
WideCharToMultiByte(CP_ACP, 0, asiw.szName, -1, asi->szName,
sizeof(asi->szName), NULL, NULL);
asi->szName[sizeof(asi->szName) - 1] = 0;
return hres;
}
/***********************************************************************
* AVIStreamInfoW (AVIFIL32.@)
*/
HRESULT WINAPI AVIStreamInfoW(PAVISTREAM pstream, LPAVISTREAMINFOW asi,
LONG size)
{
TRACE("(%p,%p,%d)\n", pstream, asi, size);
if (pstream == NULL)
return AVIERR_BADHANDLE;
return IAVIStream_Info(pstream, asi, size);
}
/***********************************************************************
* AVIStreamFindSample (AVIFIL32.@)
* AVIStreamFindSample (AVIFILE.163)
*/
HRESULT WINAPI AVIStreamFindSample(PAVISTREAM pstream, LONG pos, DWORD flags)
{
TRACE("(%p,%d,0x%X)\n", pstream, pos, flags);
if (pstream == NULL)
return -1;
return IAVIStream_FindSample(pstream, pos, flags);
}
/***********************************************************************
* AVIStreamReadFormat (AVIFIL32.@)
* AVIStreamReadFormat (AVIFILE.164)
*/
HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM pstream, LONG pos,
LPVOID format, LPLONG formatsize)
{
TRACE("(%p,%d,%p,%p)\n", pstream, pos, format, formatsize);
if (pstream == NULL)
return AVIERR_BADHANDLE;
return IAVIStream_ReadFormat(pstream, pos, format, formatsize);
}
/***********************************************************************
* AVIStreamSetFormat (AVIFIL32.@)
* AVIStreamSetFormat (AVIFILE.169)
*/
HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM pstream, LONG pos,
LPVOID format, LONG formatsize)
{
TRACE("(%p,%d,%p,%d)\n", pstream, pos, format, formatsize);
if (pstream == NULL)
return AVIERR_BADHANDLE;
return IAVIStream_SetFormat(pstream, pos, format, formatsize);
}
/***********************************************************************
* AVIStreamRead (AVIFIL32.@)
* AVIStreamRead (AVIFILE.167)
*/
HRESULT WINAPI AVIStreamRead(PAVISTREAM pstream, LONG start, LONG samples,
LPVOID buffer, LONG buffersize,
LPLONG bytesread, LPLONG samplesread)
{
TRACE("(%p,%d,%d,%p,%d,%p,%p)\n", pstream, start, samples, buffer,
buffersize, bytesread, samplesread);
if (pstream == NULL)
return AVIERR_BADHANDLE;
return IAVIStream_Read(pstream, start, samples, buffer, buffersize,
bytesread, samplesread);
}
/***********************************************************************
* AVIStreamWrite (AVIFIL32.@)
* AVIStreamWrite (AVIFILE.168)
*/
HRESULT WINAPI AVIStreamWrite(PAVISTREAM pstream, LONG start, LONG samples,
LPVOID buffer, LONG buffersize, DWORD flags,
LPLONG sampwritten, LPLONG byteswritten)
{
TRACE("(%p,%d,%d,%p,%d,0x%X,%p,%p)\n", pstream, start, samples, buffer,
buffersize, flags, sampwritten, byteswritten);
if (pstream == NULL)
return AVIERR_BADHANDLE;
return IAVIStream_Write(pstream, start, samples, buffer, buffersize,
flags, sampwritten, byteswritten);
}
/***********************************************************************
* AVIStreamReadData (AVIFIL32.@)
* AVIStreamReadData (AVIFILE.165)
*/
HRESULT WINAPI AVIStreamReadData(PAVISTREAM pstream, DWORD fcc, LPVOID lp,
LPLONG lpread)
{
TRACE("(%p,'%4.4s',%p,%p)\n", pstream, (char*)&fcc, lp, lpread);
if (pstream == NULL)
return AVIERR_BADHANDLE;
return IAVIStream_ReadData(pstream, fcc, lp, lpread);
}
/***********************************************************************
* AVIStreamWriteData (AVIFIL32.@)
* AVIStreamWriteData (AVIFILE.166)
*/
HRESULT WINAPI AVIStreamWriteData(PAVISTREAM pstream, DWORD fcc, LPVOID lp,
LONG size)
{
TRACE("(%p,'%4.4s',%p,%d)\n", pstream, (char*)&fcc, lp, size);
if (pstream == NULL)
return AVIERR_BADHANDLE;
return IAVIStream_WriteData(pstream, fcc, lp, size);
}
/***********************************************************************
* AVIStreamGetFrameOpen (AVIFIL32.@)
* AVIStreamGetFrameOpen (AVIFILE.112)
*/
PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM pstream,
LPBITMAPINFOHEADER lpbiWanted)
{
PGETFRAME pg = NULL;
TRACE("(%p,%p)\n", pstream, lpbiWanted);
if (FAILED(IAVIStream_QueryInterface(pstream, &IID_IGetFrame, (LPVOID*)&pg)) ||
pg == NULL) {
pg = AVIFILE_CreateGetFrame(pstream);
if (pg == NULL)
return NULL;
}
if (FAILED(IGetFrame_SetFormat(pg, lpbiWanted, NULL, 0, 0, -1, -1))) {
IGetFrame_Release(pg);
return NULL;
}
return pg;
}
/***********************************************************************
* AVIStreamGetFrame (AVIFIL32.@)
* AVIStreamGetFrame (AVIFILE.110)
*/
LPVOID WINAPI AVIStreamGetFrame(PGETFRAME pg, LONG pos)
{
TRACE("(%p,%d)\n", pg, pos);
if (pg == NULL)
return NULL;
return IGetFrame_GetFrame(pg, pos);
}
/***********************************************************************
* AVIStreamGetFrameClose (AVIFIL32.@)
* AVIStreamGetFrameClose (AVIFILE.111)
*/
HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME pg)
{
TRACE("(%p)\n", pg);
if (pg != NULL)
return IGetFrame_Release(pg);
return 0;
}
/***********************************************************************
* AVIMakeCompressedStream (AVIFIL32.@)
*/
HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,
PAVISTREAM psSource,
LPAVICOMPRESSOPTIONS aco,
LPCLSID pclsidHandler)
{
AVISTREAMINFOW asiw;
CHAR szRegKey[25];
CHAR szValue[100];
CLSID clsidHandler;
HRESULT hr;
LONG size = sizeof(szValue);
TRACE("(%p,%p,%p,%s)\n", ppsCompressed, psSource, aco,
debugstr_guid(pclsidHandler));
if (ppsCompressed == NULL)
return AVIERR_BADPARAM;
if (psSource == NULL)
return AVIERR_BADHANDLE;
*ppsCompressed = NULL;
/* if no handler given get default ones based on streamtype */
if (pclsidHandler == NULL) {
hr = IAVIStream_Info(psSource, &asiw, sizeof(asiw));
if (FAILED(hr))
return hr;
wsprintfA(szRegKey, "AVIFile\\Compressors\\%4.4s", (char*)&asiw.fccType);
if (RegQueryValueA(HKEY_CLASSES_ROOT, szRegKey, szValue, &size) != ERROR_SUCCESS)
return AVIERR_UNSUPPORTED;
if (AVIFILE_CLSIDFromString(szValue, &clsidHandler) != S_OK)
return AVIERR_UNSUPPORTED;
} else
memcpy(&clsidHandler, pclsidHandler, sizeof(clsidHandler));
hr = CoCreateInstance(&clsidHandler, NULL, CLSCTX_INPROC, &IID_IAVIStream, (LPVOID*)ppsCompressed);
if (FAILED(hr) || *ppsCompressed == NULL)
return hr;
hr = IAVIStream_Create(*ppsCompressed, (LPARAM)psSource, (LPARAM)aco);
if (FAILED(hr)) {
IAVIStream_Release(*ppsCompressed);
*ppsCompressed = NULL;
}
return hr;
}
/***********************************************************************
* AVIMakeFileFromStreams (AVIFIL32.@)
*/
HRESULT WINAPI AVIMakeFileFromStreams(PAVIFILE *ppfile, int nStreams,
PAVISTREAM *ppStreams)
{
TRACE("(%p,%d,%p)\n", ppfile, nStreams, ppStreams);
if (nStreams < 0 || ppfile == NULL || ppStreams == NULL)
return AVIERR_BADPARAM;
*ppfile = AVIFILE_CreateAVITempFile(nStreams, ppStreams);
if (*ppfile == NULL)
return AVIERR_MEMORY;
return AVIERR_OK;
}
/***********************************************************************
* AVIStreamOpenFromFile (AVIFIL32.@)
* AVIStreamOpenFromFileA (AVIFIL32.@)
* AVIStreamOpenFromFile (AVIFILE.103)
*/
HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM *ppavi, LPCSTR szFile,
DWORD fccType, LONG lParam,
UINT mode, LPCLSID pclsidHandler)
{
PAVIFILE pfile = NULL;
HRESULT hr;
TRACE("(%p,%s,'%4.4s',%d,0x%X,%s)\n", ppavi, debugstr_a(szFile),
(char*)&fccType, lParam, mode, debugstr_guid(pclsidHandler));
if (ppavi == NULL || szFile == NULL)
return AVIERR_BADPARAM;
*ppavi = NULL;
hr = AVIFileOpenA(&pfile, szFile, mode, pclsidHandler);
if (FAILED(hr) || pfile == NULL)
return hr;
hr = IAVIFile_GetStream(pfile, ppavi, fccType, lParam);
IAVIFile_Release(pfile);
return hr;
}
/***********************************************************************
* AVIStreamOpenFromFileW (AVIFIL32.@)
*/
HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM *ppavi, LPCWSTR szFile,
DWORD fccType, LONG lParam,
UINT mode, LPCLSID pclsidHandler)
{
PAVIFILE pfile = NULL;
HRESULT hr;
TRACE("(%p,%s,'%4.4s',%d,0x%X,%s)\n", ppavi, debugstr_w(szFile),
(char*)&fccType, lParam, mode, debugstr_guid(pclsidHandler));
if (ppavi == NULL || szFile == NULL)
return AVIERR_BADPARAM;
*ppavi = NULL;
hr = AVIFileOpenW(&pfile, szFile, mode, pclsidHandler);
if (FAILED(hr) || pfile == NULL)
return hr;
hr = IAVIFile_GetStream(pfile, ppavi, fccType, lParam);
IAVIFile_Release(pfile);
return hr;
}
/***********************************************************************
* AVIStreamBeginStreaming (AVIFIL32.@)
*/
LONG WINAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate)
{
IAVIStreaming* pstream = NULL;
HRESULT hr;
TRACE("(%p,%d,%d,%d)\n", pavi, lStart, lEnd, lRate);
if (pavi == NULL)
return AVIERR_BADHANDLE;
hr = IAVIStream_QueryInterface(pavi, &IID_IAVIStreaming, (LPVOID*)&pstream);
if (SUCCEEDED(hr) && pstream != NULL) {
hr = IAVIStreaming_Begin(pstream, lStart, lEnd, lRate);
IAVIStreaming_Release(pstream);
} else
hr = AVIERR_OK;
return hr;
}
/***********************************************************************
* AVIStreamEndStreaming (AVIFIL32.@)
*/
LONG WINAPI AVIStreamEndStreaming(PAVISTREAM pavi)
{
IAVIStreaming* pstream = NULL;
HRESULT hr;
TRACE("(%p)\n", pavi);
hr = IAVIStream_QueryInterface(pavi, &IID_IAVIStreaming, (LPVOID*)&pstream);
if (SUCCEEDED(hr) && pstream != NULL) {
IAVIStreaming_End(pstream);
IAVIStreaming_Release(pstream);
}
return AVIERR_OK;
}
/***********************************************************************
* AVIStreamStart (AVIFILE.130)
* AVIStreamStart (AVIFIL32.@)
*/
LONG WINAPI AVIStreamStart(PAVISTREAM pstream)
{
AVISTREAMINFOW asiw;
TRACE("(%p)\n", pstream);
if (pstream == NULL)
return 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -