mirror of
https://github.com/reactos/reactos.git
synced 2024-12-31 19:42:51 +00:00
[AVIFIL32]
- Sync to Wine 1.3.37 svn path=/trunk/; revision=56162
This commit is contained in:
parent
81f40a88f1
commit
3238aafc17
38 changed files with 1011 additions and 1748 deletions
|
@ -19,7 +19,6 @@ add_library(avifil32 SHARED
|
|||
factory.c
|
||||
getframe.c
|
||||
icmstream.c
|
||||
regsvr.c
|
||||
tmpfile.c
|
||||
wavfile.c
|
||||
rsrc.rc
|
||||
|
|
|
@ -36,41 +36,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(avifile);
|
|||
|
||||
/***********************************************************************/
|
||||
|
||||
static HRESULT WINAPI ACMStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID *obj);
|
||||
static ULONG WINAPI ACMStream_fnAddRef(IAVIStream*iface);
|
||||
static ULONG WINAPI ACMStream_fnRelease(IAVIStream* iface);
|
||||
static HRESULT WINAPI ACMStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2);
|
||||
static HRESULT WINAPI ACMStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size);
|
||||
static LONG WINAPI ACMStream_fnFindSample(IAVIStream*iface,LONG pos,LONG flags);
|
||||
static HRESULT WINAPI ACMStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG *formatsize);
|
||||
static HRESULT WINAPI ACMStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize);
|
||||
static HRESULT WINAPI ACMStream_fnRead(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread);
|
||||
static HRESULT WINAPI ACMStream_fnWrite(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten);
|
||||
static HRESULT WINAPI ACMStream_fnDelete(IAVIStream*iface,LONG start,LONG samples);
|
||||
static HRESULT WINAPI ACMStream_fnReadData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG *lpread);
|
||||
static HRESULT WINAPI ACMStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size);
|
||||
static HRESULT WINAPI ACMStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
|
||||
|
||||
static const struct IAVIStreamVtbl iacmst = {
|
||||
ACMStream_fnQueryInterface,
|
||||
ACMStream_fnAddRef,
|
||||
ACMStream_fnRelease,
|
||||
ACMStream_fnCreate,
|
||||
ACMStream_fnInfo,
|
||||
ACMStream_fnFindSample,
|
||||
ACMStream_fnReadFormat,
|
||||
ACMStream_fnSetFormat,
|
||||
ACMStream_fnRead,
|
||||
ACMStream_fnWrite,
|
||||
ACMStream_fnDelete,
|
||||
ACMStream_fnReadData,
|
||||
ACMStream_fnWriteData,
|
||||
ACMStream_fnSetInfo
|
||||
};
|
||||
|
||||
typedef struct _IAVIStreamImpl {
|
||||
/* IUnknown stuff */
|
||||
const IAVIStreamVtbl *lpVtbl;
|
||||
IAVIStream IAVIStream_iface;
|
||||
LONG ref;
|
||||
|
||||
/* IAVIStream stuff */
|
||||
|
@ -102,34 +70,74 @@ typedef struct _IAVIStreamImpl {
|
|||
&__bytes, ACM_STREAMSIZEF_DESTINATION); \
|
||||
*(a) = __bytes / This->lpInFormat->nBlockAlign; } while(0)
|
||||
|
||||
static HRESULT AVIFILE_OpenCompressor(IAVIStreamImpl *This);
|
||||
|
||||
HRESULT AVIFILE_CreateACMStream(REFIID riid, LPVOID *ppv)
|
||||
static HRESULT AVIFILE_OpenCompressor(IAVIStreamImpl *This)
|
||||
{
|
||||
IAVIStreamImpl *pstream;
|
||||
HRESULT hr;
|
||||
HRESULT hr;
|
||||
|
||||
assert(riid != NULL && ppv != NULL);
|
||||
/* pre-conditions */
|
||||
assert(This != NULL);
|
||||
assert(This->pStream != NULL);
|
||||
|
||||
*ppv = NULL;
|
||||
if (This->has != NULL)
|
||||
return AVIERR_OK;
|
||||
|
||||
pstream = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAVIStreamImpl));
|
||||
if (pstream == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
if (This->lpInFormat == NULL) {
|
||||
/* decode or encode the data from pStream */
|
||||
hr = AVIStreamFormatSize(This->pStream, This->sInfo.dwStart, &This->cbInFormat);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
This->lpInFormat = HeapAlloc(GetProcessHeap(), 0, This->cbInFormat);
|
||||
if (This->lpInFormat == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
|
||||
pstream->lpVtbl = &iacmst;
|
||||
hr = IAVIStream_ReadFormat(This->pStream, This->sInfo.dwStart,
|
||||
This->lpInFormat, &This->cbInFormat);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
hr = IAVIStream_QueryInterface((IAVIStream*)pstream, riid, ppv);
|
||||
if (FAILED(hr))
|
||||
HeapFree(GetProcessHeap(), 0, pstream);
|
||||
if (This->lpOutFormat == NULL) {
|
||||
/* we must decode to default format */
|
||||
This->cbOutFormat = sizeof(PCMWAVEFORMAT);
|
||||
This->lpOutFormat = HeapAlloc(GetProcessHeap(), 0, This->cbOutFormat);
|
||||
if (This->lpOutFormat == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
|
||||
return hr;
|
||||
This->lpOutFormat->wFormatTag = WAVE_FORMAT_PCM;
|
||||
if (acmFormatSuggest(NULL, This->lpInFormat, This->lpOutFormat,
|
||||
This->cbOutFormat, ACM_FORMATSUGGESTF_WFORMATTAG) != S_OK)
|
||||
return AVIERR_NOCOMPRESSOR;
|
||||
}
|
||||
} else if (This->lpOutFormat == NULL)
|
||||
return AVIERR_ERROR; /* To what should I encode? */
|
||||
|
||||
if (acmStreamOpen(&This->has, NULL, This->lpInFormat, This->lpOutFormat,
|
||||
NULL, 0, 0, ACM_STREAMOPENF_NONREALTIME) != S_OK)
|
||||
return AVIERR_NOCOMPRESSOR;
|
||||
|
||||
/* update AVISTREAMINFO structure */
|
||||
This->sInfo.dwSampleSize = This->lpOutFormat->nBlockAlign;
|
||||
This->sInfo.dwScale = This->lpOutFormat->nBlockAlign;
|
||||
This->sInfo.dwRate = This->lpOutFormat->nAvgBytesPerSec;
|
||||
This->sInfo.dwQuality = (DWORD)ICQUALITY_DEFAULT;
|
||||
SetRectEmpty(&This->sInfo.rcFrame);
|
||||
|
||||
/* convert positions and sizes to output format */
|
||||
CONVERT_STREAM_to_THIS(&This->sInfo.dwStart);
|
||||
CONVERT_STREAM_to_THIS(&This->sInfo.dwLength);
|
||||
CONVERT_STREAM_to_THIS(&This->sInfo.dwSuggestedBufferSize);
|
||||
|
||||
return AVIERR_OK;
|
||||
}
|
||||
|
||||
static inline IAVIStreamImpl *impl_from_IAVIStream(IAVIStream *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, IAVIStreamImpl, IAVIStream_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ACMStream_fnQueryInterface(IAVIStream *iface,
|
||||
REFIID refiid, LPVOID *obj)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%s,%p)\n", iface, debugstr_guid(refiid), obj);
|
||||
|
||||
|
@ -146,7 +154,7 @@ static HRESULT WINAPI ACMStream_fnQueryInterface(IAVIStream *iface,
|
|||
|
||||
static ULONG WINAPI ACMStream_fnAddRef(IAVIStream *iface)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
ULONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) -> %d\n", iface, ref);
|
||||
|
@ -160,7 +168,7 @@ static ULONG WINAPI ACMStream_fnAddRef(IAVIStream *iface)
|
|||
|
||||
static ULONG WINAPI ACMStream_fnRelease(IAVIStream* iface)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
ULONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) -> %d\n", iface, ref);
|
||||
|
@ -209,7 +217,7 @@ static ULONG WINAPI ACMStream_fnRelease(IAVIStream* iface)
|
|||
static HRESULT WINAPI ACMStream_fnCreate(IAVIStream *iface, LPARAM lParam1,
|
||||
LPARAM lParam2)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,0x%08lX,0x%08lX)\n", iface, lParam1, lParam2);
|
||||
|
||||
|
@ -262,7 +270,7 @@ static HRESULT WINAPI ACMStream_fnCreate(IAVIStream *iface, LPARAM lParam1,
|
|||
static HRESULT WINAPI ACMStream_fnInfo(IAVIStream *iface,LPAVISTREAMINFOW psi,
|
||||
LONG size)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%p,%d)\n", iface, psi, size);
|
||||
|
||||
|
@ -289,7 +297,7 @@ static HRESULT WINAPI ACMStream_fnInfo(IAVIStream *iface,LPAVISTREAMINFOW psi,
|
|||
static LONG WINAPI ACMStream_fnFindSample(IAVIStream *iface, LONG pos,
|
||||
LONG flags)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%d,0x%08X)\n",iface,pos,flags);
|
||||
|
||||
|
@ -317,7 +325,7 @@ static LONG WINAPI ACMStream_fnFindSample(IAVIStream *iface, LONG pos,
|
|||
static HRESULT WINAPI ACMStream_fnReadFormat(IAVIStream *iface, LONG pos,
|
||||
LPVOID format, LONG *formatsize)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%d,%p,%p)\n", iface, pos, format, formatsize);
|
||||
|
||||
|
@ -352,7 +360,7 @@ static HRESULT WINAPI ACMStream_fnReadFormat(IAVIStream *iface, LONG pos,
|
|||
static HRESULT WINAPI ACMStream_fnSetFormat(IAVIStream *iface, LONG pos,
|
||||
LPVOID format, LONG formatsize)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
HRESULT hr;
|
||||
|
||||
|
@ -399,7 +407,7 @@ static HRESULT WINAPI ACMStream_fnRead(IAVIStream *iface, LONG start,
|
|||
LONG buffersize, LPLONG bytesread,
|
||||
LPLONG samplesread)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
HRESULT hr;
|
||||
DWORD size;
|
||||
|
@ -520,7 +528,7 @@ static HRESULT WINAPI ACMStream_fnWrite(IAVIStream *iface, LONG start,
|
|||
LPLONG sampwritten,
|
||||
LPLONG byteswritten)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
HRESULT hr;
|
||||
ULONG size;
|
||||
|
@ -613,7 +621,7 @@ static HRESULT WINAPI ACMStream_fnWrite(IAVIStream *iface, LONG start,
|
|||
static HRESULT WINAPI ACMStream_fnDelete(IAVIStream *iface, LONG start,
|
||||
LONG samples)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%d,%d)\n", iface, start, samples);
|
||||
|
||||
|
@ -647,7 +655,7 @@ static HRESULT WINAPI ACMStream_fnDelete(IAVIStream *iface, LONG start,
|
|||
static HRESULT WINAPI ACMStream_fnReadData(IAVIStream *iface, DWORD fcc,
|
||||
LPVOID lp, LPLONG lpread)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,0x%08X,%p,%p)\n", iface, fcc, lp, lpread);
|
||||
|
||||
|
@ -659,7 +667,7 @@ static HRESULT WINAPI ACMStream_fnReadData(IAVIStream *iface, DWORD fcc,
|
|||
static HRESULT WINAPI ACMStream_fnWriteData(IAVIStream *iface, DWORD fcc,
|
||||
LPVOID lp, LONG size)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,0x%08x,%p,%d)\n", iface, fcc, lp, size);
|
||||
|
||||
|
@ -676,63 +684,41 @@ static HRESULT WINAPI ACMStream_fnSetInfo(IAVIStream *iface,
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
/***********************************************************************/
|
||||
static const struct IAVIStreamVtbl iacmst = {
|
||||
ACMStream_fnQueryInterface,
|
||||
ACMStream_fnAddRef,
|
||||
ACMStream_fnRelease,
|
||||
ACMStream_fnCreate,
|
||||
ACMStream_fnInfo,
|
||||
ACMStream_fnFindSample,
|
||||
ACMStream_fnReadFormat,
|
||||
ACMStream_fnSetFormat,
|
||||
ACMStream_fnRead,
|
||||
ACMStream_fnWrite,
|
||||
ACMStream_fnDelete,
|
||||
ACMStream_fnReadData,
|
||||
ACMStream_fnWriteData,
|
||||
ACMStream_fnSetInfo
|
||||
};
|
||||
|
||||
static HRESULT AVIFILE_OpenCompressor(IAVIStreamImpl *This)
|
||||
HRESULT AVIFILE_CreateACMStream(REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
HRESULT hr;
|
||||
IAVIStreamImpl *pstream;
|
||||
HRESULT hr;
|
||||
|
||||
/* pre-conditions */
|
||||
assert(This != NULL);
|
||||
assert(This->pStream != NULL);
|
||||
assert(riid != NULL && ppv != NULL);
|
||||
|
||||
if (This->has != NULL)
|
||||
return AVIERR_OK;
|
||||
*ppv = NULL;
|
||||
|
||||
if (This->lpInFormat == NULL) {
|
||||
/* decode or encode the data from pStream */
|
||||
hr = AVIStreamFormatSize(This->pStream, This->sInfo.dwStart, &This->cbInFormat);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
This->lpInFormat = HeapAlloc(GetProcessHeap(), 0, This->cbInFormat);
|
||||
if (This->lpInFormat == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
pstream = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAVIStreamImpl));
|
||||
if (pstream == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
|
||||
hr = IAVIStream_ReadFormat(This->pStream, This->sInfo.dwStart,
|
||||
This->lpInFormat, &This->cbInFormat);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
pstream->IAVIStream_iface.lpVtbl = &iacmst;
|
||||
|
||||
if (This->lpOutFormat == NULL) {
|
||||
/* we must decode to default format */
|
||||
This->cbOutFormat = sizeof(PCMWAVEFORMAT);
|
||||
This->lpOutFormat = HeapAlloc(GetProcessHeap(), 0, This->cbOutFormat);
|
||||
if (This->lpOutFormat == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
hr = IAVIStream_QueryInterface(&pstream->IAVIStream_iface, riid, ppv);
|
||||
if (FAILED(hr))
|
||||
HeapFree(GetProcessHeap(), 0, pstream);
|
||||
|
||||
This->lpOutFormat->wFormatTag = WAVE_FORMAT_PCM;
|
||||
if (acmFormatSuggest(NULL, This->lpInFormat, This->lpOutFormat,
|
||||
This->cbOutFormat, ACM_FORMATSUGGESTF_WFORMATTAG) != S_OK)
|
||||
return AVIERR_NOCOMPRESSOR;
|
||||
}
|
||||
} else if (This->lpOutFormat == NULL)
|
||||
return AVIERR_ERROR; /* To what should I encode? */
|
||||
|
||||
if (acmStreamOpen(&This->has, NULL, This->lpInFormat, This->lpOutFormat,
|
||||
NULL, 0, 0, ACM_STREAMOPENF_NONREALTIME) != S_OK)
|
||||
return AVIERR_NOCOMPRESSOR;
|
||||
|
||||
/* update AVISTREAMINFO structure */
|
||||
This->sInfo.dwSampleSize = This->lpOutFormat->nBlockAlign;
|
||||
This->sInfo.dwScale = This->lpOutFormat->nBlockAlign;
|
||||
This->sInfo.dwRate = This->lpOutFormat->nAvgBytesPerSec;
|
||||
This->sInfo.dwQuality = (DWORD)ICQUALITY_DEFAULT;
|
||||
SetRectEmpty(&This->sInfo.rcFrame);
|
||||
|
||||
/* convert positions and sizes to output format */
|
||||
CONVERT_STREAM_to_THIS(&This->sInfo.dwStart);
|
||||
CONVERT_STREAM_to_THIS(&This->sInfo.dwLength);
|
||||
CONVERT_STREAM_to_THIS(&This->sInfo.dwSuggestedBufferSize);
|
||||
|
||||
return AVIERR_OK;
|
||||
return hr;
|
||||
}
|
||||
|
|
|
@ -995,6 +995,7 @@ HRESULT WINAPI AVIBuildFilterA(LPSTR szFilter, LONG cbFilter, BOOL fSaving)
|
|||
*/
|
||||
HRESULT WINAPI AVIBuildFilterW(LPWSTR szFilter, LONG cbFilter, BOOL fSaving)
|
||||
{
|
||||
static const WCHAR all_files[] = { '*','.','*',0,0 };
|
||||
static const WCHAR szClsid[] = {'C','L','S','I','D',0};
|
||||
static const WCHAR szExtensionFmt[] = {';','*','.','%','s',0};
|
||||
static const WCHAR szAVIFileExtensions[] =
|
||||
|
@ -1023,8 +1024,8 @@ HRESULT WINAPI AVIBuildFilterW(LPWSTR szFilter, LONG cbFilter, BOOL fSaving)
|
|||
|
||||
/*
|
||||
* 1. iterate over HKEY_CLASSES_ROOT\\AVIFile\\Extensions and collect
|
||||
* extensions and CLSID's
|
||||
* 2. iterate over collected CLSID's and copy its description and its
|
||||
* extensions and CLSIDs
|
||||
* 2. iterate over collected CLSIDs and copy its description and its
|
||||
* extensions to szFilter if it fits
|
||||
*
|
||||
* First filter is named "All multimedia files" and its filter is a
|
||||
|
@ -1117,22 +1118,12 @@ HRESULT WINAPI AVIBuildFilterW(LPWSTR szFilter, LONG cbFilter, BOOL fSaving)
|
|||
|
||||
/* add "All files" "*.*" filter if enough space left */
|
||||
size = LoadStringW(AVIFILE_hModule, IDS_ALLFILES,
|
||||
szAllFiles, sizeof(szAllFiles)/sizeof(szAllFiles[0])) + 1;
|
||||
szAllFiles, (sizeof(szAllFiles) - sizeof(all_files))/sizeof(WCHAR)) + 1;
|
||||
memcpy( szAllFiles + size, all_files, sizeof(all_files) );
|
||||
size += sizeof(all_files) / sizeof(WCHAR);
|
||||
|
||||
if (cbFilter > size) {
|
||||
int i;
|
||||
|
||||
/* replace '@' with \000 to separate description of filter */
|
||||
for (i = 0; i < size && szAllFiles[i] != 0; i++) {
|
||||
if (szAllFiles[i] == '@') {
|
||||
szAllFiles[i] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(szFilter, szAllFiles, size * sizeof(szAllFiles[0]));
|
||||
szFilter += size;
|
||||
szFilter[0] = 0;
|
||||
|
||||
return AVIERR_OK;
|
||||
} else {
|
||||
szFilter[0] = 0;
|
||||
|
@ -2150,9 +2141,7 @@ HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM pstream, LPAVISTREAMINFOA asi,
|
|||
|
||||
TRACE("(%p,%p,%d)\n", pstream, asi, size);
|
||||
|
||||
if (pstream == NULL)
|
||||
return AVIERR_BADHANDLE;
|
||||
if ((DWORD)size < sizeof(AVISTREAMINFOA))
|
||||
if (size >= 0 && size < sizeof(AVISTREAMINFOA))
|
||||
return AVIERR_BADSIZE;
|
||||
|
||||
memcpy(&asiw, asi, sizeof(asiw) - sizeof(asiw.szName));
|
||||
|
@ -2173,6 +2162,9 @@ HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM pstream, LPAVISTREAMINFOW asi,
|
|||
|
||||
TRACE("(%p,%p,%d)\n", pstream, asi, size);
|
||||
|
||||
if (size >= 0 && size < sizeof(AVISTREAMINFOA))
|
||||
return AVIERR_BADSIZE;
|
||||
|
||||
hr = IAVIStream_QueryInterface(pstream, &IID_IAVIEditStream,(LPVOID*)&pEdit);
|
||||
if (SUCCEEDED(hr) && pEdit != NULL) {
|
||||
hr = IAVIEditStream_SetInfo(pEdit, asi, size);
|
||||
|
|
|
@ -1339,7 +1339,7 @@ static HRESULT WINAPI IAVIStream_fnWriteData(IAVIStream *iface, DWORD fcc,
|
|||
|
||||
/* ckid,size => 2 * sizeof(DWORD) */
|
||||
dwPos += 2 * sizeof(DWORD) + size;
|
||||
if (size >= This->paf->dwMoviChunkPos - 2 * sizeof(DWORD))
|
||||
if (dwPos >= This->paf->dwMoviChunkPos - 2 * sizeof(DWORD))
|
||||
return AVIERR_UNSUPPORTED; /* not enough space left */
|
||||
}
|
||||
|
||||
|
@ -1746,10 +1746,10 @@ static HRESULT AVIFILE_LoadFile(IAVIFileImpl *This)
|
|||
case ckidSTREAMHEADER:
|
||||
{
|
||||
static const WCHAR streamTypeFmt[] = {'%','4','.','4','h','s',0};
|
||||
static const WCHAR streamNameFmt[] = {'%','s',' ','%','s',' ','#','%','d',0};
|
||||
|
||||
AVIStreamHeader streamHdr;
|
||||
WCHAR szType[25];
|
||||
WCHAR streamNameFmt[25];
|
||||
UINT count;
|
||||
LONG n = ck.cksize;
|
||||
|
||||
|
@ -1796,8 +1796,6 @@ static HRESULT AVIFILE_LoadFile(IAVIFileImpl *This)
|
|||
|
||||
memset(pStream->sInfo.szName, 0, sizeof(pStream->sInfo.szName));
|
||||
|
||||
LoadStringW(AVIFILE_hModule, IDS_AVISTREAMFORMAT, streamNameFmt, sizeof(streamNameFmt)/sizeof(streamNameFmt[0]));
|
||||
|
||||
/* FIXME: avoid overflow -- better use wsnprintfW, which doesn't exists ! */
|
||||
wsprintfW(pStream->sInfo.szName, streamNameFmt,
|
||||
AVIFILE_BasenameW(This->szFileName), szType, count);
|
||||
|
|
45
reactos/dll/win32/avifil32/avifile.rgs
Normal file
45
reactos/dll/win32/avifil32/avifile.rgs
Normal file
|
@ -0,0 +1,45 @@
|
|||
HKCR
|
||||
{
|
||||
NoRemove CLSID
|
||||
{
|
||||
'{00020000-0000-0000-C000-000000000046}' = s 'Microsoft AVI Files'
|
||||
{
|
||||
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
|
||||
}
|
||||
'{00020001-0000-0000-C000-000000000046}' = s 'AVI Compressed Stream'
|
||||
{
|
||||
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
|
||||
}
|
||||
'{00020003-0000-0000-C000-000000000046}' = s 'Microsoft Wave File'
|
||||
{
|
||||
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
|
||||
}
|
||||
'{0002000d-0000-0000-C000-000000000046}' = s 'IAVIStream & IAVIFile Proxy'
|
||||
{
|
||||
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
|
||||
}
|
||||
'{0002000f-0000-0000-C000-000000000046}' = s 'ACM Compressed Audio Stream'
|
||||
{
|
||||
InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' }
|
||||
}
|
||||
}
|
||||
NoRemove AVIFile
|
||||
{
|
||||
Compressors
|
||||
{
|
||||
auds = s '{0002000F-0000-0000-C000-000000000046}'
|
||||
vids = s '{00020001-0000-0000-C000-000000000046}'
|
||||
}
|
||||
Extensions
|
||||
{
|
||||
AU = s '{00020003-0000-0000-C000-000000000046}'
|
||||
AVI = s '{00020000-0000-0000-C000-000000000046}'
|
||||
WAV = s '{00020003-0000-0000-C000-000000000046}'
|
||||
}
|
||||
RIFFHandlers
|
||||
{
|
||||
AVI = s '{00020000-0000-0000-C000-000000000046}'
|
||||
WAVE = s '{00020003-0000-0000-C000-000000000046}'
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2002 Michael GГјnnewig
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,38 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 236, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Възможности на уплътняването"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Избер на поток:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "Въз&можности...",IDC_OPTIONS,170,17,60,14
|
||||
AUTOCHECKBOX "&разслояване през",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "кадъра",-1,129,43,36,9
|
||||
LTEXT "Текущ формат:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26 /*Неразбираем низ*/
|
||||
DEFPUSHBUTTON "Добре",IDOK,170,42,60,14
|
||||
PUSHBUTTON "Отказ",IDCANCEL,170,61,60,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Вълнoва крива: %s"
|
||||
IDS_WAVEFILETYPE "Вълнова крива"
|
||||
IDS_ALLMULTIMEDIA "Всички мултимедийни файлове"
|
||||
IDS_ALLFILES "Всички файлове (*.*)@*.*"
|
||||
IDS_VIDEO "видео"
|
||||
IDS_AUDIO "звук"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Поздрабираното от Wine приложение за AVI"
|
||||
IDS_UNCOMPRESSED "неуплътнен"
|
||||
IDS_WAVESTREAMFORMAT ""
|
||||
IDS_WAVEFILETYPE ""
|
||||
IDS_ALLMULTIMEDIA ""
|
||||
IDS_ALLFILES "Всички файлове (*.*)"
|
||||
IDS_VIDEO ""
|
||||
IDS_AUDIO ""
|
||||
IDS_AVIFILETYPE ""
|
||||
IDS_UNCOMPRESSED ""
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION ""
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "",-1,129,43,36,9
|
||||
LTEXT "&Печат",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Отмени",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
/* Hey, Emacs, open this file with -*- coding: cp1250 -*-
|
||||
/*
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* Czech resources for avifile
|
||||
* Copyright 2004 David Kredba
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -24,35 +22,32 @@
|
|||
|
||||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
|
||||
/* Czech strings in CP1250 */
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT ""
|
||||
IDS_WAVEFILETYPE ""
|
||||
IDS_ALLMULTIMEDIA "Všechny soubory multimédií"
|
||||
IDS_ALLFILES "Všechny soubory (*.*)"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "audio"
|
||||
IDS_AVIFILETYPE "Wine AVI-default-filehandler"
|
||||
IDS_UNCOMPRESSED "nekomprimovaný"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Nastavení komprese"
|
||||
CAPTION "Nastavení komprese"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Vyber datový proud:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "&Vyber datový proud:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "V&olby...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "Prolož&it každých",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
AUTOCHECKBOX "Prolož&it každých",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "rámcù",-1,129,43,36,9
|
||||
LTEXT "Souèasný formát:",-1,3,56,73,9
|
||||
LTEXT "Zbývající místo",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "Budiž",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Zrušit",IDCANCEL,170,61,50,14
|
||||
LTEXT "rámců",-1,129,43,36,9
|
||||
LTEXT "Současný formát:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Storno",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveform: %s"
|
||||
IDS_WAVEFILETYPE "Waveform"
|
||||
IDS_ALLMULTIMEDIA "Všechny soubory multimédií"
|
||||
IDS_ALLFILES "Všechny soubory (*.*)@*.*"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "audio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-default-filehandler"
|
||||
IDS_UNCOMPRESSED "nekomprimovaný"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright 2008 Jens Albretsen
|
||||
* 2010 Thomas Larsen
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -19,37 +20,37 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Komprimerings indstillinger"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Vælg stream:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "I&ndstillinger...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave hver",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "Billeder",-1,129,43,36,9
|
||||
LTEXT "Nuværende format:",-1,3,56,53,9
|
||||
LTEXT "Denne plads er til leje",IDC_FORMATTEXT,55,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Annuller",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Lydkurve: %s"
|
||||
IDS_WAVEFILETYPE "Lydkurve"
|
||||
IDS_ALLMULTIMEDIA "Alle multimedia filer"
|
||||
IDS_ALLFILES "Alle filer (*.*)@*.*"
|
||||
IDS_ALLFILES "#-#-#-#-# da.po (Wine) #-#-#-#-#\n\
|
||||
Alle filer (*.*)\n\
|
||||
#-#-#-#-# da.po (Wine) #-#-#-#-#\n\
|
||||
Alle Filer (*.*)"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "lyd"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-standard-filehandler"
|
||||
IDS_UNCOMPRESSED "ukomprimeret"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Komprimerings indstillinger"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Vælg stream:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Alternativer...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave hver",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "Billeder",-1,129,43,36,9
|
||||
LTEXT "Nuværende format:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Annuller",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
@ -18,37 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
#pragma code_page(65001)
|
||||
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
|
||||
|
||||
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Kurvenform: %s"
|
||||
IDS_WAVEFILETYPE "Kurvenform"
|
||||
IDS_ALLMULTIMEDIA "Alle Multimedia-Dateien"
|
||||
IDS_ALLFILES "Alle Dateien (*.*)"
|
||||
IDS_VIDEO "Video"
|
||||
IDS_AUDIO "Audio"
|
||||
IDS_AVIFILETYPE "Wine AVI-Standard-Dateibehandlungsroutine"
|
||||
IDS_UNCOMPRESSED "Unkomprimiert"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Komprimierungsoptionen"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Wählen Sie die Eingangsdaten aus:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "&Wählen Sie die Eingangsdaten aus:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Optionen...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave alle",IDC_INTERLEAVE,3,42,75,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,81,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "Einzelbilder",-1,119,43,36,9
|
||||
LTEXT "Aktuelles Format:",-1,3,56,73,9
|
||||
LTEXT "Platzhalter",IDC_FORMATTEXT,75,56,90,26
|
||||
AUTOCHECKBOX "&Interleave alle",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "Einzelbilder",-1,129,43,36,9
|
||||
LTEXT "Aktuelles Format:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Abbrechen",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveform: %s"
|
||||
IDS_WAVEFILETYPE "Waveform"
|
||||
IDS_ALLMULTIMEDIA "Alle Multimedia-Dateien"
|
||||
IDS_ALLFILES "Alle Dateien (*.*)@*.*"
|
||||
IDS_VIDEO "Video"
|
||||
IDS_AUDIO "Audio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-Standard-Dateibehandlungsroutine"
|
||||
IDS_UNCOMPRESSED "Unkomprimiert"
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
|
@ -20,33 +22,32 @@
|
|||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Compress options"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Choose a stream:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Options...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "frames",-1,129,43,36,9
|
||||
LTEXT "Current format:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveform: %s"
|
||||
IDS_WAVEFILETYPE "Waveform"
|
||||
IDS_ALLMULTIMEDIA "All multimedia files"
|
||||
IDS_ALLFILES "All files (*.*)@*.*"
|
||||
IDS_ALLFILES "All files (*.*)"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "audio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-default-filehandler"
|
||||
IDS_UNCOMPRESSED "uncompressed"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Compress options"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Choose a stream:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Options...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "frames",-1,129,43,36,9
|
||||
LTEXT "Current format:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2003 José Manuel Ferrer Ortiz
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,35 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opciones de compresión"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Elija un stream:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opciones...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave cada",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "cuadros",-1,129,43,36,9
|
||||
LTEXT "Formato actual:",-1,3,56,73,9
|
||||
LTEXT "Espacio en alquiler",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "Aceptar",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Cancelar",IDCANCEL,170,61,50,14
|
||||
END
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Formato de ondas: %s"
|
||||
IDS_WAVEFILETYPE "Formato de ondas"
|
||||
IDS_ALLMULTIMEDIA "Todos los archivos multimedia"
|
||||
IDS_ALLFILES "Todos los archivos (*.*)@*.*"
|
||||
IDS_VIDEO "vídeo"
|
||||
IDS_ALLFILES "Todos los archivos (*.*)"
|
||||
IDS_VIDEO "vídeo"
|
||||
IDS_AUDIO "audio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Manejador de archivo AVI por defecto de Wine"
|
||||
IDS_UNCOMPRESSED "sin compresión"
|
||||
IDS_UNCOMPRESSED "sin compresión"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opciones de compresión"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Elija un stream:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opciones...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave cada",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "cuadros",-1,129,43,36,9
|
||||
LTEXT "Formato actual:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "Aceptar",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Cancelar",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
/*
|
||||
* Avifil32
|
||||
* French language support
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
* Copyright 2003 Vincent Béron
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -22,38 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT
|
||||
|
||||
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Forme d'onde : %s"
|
||||
IDS_WAVEFILETYPE "Forme d'onde"
|
||||
IDS_ALLMULTIMEDIA "Tous les fichiers multimédia"
|
||||
IDS_ALLFILES "Tous les fichiers (*.*)"
|
||||
IDS_VIDEO "vidéo"
|
||||
IDS_AUDIO "audio"
|
||||
IDS_AVIFILETYPE "Gestionnaire de fichiers AVI par défaut de Wine"
|
||||
IDS_UNCOMPRESSED "non compressé"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Options de compression"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Sélectionnez un flux :",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "&Sélectionnez un flux :",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Options...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Imbriquer toutes les",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
AUTOCHECKBOX "&Imbriquer toutes les",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "images",-1,129,43,36,9
|
||||
LTEXT "Format actuel :",-1,3,56,73,9
|
||||
LTEXT "Cet espace est à louer",IDC_FORMATTEXT,75,56,90,26
|
||||
LTEXT "Format actuel :",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Annuler",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveform : %s"
|
||||
IDS_WAVEFILETYPE "Waveform"
|
||||
IDS_ALLMULTIMEDIA "Tous les fichiers multimédia"
|
||||
IDS_ALLFILES "Tous les fichiers (*.*)@*.*"
|
||||
IDS_VIDEO "vidéo"
|
||||
IDS_AUDIO "audio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Gestionnaire de fichiers AVI par défaut de Wine"
|
||||
IDS_UNCOMPRESSED "non compressé"
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2006 Andras Kovacs
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -20,33 +22,35 @@
|
|||
|
||||
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Tömörítési beállítások"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Válassuon folyamot:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opciók...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Beékel minden",IDC_INTERLEAVE,3,42,75,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,81,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "képkockát",-1,119,43,36,9
|
||||
LTEXT "Jelenlegi formátum:",-1,3,56,73,9
|
||||
LTEXT "Ez hely kölcsönzésre",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Mégse",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Hullámforma: %s"
|
||||
IDS_WAVEFILETYPE "Hullámforma"
|
||||
IDS_ALLMULTIMEDIA "Minden multimédia fájl"
|
||||
IDS_ALLFILES "Minden fájl (*.*)@*.*"
|
||||
IDS_VIDEO "video"
|
||||
IDS_WAVESTREAMFORMAT "Hullámforma: %s"
|
||||
IDS_WAVEFILETYPE "Hullámforma"
|
||||
IDS_ALLMULTIMEDIA "Minden multimédia fájl"
|
||||
IDS_ALLFILES "#-#-#-#-# hu.po (Wine) #-#-#-#-#\n\
|
||||
Minden fájl (*.*)\n\
|
||||
#-#-#-#-# hu.po (Wine) #-#-#-#-#\n\
|
||||
Összes fájl (*.*)"
|
||||
IDS_VIDEO ""
|
||||
IDS_AUDIO "hang"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-alapértelmezett-fájlkezelõ"
|
||||
IDS_UNCOMPRESSED "tömörítetlen"
|
||||
IDS_AVIFILETYPE "Wine AVI-alapértelmezett-fájlkezelő"
|
||||
IDS_UNCOMPRESSED "tömörítetlen"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Tömörítési beállítások"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Válassuon folyamot:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opciók...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Beékel minden",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "képkockát",-1,129,43,36,9
|
||||
LTEXT "Jelenlegi formátum:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Mégse",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
* Copyright 2003 Ivan Leo Puoti
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -19,35 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opzioni di compressione"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Scegliere un flusso:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opzioni...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interfoliazione ogni",IDC_INTERLEAVE,3,42,75,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,81,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "fotogrammi",-1,119,43,36,9
|
||||
LTEXT "Formato attuale:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Annulla",IDCANCEL,170,61,50,14
|
||||
END
|
||||
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Formato wave: %s"
|
||||
IDS_WAVEFILETYPE "Formato wave"
|
||||
IDS_ALLMULTIMEDIA "Tutti i file multimediali"
|
||||
IDS_ALLFILES "Tutti i file (*.*)@*.*"
|
||||
IDS_ALLFILES "Tutti i file (*.*)"
|
||||
IDS_VIDEO "Video"
|
||||
IDS_AUDIO "Audio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Gestore predefinito di Wine dei file AVI"
|
||||
IDS_UNCOMPRESSED "Non compresso"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opzioni di compressione"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Scegliere un flusso:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opzioni...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interfoliazione ogni",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "fotogrammi",-1,129,43,36,9
|
||||
LTEXT "Formato attuale:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "Ok",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Annulla",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2004 Hajime Segawa
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,38 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "圧縮オプション"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "ストリームを選択(&C):",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "オプション(&O)...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "インターリーブ(&I)",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "フレーム",-1,129,43,36,9
|
||||
LTEXT "現在のフォーマット:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "キャンセル",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveファイル: %s"
|
||||
IDS_WAVEFILETYPE "Waveファイル"
|
||||
IDS_ALLMULTIMEDIA "全てのマルチメディアファイル"
|
||||
IDS_ALLFILES "全てのファイル (*.*)@*.*"
|
||||
IDS_ALLFILES "すべてのファイル (*.*)"
|
||||
IDS_VIDEO "ビデオ"
|
||||
IDS_AUDIO "音声"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-default-filehandler"
|
||||
IDS_UNCOMPRESSED "未圧縮"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "圧縮オプション"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "ストリームを選択(&C):",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "オプション(&O)...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "インターリーブ(&I)",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "フレーム",-1,129,43,36,9
|
||||
LTEXT "現在のフォーマット:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "キャンセル",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
* Copyright 2005,2010 YunSong Hwang
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -19,37 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "압축 옵션"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "스트림 선택(&C):",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "옵션(&O)...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "항상 인터리브 적용(&I)",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "프레임",-1,129,43,36,9
|
||||
LTEXT "현재 형식:",-1,3,56,73,9
|
||||
LTEXT "예약된 공간",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "확인",IDOK,170,42,50,14
|
||||
PUSHBUTTON "취소",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "파형: %s"
|
||||
IDS_WAVEFILETYPE "파형"
|
||||
IDS_ALLMULTIMEDIA "모든 멀티미디어 파일"
|
||||
IDS_ALLFILES "모든 파일 (*.*)@*.*"
|
||||
IDS_ALLFILES "모든 파일 (*.*)"
|
||||
IDS_VIDEO "비디오"
|
||||
IDS_AUDIO "오디오"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-기본-파일핸들러·¯"
|
||||
IDS_AVIFILETYPE "Wine AVI-기본-파일핸들러"
|
||||
IDS_UNCOMPRESSED "압축안됨"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "압축 옵션"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "스트림 선택(&C):",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "옵션(&O)...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "항상 인터리브 적용(&I)",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "프레임",-1,129,43,36,9
|
||||
LTEXT "현재 형식:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "확인",IDOK,170,42,50,14
|
||||
PUSHBUTTON "취소",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2009 Aurimas Fišeras <aurimas@gmail.com>
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,38 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
|
||||
|
||||
LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Bangos forma: %s"
|
||||
IDS_WAVEFILETYPE "Bangos forma"
|
||||
IDS_ALLMULTIMEDIA "Visi multimedijos failai"
|
||||
IDS_ALLFILES "Visi failai (*.*)"
|
||||
IDS_VIDEO "vaizdas"
|
||||
IDS_AUDIO "garsas"
|
||||
IDS_AVIFILETYPE "Wine numatyta-AVI-doroklė"
|
||||
IDS_UNCOMPRESSED "neglaudintas"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Glaudinimo parametrai"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Pasirinkite srautą:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "&Pasirinkite srautą:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Parinktys...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Įtarpuoti kas",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
AUTOCHECKBOX "&Įtarpuoti kas",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "kadrų",-1,129,43,36,9
|
||||
LTEXT "Dabartinis formatas:",-1,3,56,73,9
|
||||
LTEXT "Ši vieta išnuomojama",IDC_FORMATTEXT,75,56,90,26
|
||||
LTEXT "Dabartinis formatas:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "Gerai",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Atsisakyti",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Bangos forma: %s"
|
||||
IDS_WAVEFILETYPE "Bangos forma"
|
||||
IDS_ALLMULTIMEDIA "Visi multimedijos failai"
|
||||
IDS_ALLFILES "Visi failai (*.*)@*.*"
|
||||
IDS_VIDEO "vaizdas"
|
||||
IDS_AUDIO "garsas"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine numatyta-AVI-doroklė"
|
||||
IDS_UNCOMPRESSED "neglaudintas"
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* avifile (Dutch resources)
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2003 Hans Leidekker
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -20,35 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Compressie-instellingen"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Kies een invoerbestand:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opties...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave alle",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "frames",-1,129,43,36,9
|
||||
LTEXT "Huidig formaat:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Annuleren",IDCANCEL,170,61,50,14
|
||||
END
|
||||
LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveform: %s"
|
||||
IDS_WAVEFILETYPE "Waveform"
|
||||
IDS_ALLMULTIMEDIA "Alle multimediabestanden"
|
||||
IDS_ALLFILES "Alle bestanden (*.*)@*.*"
|
||||
IDS_ALLFILES "Alle bestanden (*.*)"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "audio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-standaard-bestandskoppeling"
|
||||
IDS_UNCOMPRESSED "ongecomprimeerd"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Compressie-instellingen"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Kies een invoerbestand:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opties...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave alle",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "frames",-1,129,43,36,9
|
||||
LTEXT "Huidig formaat:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Annuleren",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2005 Alexander N. Sørnes <alex@thehandofagony.com>
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,35 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Komprimeringsinnstillinger"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Velg en strøm:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "I&nnstillinger...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "Sett &inn for hver",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "bilde",-1,129,43,36,9
|
||||
LTEXT "Gjeldende format:",-1,3,56,73,9
|
||||
LTEXT "Denne plassen er til leie",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Avbryt",IDCANCEL,170,61,50,14
|
||||
END
|
||||
LANGUAGE LANG_NORWEGIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Lydformat: %s"
|
||||
IDS_WAVEFILETYPE "Lydformat"
|
||||
IDS_ALLMULTIMEDIA "Alle multimedia-filer"
|
||||
IDS_ALLFILES "Alle filer (*.*)@*.*"
|
||||
IDS_ALLFILES "Alle filer (*.*)"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "lyd"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine standardfilhåndterer for AVI"
|
||||
IDS_AVIFILETYPE "Wine standardfilhåndterer for AVI"
|
||||
IDS_UNCOMPRESSED "ukomprimert"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Komprimeringsinnstillinger"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Velg en strøm:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Alternativer...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "Sett &inn for hver",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "bilde",-1,129,43,36,9
|
||||
LTEXT "Gjeldende format:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Avbryt",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
* Copyright 2004 Piotr Caban
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -21,33 +22,32 @@
|
|||
|
||||
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Kształt fali: %s"
|
||||
IDS_WAVEFILETYPE "Kształt fali"
|
||||
IDS_ALLMULTIMEDIA "Wszystkie pliki multimedialne"
|
||||
IDS_ALLFILES "Wszystkie pliki (*.*)"
|
||||
IDS_VIDEO "obraz"
|
||||
IDS_AUDIO "dźwięk"
|
||||
IDS_AVIFILETYPE "Wine AVI-domyślna-obsługa-pliku"
|
||||
IDS_UNCOMPRESSED "nie skompresowany"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opcje kompresji"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Wybierz strumień:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "&Wybierz strumień:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opcje...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Przeplot co",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
AUTOCHECKBOX "&Przeplot co",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "klatek",-1,129,43,36,9
|
||||
LTEXT "Wybrany format:",-1,2,56,73,9
|
||||
LTEXT "Zarezerwowane miejsce",IDC_FORMATTEXT,75,56,90,26
|
||||
LTEXT "Wybrany format:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Anuluj",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveform: %s"
|
||||
IDS_WAVEFILETYPE "Waveform"
|
||||
IDS_ALLMULTIMEDIA "Wszystkie pliki multimedialne"
|
||||
IDS_ALLFILES "Wszystkie pliki (*.*)@*.*"
|
||||
IDS_VIDEO "obraz"
|
||||
IDS_AUDIO "dźwięk"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-domyślna-obsługa-pliku"
|
||||
IDS_UNCOMPRESSED "nie skompresowany"
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Copyright 2003 Marcelo Duarte
|
||||
* Copyright 2006 Américo José Melo
|
||||
* Copyright 2010 Gustavo Henrique Milaré
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -20,75 +20,37 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opções de compressão"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Escolha a stream:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opções...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Entrelaçar todos",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "quadros",-1,129,43,36,9
|
||||
LTEXT "Formato atual:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Cancelar",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opções de compressão"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Escolha a stream:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opções...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interlaçar a todos os",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "molduras",-1,129,43,36,9
|
||||
LTEXT "Formato actual:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Cancelar",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Formato wave: %s"
|
||||
IDS_WAVEFILETYPE "Formato wave"
|
||||
IDS_ALLMULTIMEDIA "Todos arquivos multimídia"
|
||||
IDS_ALLFILES "Todos os arquivos (*.*)@*.*"
|
||||
IDS_VIDEO "vídeo"
|
||||
IDS_AUDIO "áudio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Manipulador de AVI padrão do Wine"
|
||||
IDS_UNCOMPRESSED "sem compressão"
|
||||
}
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Formato wave: %s"
|
||||
IDS_WAVEFILETYPE "Formato wave"
|
||||
IDS_ALLMULTIMEDIA "Todos os ficheiros multimédia"
|
||||
IDS_ALLFILES "Todos os ficheiros (*.*)@*.*"
|
||||
IDS_ALLFILES "#-#-#-#-# pt_PT.po (Wine) #-#-#-#-#\n\
|
||||
Todos os arquivos (*.*)\n\
|
||||
#-#-#-#-# pt_PT.po (Wine) #-#-#-#-#\n\
|
||||
Todos os ficheiros (*.*)"
|
||||
IDS_VIDEO "vídeo"
|
||||
IDS_AUDIO "áudio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Manipulador AVI Wine predefinido"
|
||||
IDS_UNCOMPRESSED "sem compressão"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opções de compressão"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Escolha a stream:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opções...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interlaçar a todos os",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "molduras",-1,129,43,36,9
|
||||
LTEXT "Formato actual:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Cancelar",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* avifil32.dll (Romanian resources)
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2009 Paul Chitescu
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -20,38 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opțiuni de compresie"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Alegeți un flux:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opțiuni...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "Ȋ&ntrețese fiecare",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "cadre",-1,129,43,36,9
|
||||
LTEXT "Formatul curent:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Renunță",IDCANCEL,170,61,50,14
|
||||
END
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Forma de undă: %s"
|
||||
IDS_WAVEFILETYPE "Formă de undă"
|
||||
IDS_ALLMULTIMEDIA "Toate fișierele multimedia"
|
||||
IDS_ALLFILES "Toate fișierele (*.*)@*.*"
|
||||
IDS_ALLFILES "Toate fișierele (*.*)"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "audio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Tratare implicită Wine pentru AVI"
|
||||
IDS_UNCOMPRESSED "necomprimat"
|
||||
IDS_UNCOMPRESSED "necomprimat"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opțiuni de compresie"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Alegeți un flux:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Opțiuni...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "Ȋ&ntrețese fiecare",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "cadre",-1,129,43,36,9
|
||||
LTEXT "Formatul curent:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Renunță",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* avifil32.dll (Russian resources)
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2003 Igor Stepin
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -20,38 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Звуковой поток: %s"
|
||||
IDS_WAVEFILETYPE "Звуковой поток"
|
||||
IDS_ALLMULTIMEDIA "Все мультимедиа файлы"
|
||||
IDS_ALLFILES "Все файлы (*.*)"
|
||||
IDS_VIDEO "видео"
|
||||
IDS_AUDIO "аудио"
|
||||
IDS_AVIFILETYPE "Обработчик по умолчанию avi-файлов в Wine"
|
||||
IDS_UNCOMPRESSED "без сжатия"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Настройки сжатия"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Выберите поток:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "&Выберите поток:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "П&араметры...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Прослаивать каждые",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
PUSHBUTTON "&Параметры...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Прослаивать каждые",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "фрейма",-1,129,43,36,9
|
||||
LTEXT "Текущий формат:",-1,3,56,73,9
|
||||
LTEXT "Это место сдаётся в аренду",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
LTEXT "Текущий формат:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "ОК",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Отмена",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Звуковой поток: %s"
|
||||
IDS_WAVEFILETYPE "Звуковой поток"
|
||||
IDS_ALLMULTIMEDIA "Все файлы мультимедиа"
|
||||
IDS_ALLFILES "Все файлы (*.*)@*.*"
|
||||
IDS_VIDEO "видео"
|
||||
IDS_AUDIO "аудио"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Обработчик по умолчанию avi-файлов в Wine"
|
||||
IDS_UNCOMPRESSED "без сжатия"
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2003, 2008 Rok Mandeljc
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,37 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Valovna oblika: %s"
|
||||
IDS_WAVEFILETYPE "Valovna oblika"
|
||||
IDS_ALLMULTIMEDIA "Vse večpredstavnostne datoteke"
|
||||
IDS_ALLFILES "Vse datoteke (*.*)"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "zvok"
|
||||
IDS_AVIFILETYPE "Wine privzeti-upravljalnik-AVI-datotek"
|
||||
IDS_UNCOMPRESSED "nestisnjeno"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Možnosti stiskanja"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Izbran tok:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "&Izbran tok:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Možnosti ...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Prepletanje vsake",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
PUSHBUTTON "M&ožnosti ...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Prepletanje vsake",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "slike",-1,129,43,36,9
|
||||
LTEXT "Trenutna oblika zapisa:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
LTEXT "Trenutna oblika zapisa:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "V redu",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Prekliči",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveform: %s"
|
||||
IDS_WAVEFILETYPE "Waveform"
|
||||
IDS_ALLMULTIMEDIA "Vse večpredstavnostne datoteke"
|
||||
IDS_ALLFILES "Vse datoteke (*.*)@*.*"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "avdio"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine privzeti-upravljalec-AVI-datotek"
|
||||
IDS_UNCOMPRESSED "nestisnjeno"
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2007 Daniel Nylander
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,35 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
|
||||
LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Vågform: %s"
|
||||
IDS_WAVEFILETYPE "Vågform"
|
||||
IDS_ALLMULTIMEDIA "Alla multimediafiler"
|
||||
IDS_ALLFILES "Alla filer (*.*)"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "ljud"
|
||||
IDS_AVIFILETYPE "Wine AVI-standardfilhanterare"
|
||||
IDS_UNCOMPRESSED "okomprimerad"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Komprimeringsalternativ"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Välj en ström:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "&Välj en ström:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "A<ernativ...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interfoliera varje",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
PUSHBUTTON "&Alternativ...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interfoliera varje",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "frames",-1,129,43,36,9
|
||||
LTEXT "Aktuellt format:",-1,3,56,73,9
|
||||
LTEXT "Detta utrymme uthyres",IDC_FORMATTEXT,75,56,90,26
|
||||
LTEXT "Aktuellt format:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Avbryt",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Vågform: %s"
|
||||
IDS_WAVEFILETYPE "Vågform"
|
||||
IDS_ALLMULTIMEDIA "Alla multimediafiler"
|
||||
IDS_ALLFILES "Alla filer (*.*)@*.*"
|
||||
IDS_VIDEO "video"
|
||||
IDS_AUDIO "ljud"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-standardfilhanterare"
|
||||
IDS_UNCOMPRESSED "okomprimerad"
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2006 Fatih Aþýcý
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -20,33 +22,32 @@
|
|||
|
||||
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Sýkýþtýrma seçenekleri"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Bir akýþ se&çin:",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Seçenekler...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "frames",-1,129,43,36,9
|
||||
LTEXT "Geçerli biçim:",-1,3,56,73,9
|
||||
LTEXT "This space for rent",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "Tamam",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Ýptal",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Waveform: %s"
|
||||
IDS_WAVEFILETYPE "Waveform"
|
||||
IDS_ALLMULTIMEDIA "Tüm çokluortam dosyalarý"
|
||||
IDS_ALLFILES "Tüm dosyalar (*.*)@*.*"
|
||||
IDS_WAVESTREAMFORMAT ""
|
||||
IDS_WAVEFILETYPE ""
|
||||
IDS_ALLMULTIMEDIA "Tüm çokluortam dosyaları"
|
||||
IDS_ALLFILES "Tüm dosyalar (*.*)"
|
||||
IDS_VIDEO "vidyo"
|
||||
IDS_AUDIO "ses"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-default-filehandler"
|
||||
IDS_UNCOMPRESSED "sýkýþtýrýlmamýþ"
|
||||
IDS_UNCOMPRESSED "sıkıştırılmamış"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Sıkıştırma seçenekleri"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Bir akış se&çin:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Seçenekler...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Interleave every",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "frames",-1,129,43,36,9
|
||||
LTEXT "Geçerli biçim:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "Tamam",IDOK,170,42,50,14
|
||||
PUSHBUTTON "İptal",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/*
|
||||
* Copyright 2007 Artem Reznikov
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -18,38 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 196, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Параметри стиснення"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Оберіть потік:",-1,2,5,114,10
|
||||
COMBOBOX IDC_STREAM,2,18,134,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "П&араметри...",IDC_OPTIONS,145,17,45,14
|
||||
AUTOCHECKBOX "&Інтервал чергування",IDC_INTERLEAVE,3,42,60,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,66,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "кадрів",-1,104,43,36,9
|
||||
LTEXT "Поточний формат:",-1,3,56,53,9
|
||||
LTEXT "Це місце здається в оренду",IDC_FORMATTEXT,55,56,90,26
|
||||
DEFPUSHBUTTON "OK",IDOK,145,42,45,14
|
||||
PUSHBUTTON "Скасувати",IDCANCEL,145,61,45,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "Звуковий потік: %s"
|
||||
IDS_WAVEFILETYPE "Звуковий потік"
|
||||
IDS_ALLMULTIMEDIA "Усі мультимедійні файли"
|
||||
IDS_ALLFILES "Усі файли (*.*)@*.*"
|
||||
IDS_ALLFILES "Всі файли (*.*)"
|
||||
IDS_VIDEO "відео"
|
||||
IDS_AUDIO "аудіо"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine обробник AVI-файлів за замовчуванням"
|
||||
IDS_UNCOMPRESSED "без стиснення"
|
||||
}
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Параметри стиснення"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "&Оберіть потік:",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "&Параметри...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "&Інтервал чергування",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "кадрів",-1,129,43,36,9
|
||||
LTEXT "Поточний формат:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "OK",IDOK,170,42,50,14
|
||||
PUSHBUTTON "Скасувати",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* avifile (Simplified and Traditional Chinese Resources)
|
||||
* Top level resource file for avifil32.dll
|
||||
*
|
||||
* Copyright 2008 Hongbo Ni <hongbo.at.njstar.com>
|
||||
* Copyright 2002 Michael Günnewig
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -20,71 +20,34 @@
|
|||
|
||||
#include "avifile_private.h"
|
||||
|
||||
/* Chinese text is encoded in UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "压缩选项"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "选择来源(&C):",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "选项(&O)...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "交织: 每",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "帧数",-1,129,43,36,9
|
||||
LTEXT "当前格式:",-1,3,56,73,9
|
||||
LTEXT "(?)",IDC_FORMATTEXT,75,56,90,26
|
||||
DEFPUSHBUTTON "确定",IDOK,170,42,50,14
|
||||
PUSHBUTTON "取消",IDCANCEL,170,61,50,14
|
||||
END
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "波形: %s"
|
||||
IDS_WAVEFILETYPE "波形"
|
||||
IDS_ALLMULTIMEDIA "所有多媒体文件"
|
||||
IDS_ALLFILES "所有文件 (*.*)@*.*"
|
||||
IDS_VIDEO "视频"
|
||||
IDS_AUDIO "音频"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-默认处理器"
|
||||
IDS_UNCOMPRESSED "未压缩"
|
||||
IDS_WAVEFILETYPE "波形"
|
||||
IDS_ALLMULTIMEDIA "所有多媒體檔案"
|
||||
IDS_ALLFILES "所有檔案 (*.*)"
|
||||
IDS_VIDEO "視頻"
|
||||
IDS_AUDIO "音頻"
|
||||
IDS_AVIFILETYPE "Wine AVI-默認處理器"
|
||||
IDS_UNCOMPRESSED "未壓縮"
|
||||
}
|
||||
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
|
||||
|
||||
IDD_SAVEOPTIONS DIALOG 43, 37, 226, 82
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "壓縮選項"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "選擇來源(&C):",-1,2,5,154,10
|
||||
COMBOBOX IDC_STREAM,2,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "選擇來源(&C):",-1,5,5,154,10
|
||||
COMBOBOX IDC_STREAM,5,18,154,61,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
PUSHBUTTON "選項(&O)...",IDC_OPTIONS,170,17,50,14
|
||||
AUTOCHECKBOX "交織: 每",IDC_INTERLEAVE,3,42,85,11,WS_TABSTOP
|
||||
AUTOCHECKBOX "交織: 每",IDC_INTERLEAVE,5,42,85,11,WS_TABSTOP
|
||||
EDITTEXT IDC_INTERLEAVEEVERY,91,41,32,12,ES_AUTOHSCROLL
|
||||
LTEXT "幀數",-1,129,43,36,9
|
||||
LTEXT "當前格式:",-1,3,56,73,9
|
||||
LTEXT "(?)",IDC_FORMATTEXT,75,56,90,26
|
||||
LTEXT "當前格式:",-1,5,56,73,9
|
||||
LTEXT "",IDC_FORMATTEXT,80,56,88,26
|
||||
DEFPUSHBUTTON "確定",IDOK,170,42,50,14
|
||||
PUSHBUTTON "取消",IDCANCEL,170,61,50,14
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_WAVESTREAMFORMAT "波形: %s"
|
||||
IDS_WAVEFILETYPE "波形"
|
||||
IDS_ALLMULTIMEDIA "所有多媒體檔案"
|
||||
IDS_ALLFILES "所有檔案 (*.*)@*.*"
|
||||
IDS_VIDEO "視頻"
|
||||
IDS_AUDIO "音頻"
|
||||
IDS_AVISTREAMFORMAT "%s %s #%d"
|
||||
IDS_AVIFILETYPE "Wine AVI-默認處理器"
|
||||
IDS_UNCOMPRESSED "未壓縮"
|
||||
}
|
||||
|
|
|
@ -49,25 +49,23 @@
|
|||
#define IDS_ALLFILES 0x0185
|
||||
#define IDS_VIDEO 0x0189
|
||||
#define IDS_AUDIO 0x0190
|
||||
#define IDS_AVISTREAMFORMAT 0x0191
|
||||
#define IDS_AVIFILETYPE 0x0192
|
||||
#define IDS_UNCOMPRESSED 0x0193
|
||||
|
||||
DEFINE_AVIGUID(CLSID_ICMStream, 0x00020001, 0, 0);
|
||||
DEFINE_AVIGUID(CLSID_WAVFile, 0x00020003, 0, 0);
|
||||
DEFINE_AVIGUID(CLSID_ACMStream, 0x0002000F, 0, 0);
|
||||
DEFINE_AVIGUID(IID_IEditStreamInternal, 0x0002000A,0,0);
|
||||
|
||||
extern HMODULE AVIFILE_hModule;
|
||||
extern HMODULE AVIFILE_hModule DECLSPEC_HIDDEN;
|
||||
|
||||
extern HRESULT AVIFILE_CreateAVIFile(REFIID riid, LPVOID *ppobj);
|
||||
extern HRESULT AVIFILE_CreateWAVFile(REFIID riid, LPVOID *ppobj);
|
||||
extern HRESULT AVIFILE_CreateACMStream(REFIID riid, LPVOID *ppobj);
|
||||
extern HRESULT AVIFILE_CreateICMStream(REFIID riid, LPVOID *ppobj);
|
||||
extern PAVIEDITSTREAM AVIFILE_CreateEditStream(PAVISTREAM pstream);
|
||||
extern PGETFRAME AVIFILE_CreateGetFrame(PAVISTREAM pstream);
|
||||
extern PAVIFILE AVIFILE_CreateAVITempFile(int nStreams, const PAVISTREAM *ppStreams);
|
||||
extern HRESULT AVIFILE_CreateAVIFile(REFIID riid, LPVOID *ppobj) DECLSPEC_HIDDEN;
|
||||
extern HRESULT AVIFILE_CreateWAVFile(REFIID riid, LPVOID *ppobj) DECLSPEC_HIDDEN;
|
||||
extern HRESULT AVIFILE_CreateACMStream(REFIID riid, LPVOID *ppobj) DECLSPEC_HIDDEN;
|
||||
extern HRESULT AVIFILE_CreateICMStream(REFIID riid, LPVOID *ppobj) DECLSPEC_HIDDEN;
|
||||
extern PAVIEDITSTREAM AVIFILE_CreateEditStream(PAVISTREAM pstream) DECLSPEC_HIDDEN;
|
||||
extern PGETFRAME AVIFILE_CreateGetFrame(PAVISTREAM pstream) DECLSPEC_HIDDEN;
|
||||
extern PAVIFILE AVIFILE_CreateAVITempFile(int nStreams, const PAVISTREAM *ppStreams) DECLSPEC_HIDDEN;
|
||||
|
||||
extern LPCWSTR AVIFILE_BasenameW(LPCWSTR szFileName);
|
||||
extern LPCWSTR AVIFILE_BasenameW(LPCWSTR szFileName) DECLSPEC_HIDDEN;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "extrachunk.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "initguid.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(avifile);
|
||||
|
||||
|
@ -38,134 +39,24 @@ WINE_DEFAULT_DEBUG_CHANNEL(avifile);
|
|||
|
||||
/* internal interface to get access to table of stream in an editable stream */
|
||||
|
||||
DEFINE_AVIGUID(IID_IEditStreamInternal, 0x0002000A,0,0);
|
||||
|
||||
typedef struct _EditStreamTable {
|
||||
PAVISTREAM pStream; /* stream which contains the data */
|
||||
DWORD dwStart; /* where starts the part which is also our */
|
||||
DWORD dwLength; /* how many is also in this stream */
|
||||
} EditStreamTable;
|
||||
|
||||
#define INTERFACE IEditStreamInternal
|
||||
DECLARE_INTERFACE_(IEditStreamInternal,IUnknown)
|
||||
{
|
||||
/*** IUnknown methods ***/
|
||||
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
/*** IEditStreamInternal methods ***/
|
||||
STDMETHOD(GetEditStreamImpl)(THIS_ LPVOID*) PURE;
|
||||
};
|
||||
#undef INTERFACE
|
||||
|
||||
#define EditStreamEnd(This,streamNr) ((This)->pStreams[streamNr].dwStart + \
|
||||
(This)->pStreams[streamNr].dwLength)
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
static HRESULT WINAPI IAVIEditStream_fnQueryInterface(IAVIEditStream*iface,REFIID refiid,LPVOID *obj);
|
||||
static ULONG WINAPI IAVIEditStream_fnAddRef(IAVIEditStream*iface);
|
||||
static ULONG WINAPI IAVIEditStream_fnRelease(IAVIEditStream*iface);
|
||||
static HRESULT WINAPI IAVIEditStream_fnCut(IAVIEditStream*iface,LONG*plStart,
|
||||
LONG*plLength,PAVISTREAM*ppResult);
|
||||
static HRESULT WINAPI IAVIEditStream_fnCopy(IAVIEditStream*iface,LONG*plStart,
|
||||
LONG*plLength,PAVISTREAM*ppResult);
|
||||
static HRESULT WINAPI IAVIEditStream_fnPaste(IAVIEditStream*iface,LONG*plStart,
|
||||
LONG*plLength,PAVISTREAM pSource,
|
||||
LONG lStart,LONG lEnd);
|
||||
static HRESULT WINAPI IAVIEditStream_fnClone(IAVIEditStream*iface,
|
||||
PAVISTREAM*ppResult);
|
||||
static HRESULT WINAPI IAVIEditStream_fnSetInfo(IAVIEditStream*iface,
|
||||
LPAVISTREAMINFOW asi,LONG size);
|
||||
|
||||
static const struct IAVIEditStreamVtbl ieditstream = {
|
||||
IAVIEditStream_fnQueryInterface,
|
||||
IAVIEditStream_fnAddRef,
|
||||
IAVIEditStream_fnRelease,
|
||||
IAVIEditStream_fnCut,
|
||||
IAVIEditStream_fnCopy,
|
||||
IAVIEditStream_fnPaste,
|
||||
IAVIEditStream_fnClone,
|
||||
IAVIEditStream_fnSetInfo
|
||||
};
|
||||
|
||||
static HRESULT WINAPI IEditAVIStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID*obj);
|
||||
static ULONG WINAPI IEditAVIStream_fnAddRef(IAVIStream*iface);
|
||||
static ULONG WINAPI IEditAVIStream_fnRelease(IAVIStream*iface);
|
||||
static HRESULT WINAPI IEditAVIStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2);
|
||||
static HRESULT WINAPI IEditAVIStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size);
|
||||
static LONG WINAPI IEditAVIStream_fnFindSample(IAVIStream*iface,LONG pos,
|
||||
LONG flags);
|
||||
static HRESULT WINAPI IEditAVIStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG*formatsize);
|
||||
static HRESULT WINAPI IEditAVIStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize);
|
||||
static HRESULT WINAPI IEditAVIStream_fnRead(IAVIStream*iface,LONG start,
|
||||
LONG samples,LPVOID buffer,
|
||||
LONG buffersize,LONG*bytesread,
|
||||
LONG*samplesread);
|
||||
static HRESULT WINAPI IEditAVIStream_fnWrite(IAVIStream*iface,LONG start,
|
||||
LONG samples,LPVOID buffer,
|
||||
LONG buffersize,DWORD flags,
|
||||
LONG*sampwritten,LONG*byteswritten);
|
||||
static HRESULT WINAPI IEditAVIStream_fnDelete(IAVIStream*iface,LONG start,LONG samples);
|
||||
static HRESULT WINAPI IEditAVIStream_fnReadData(IAVIStream*iface,DWORD fcc,
|
||||
LPVOID lp,LONG *lpread);
|
||||
static HRESULT WINAPI IEditAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,
|
||||
LPVOID lp,LONG size);
|
||||
static HRESULT WINAPI IEditAVIStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
|
||||
|
||||
static const struct IAVIStreamVtbl ieditstast = {
|
||||
IEditAVIStream_fnQueryInterface,
|
||||
IEditAVIStream_fnAddRef,
|
||||
IEditAVIStream_fnRelease,
|
||||
IEditAVIStream_fnCreate,
|
||||
IEditAVIStream_fnInfo,
|
||||
IEditAVIStream_fnFindSample,
|
||||
IEditAVIStream_fnReadFormat,
|
||||
IEditAVIStream_fnSetFormat,
|
||||
IEditAVIStream_fnRead,
|
||||
IEditAVIStream_fnWrite,
|
||||
IEditAVIStream_fnDelete,
|
||||
IEditAVIStream_fnReadData,
|
||||
IEditAVIStream_fnWriteData,
|
||||
IEditAVIStream_fnSetInfo
|
||||
};
|
||||
|
||||
static HRESULT WINAPI IEditStreamInternal_fnQueryInterface(IEditStreamInternal*iface,REFIID refiid,LPVOID*obj);
|
||||
static ULONG WINAPI IEditStreamInternal_fnAddRef(IEditStreamInternal*iface);
|
||||
static ULONG WINAPI IEditStreamInternal_fnRelease(IEditStreamInternal*iface);
|
||||
static HRESULT WINAPI IEditStreamInternal_fnGetEditStreamImpl(IEditStreamInternal*iface,LPVOID*ppimpl);
|
||||
|
||||
static const struct IEditStreamInternalVtbl ieditstreaminternal = {
|
||||
IEditStreamInternal_fnQueryInterface,
|
||||
IEditStreamInternal_fnAddRef,
|
||||
IEditStreamInternal_fnRelease,
|
||||
IEditStreamInternal_fnGetEditStreamImpl
|
||||
};
|
||||
|
||||
typedef struct _IAVIEditStreamImpl IAVIEditStreamImpl;
|
||||
|
||||
typedef struct _IEditAVIStreamImpl {
|
||||
/* IUnknown stuff */
|
||||
const IAVIStreamVtbl *lpVtbl;
|
||||
|
||||
/* IAVIStream stuff */
|
||||
IAVIEditStreamImpl *pae;
|
||||
} IEditAVIStreamImpl;
|
||||
|
||||
typedef struct _IEditStreamInternalImpl {
|
||||
/* IUnknown stuff */
|
||||
const IEditStreamInternalVtbl *lpVtbl;
|
||||
|
||||
/* IEditStreamInternal stuff */
|
||||
IAVIEditStreamImpl *pae;
|
||||
} IEditStreamInternalImpl;
|
||||
|
||||
struct _IAVIEditStreamImpl {
|
||||
/* IUnknown stuff */
|
||||
const IAVIEditStreamVtbl *lpVtbl;
|
||||
LONG ref;
|
||||
IAVIEditStream IAVIEditStream_iface;
|
||||
IAVIStream IAVIStream_iface;
|
||||
|
||||
/* IAVIEditStream stuff */
|
||||
IEditAVIStreamImpl iAVIStream;
|
||||
IEditStreamInternalImpl iEditStreamInternal;
|
||||
LONG ref;
|
||||
|
||||
AVISTREAMINFOW sInfo;
|
||||
|
||||
|
@ -179,28 +70,18 @@ struct _IAVIEditStreamImpl {
|
|||
LPBITMAPINFOHEADER lpFrame; /* frame of pCurStream */
|
||||
};
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
PAVIEDITSTREAM AVIFILE_CreateEditStream(PAVISTREAM pstream)
|
||||
static inline IAVIEditStreamImpl *impl_from_IAVIEditStream(IAVIEditStream *iface)
|
||||
{
|
||||
IAVIEditStreamImpl *pedit = NULL;
|
||||
|
||||
pedit = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAVIEditStreamImpl));
|
||||
if (pedit == NULL)
|
||||
return NULL;
|
||||
|
||||
pedit->lpVtbl = &ieditstream;
|
||||
pedit->iAVIStream.lpVtbl = &ieditstast;
|
||||
pedit->iAVIStream.pae = pedit;
|
||||
pedit->iEditStreamInternal.lpVtbl = &ieditstreaminternal;
|
||||
pedit->iEditStreamInternal.pae = pedit;
|
||||
pedit->ref = 1;
|
||||
|
||||
IAVIStream_Create((PAVISTREAM)&pedit->iAVIStream,(LPARAM)pstream,0);
|
||||
|
||||
return (PAVIEDITSTREAM)pedit;
|
||||
return CONTAINING_RECORD(iface, IAVIEditStreamImpl, IAVIEditStream_iface);
|
||||
}
|
||||
|
||||
static inline IAVIEditStreamImpl *impl_from_IAVIStream(IAVIStream *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, IAVIEditStreamImpl, IAVIStream_iface);
|
||||
}
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
static HRESULT AVIFILE_FindStreamInTable(IAVIEditStreamImpl* const This,
|
||||
DWORD pos,PAVISTREAM *ppStream,
|
||||
DWORD* streamPos,
|
||||
|
@ -348,34 +229,30 @@ static BOOL AVIFILE_FormatsEqual(PAVISTREAM avi1, PAVISTREAM avi2)
|
|||
|
||||
static HRESULT WINAPI IAVIEditStream_fnQueryInterface(IAVIEditStream*iface,REFIID refiid,LPVOID *obj)
|
||||
{
|
||||
IAVIEditStreamImpl *This = (IAVIEditStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIEditStream(iface);
|
||||
|
||||
TRACE("(%p,%s,%p)\n", This, debugstr_guid(refiid), obj);
|
||||
|
||||
if (IsEqualGUID(&IID_IUnknown, refiid) ||
|
||||
IsEqualGUID(&IID_IAVIEditStream, refiid)) {
|
||||
IsEqualGUID(&IID_IAVIEditStream, refiid) ||
|
||||
IsEqualGUID(&IID_IEditStreamInternal, refiid)) {
|
||||
*obj = iface;
|
||||
IAVIEditStream_AddRef(iface);
|
||||
|
||||
return S_OK;
|
||||
} else if (IsEqualGUID(&IID_IAVIStream, refiid)) {
|
||||
*obj = &This->iAVIStream;
|
||||
IAVIEditStream_AddRef(iface);
|
||||
|
||||
return S_OK;
|
||||
} else if (IsEqualGUID(&IID_IEditStreamInternal, refiid)) {
|
||||
*obj = &This->iEditStreamInternal;
|
||||
*obj = &This->IAVIStream_iface;
|
||||
IAVIEditStream_AddRef(iface);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
return OLE_E_ENUM_NOMORE;
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI IAVIEditStream_fnAddRef(IAVIEditStream*iface)
|
||||
{
|
||||
IAVIEditStreamImpl *This = (IAVIEditStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIEditStream(iface);
|
||||
ULONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) -> %d\n", iface, ref);
|
||||
|
@ -385,7 +262,7 @@ static ULONG WINAPI IAVIEditStream_fnAddRef(IAVIEditStream*iface)
|
|||
|
||||
static ULONG WINAPI IAVIEditStream_fnRelease(IAVIEditStream*iface)
|
||||
{
|
||||
IAVIEditStreamImpl *This = (IAVIEditStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIEditStream(iface);
|
||||
DWORD i;
|
||||
ULONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
|
@ -412,7 +289,7 @@ static ULONG WINAPI IAVIEditStream_fnRelease(IAVIEditStream*iface)
|
|||
static HRESULT WINAPI IAVIEditStream_fnCut(IAVIEditStream*iface,LONG*plStart,
|
||||
LONG*plLength,PAVISTREAM*ppResult)
|
||||
{
|
||||
IAVIEditStreamImpl *This = (IAVIEditStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIEditStream(iface);
|
||||
PAVISTREAM stream;
|
||||
DWORD start, len, streamPos, streamNr;
|
||||
HRESULT hr;
|
||||
|
@ -496,7 +373,7 @@ static HRESULT WINAPI IAVIEditStream_fnCut(IAVIEditStream*iface,LONG*plStart,
|
|||
static HRESULT WINAPI IAVIEditStream_fnCopy(IAVIEditStream*iface,LONG*plStart,
|
||||
LONG*plLength,PAVISTREAM*ppResult)
|
||||
{
|
||||
IAVIEditStreamImpl *This = (IAVIEditStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIEditStream(iface);
|
||||
IAVIEditStreamImpl* pEdit;
|
||||
HRESULT hr;
|
||||
LONG start = 0;
|
||||
|
@ -526,14 +403,13 @@ static HRESULT WINAPI IAVIEditStream_fnCopy(IAVIEditStream*iface,LONG*plStart,
|
|||
if (pEdit == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
|
||||
hr = IAVIEditStream_Paste((PAVIEDITSTREAM)pEdit,&start,plLength,
|
||||
(PAVISTREAM)&This->iAVIStream,*plStart,
|
||||
*plStart + *plLength);
|
||||
hr = IAVIEditStream_Paste((PAVIEDITSTREAM)pEdit, &start, plLength, &This->IAVIStream_iface,
|
||||
*plStart, *plStart + *plLength);
|
||||
*plStart = start;
|
||||
if (FAILED(hr))
|
||||
IAVIEditStream_Release((PAVIEDITSTREAM)pEdit);
|
||||
else
|
||||
*ppResult = (PAVISTREAM)&pEdit->iAVIStream;
|
||||
*ppResult = &This->IAVIStream_iface;
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -542,9 +418,8 @@ static HRESULT WINAPI IAVIEditStream_fnPaste(IAVIEditStream*iface,LONG*plStart,
|
|||
LONG*plLength,PAVISTREAM pSource,
|
||||
LONG lStart,LONG lLength)
|
||||
{
|
||||
IAVIEditStreamImpl *This = (IAVIEditStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIEditStream(iface);
|
||||
AVISTREAMINFOW srcInfo;
|
||||
IEditStreamInternal*pInternal = NULL;
|
||||
IAVIEditStreamImpl *pEdit = NULL;
|
||||
PAVISTREAM pStream;
|
||||
DWORD startPos, endPos, streamNr, nStreams;
|
||||
|
@ -589,7 +464,7 @@ static HRESULT WINAPI IAVIEditStream_fnPaste(IAVIEditStream*iface,LONG*plStart,
|
|||
if (size != This->sInfo.rcFrame.bottom - This->sInfo.rcFrame.top)
|
||||
return AVIERR_UNSUPPORTED; /* FIXME: Can't GetFrame convert it? */
|
||||
} else if (srcInfo.fccType == streamtypeAUDIO) {
|
||||
if (! AVIFILE_FormatsEqual((PAVISTREAM)&This->iAVIStream, pSource))
|
||||
if (!AVIFILE_FormatsEqual(&This->IAVIStream_iface, pSource))
|
||||
return AVIERR_UNSUPPORTED;
|
||||
} else {
|
||||
/* FIXME: streamtypeMIDI and streamtypeTEXT */
|
||||
|
@ -597,11 +472,8 @@ static HRESULT WINAPI IAVIEditStream_fnPaste(IAVIEditStream*iface,LONG*plStart,
|
|||
}
|
||||
|
||||
/* try to get an IEditStreamInternal interface */
|
||||
if (SUCCEEDED(IAVIStream_QueryInterface(pSource, &IID_IEditStreamInternal,
|
||||
(LPVOID*)&pInternal))) {
|
||||
pInternal->lpVtbl->GetEditStreamImpl(pInternal, (LPVOID*)&pEdit);
|
||||
pInternal->lpVtbl->Release(pInternal);
|
||||
}
|
||||
if (SUCCEEDED(IAVIStream_QueryInterface(pSource, &IID_IEditStreamInternal, (LPVOID*)&pEdit)))
|
||||
IAVIEditStream_Release(&pEdit->IAVIEditStream_iface); /* pSource holds a reference */
|
||||
|
||||
/* for video must check for change of format */
|
||||
if (This->sInfo.fccType == streamtypeVIDEO) {
|
||||
|
@ -614,8 +486,8 @@ static HRESULT WINAPI IAVIEditStream_fnPaste(IAVIEditStream*iface,LONG*plStart,
|
|||
*/
|
||||
if ((pEdit != NULL && pEdit->bDecompress) ||
|
||||
AVIStreamNearestKeyFrame(pSource, lStart) != lStart ||
|
||||
AVIStreamNearestKeyFrame((PAVISTREAM)&This->iAVIStream, *plStart) != *plStart ||
|
||||
(This->nStreams > 0 && !AVIFILE_FormatsEqual((PAVISTREAM)&This->iAVIStream, pSource))) {
|
||||
AVIStreamNearestKeyFrame(&This->IAVIStream_iface, *plStart) != *plStart ||
|
||||
(This->nStreams > 0 && !AVIFILE_FormatsEqual(&This->IAVIStream_iface, pSource))) {
|
||||
/* Use first stream part to get format to convert everything to */
|
||||
AVIFILE_ReadFrame(This, This->pStreams[0].pStream,
|
||||
This->pStreams[0].dwStart);
|
||||
|
@ -733,7 +605,7 @@ static HRESULT WINAPI IAVIEditStream_fnPaste(IAVIEditStream*iface,LONG*plStart,
|
|||
static HRESULT WINAPI IAVIEditStream_fnClone(IAVIEditStream*iface,
|
||||
PAVISTREAM*ppResult)
|
||||
{
|
||||
IAVIEditStreamImpl *This = (IAVIEditStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIEditStream(iface);
|
||||
IAVIEditStreamImpl* pEdit;
|
||||
DWORD i;
|
||||
|
||||
|
@ -762,7 +634,7 @@ static HRESULT WINAPI IAVIEditStream_fnClone(IAVIEditStream*iface,
|
|||
IAVIStream_AddRef(pEdit->pStreams[i].pStream);
|
||||
}
|
||||
|
||||
*ppResult = (PAVISTREAM)&pEdit->iAVIStream;
|
||||
*ppResult = &This->IAVIStream_iface;
|
||||
|
||||
return AVIERR_OK;
|
||||
}
|
||||
|
@ -770,28 +642,20 @@ static HRESULT WINAPI IAVIEditStream_fnClone(IAVIEditStream*iface,
|
|||
static HRESULT WINAPI IAVIEditStream_fnSetInfo(IAVIEditStream*iface,
|
||||
LPAVISTREAMINFOW asi,LONG size)
|
||||
{
|
||||
IAVIEditStreamImpl *This = (IAVIEditStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIEditStream(iface);
|
||||
|
||||
TRACE("(%p,%p,%d)\n",iface,asi,size);
|
||||
|
||||
/* check parameters */
|
||||
if (asi == NULL)
|
||||
return AVIERR_BADPARAM;
|
||||
if (size != sizeof(AVISTREAMINFOW))
|
||||
if (size >= 0 && size < sizeof(AVISTREAMINFOW))
|
||||
return AVIERR_BADSIZE;
|
||||
if (asi->dwScale == 0 || asi->dwRate == 0 || (LONG)asi->dwQuality < -1 ||
|
||||
asi->dwQuality > ICQUALITY_HIGH)
|
||||
return AVIERR_ERROR;
|
||||
|
||||
This->sInfo.wLanguage = asi->wLanguage;
|
||||
This->sInfo.wPriority = asi->wPriority;
|
||||
This->sInfo.dwStart = asi->dwStart;
|
||||
if (asi->dwRate != 0)
|
||||
This->sInfo.dwRate = asi->dwRate;
|
||||
if (asi->dwScale != 0)
|
||||
This->sInfo.dwScale = asi->dwScale;
|
||||
if (asi->dwQuality <= ICQUALITY_HIGH)
|
||||
This->sInfo.dwQuality = ICQUALITY_HIGH;
|
||||
This->sInfo.dwRate = asi->dwRate;
|
||||
This->sInfo.dwScale = asi->dwScale;
|
||||
This->sInfo.dwQuality = asi->dwQuality;
|
||||
CopyRect(&This->sInfo.rcFrame, &asi->rcFrame);
|
||||
memcpy(This->sInfo.szName, asi->szName, sizeof(asi->szName));
|
||||
This->sInfo.dwEditCount++;
|
||||
|
@ -799,38 +663,40 @@ static HRESULT WINAPI IAVIEditStream_fnSetInfo(IAVIEditStream*iface,
|
|||
return AVIERR_OK;
|
||||
}
|
||||
|
||||
static const struct IAVIEditStreamVtbl ieditstream = {
|
||||
IAVIEditStream_fnQueryInterface,
|
||||
IAVIEditStream_fnAddRef,
|
||||
IAVIEditStream_fnRelease,
|
||||
IAVIEditStream_fnCut,
|
||||
IAVIEditStream_fnCopy,
|
||||
IAVIEditStream_fnPaste,
|
||||
IAVIEditStream_fnClone,
|
||||
IAVIEditStream_fnSetInfo
|
||||
};
|
||||
|
||||
static HRESULT WINAPI IEditAVIStream_fnQueryInterface(IAVIStream*iface,
|
||||
REFIID refiid,LPVOID*obj)
|
||||
{
|
||||
IEditAVIStreamImpl *This = (IEditAVIStreamImpl *)iface;
|
||||
|
||||
assert(This->pae != NULL);
|
||||
|
||||
return IAVIEditStream_QueryInterface((IAVIEditStream*)This->pae,refiid,obj);
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
return IAVIEditStream_QueryInterface(&This->IAVIEditStream_iface,refiid,obj);
|
||||
}
|
||||
|
||||
static ULONG WINAPI IEditAVIStream_fnAddRef(IAVIStream*iface)
|
||||
{
|
||||
IEditAVIStreamImpl *This = (IEditAVIStreamImpl *)iface;
|
||||
|
||||
assert(This->pae != NULL);
|
||||
|
||||
return IAVIEditStream_AddRef((IAVIEditStream*)This->pae);
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
return IAVIEditStream_AddRef(&This->IAVIEditStream_iface);
|
||||
}
|
||||
|
||||
static ULONG WINAPI IEditAVIStream_fnRelease(IAVIStream*iface)
|
||||
{
|
||||
IEditAVIStreamImpl *This = (IEditAVIStreamImpl *)iface;
|
||||
|
||||
assert(This->pae != NULL);
|
||||
|
||||
return IAVIEditStream_Release((IAVIEditStream*)This->pae);
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
return IAVIEditStream_Release(&This->IAVIEditStream_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IEditAVIStream_fnCreate(IAVIStream*iface,
|
||||
LPARAM lParam1,LPARAM lParam2)
|
||||
{
|
||||
IAVIEditStreamImpl *This = ((IEditAVIStreamImpl*)iface)->pae;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
|
||||
if (lParam2 != 0)
|
||||
return AVIERR_ERROR;
|
||||
|
@ -856,23 +722,21 @@ static HRESULT WINAPI IEditAVIStream_fnCreate(IAVIStream*iface,
|
|||
static HRESULT WINAPI IEditAVIStream_fnInfo(IAVIStream*iface,
|
||||
AVISTREAMINFOW *psi,LONG size)
|
||||
{
|
||||
IEditAVIStreamImpl *This = (IEditAVIStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
|
||||
TRACE("(%p,%p,%d)\n",iface,psi,size);
|
||||
|
||||
assert(This->pae != NULL);
|
||||
|
||||
if (psi == NULL)
|
||||
return AVIERR_BADPARAM;
|
||||
if (size < 0)
|
||||
return AVIERR_BADSIZE;
|
||||
|
||||
if (This->pae->bDecompress)
|
||||
This->pae->sInfo.fccHandler = 0;
|
||||
if (This->bDecompress)
|
||||
This->sInfo.fccHandler = 0;
|
||||
|
||||
memcpy(psi, &This->pae->sInfo, min((DWORD)size, sizeof(This->pae->sInfo)));
|
||||
memcpy(psi, &This->sInfo, min((DWORD)size, sizeof(This->sInfo)));
|
||||
|
||||
if ((DWORD)size < sizeof(This->pae->sInfo))
|
||||
if ((DWORD)size < sizeof(This->sInfo))
|
||||
return AVIERR_BUFFERTOOSMALL;
|
||||
return AVIERR_OK;
|
||||
}
|
||||
|
@ -880,7 +744,7 @@ static HRESULT WINAPI IEditAVIStream_fnInfo(IAVIStream*iface,
|
|||
static LONG WINAPI IEditAVIStream_fnFindSample(IAVIStream*iface,LONG pos,
|
||||
LONG flags)
|
||||
{
|
||||
IAVIEditStreamImpl* const This = ((IEditAVIStreamImpl* const)iface)->pae;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
PAVISTREAM stream;
|
||||
DWORD streamPos, streamNr;
|
||||
|
||||
|
@ -915,7 +779,7 @@ static LONG WINAPI IEditAVIStream_fnFindSample(IAVIStream*iface,LONG pos,
|
|||
static HRESULT WINAPI IEditAVIStream_fnReadFormat(IAVIStream*iface,LONG pos,
|
||||
LPVOID format,LONG*fmtsize)
|
||||
{
|
||||
IAVIEditStreamImpl* const This = ((IEditAVIStreamImpl* const)iface)->pae;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
LPBITMAPINFOHEADER lp;
|
||||
PAVISTREAM stream;
|
||||
DWORD n;
|
||||
|
@ -965,7 +829,7 @@ static HRESULT WINAPI IEditAVIStream_fnRead(IAVIStream*iface,LONG start,
|
|||
LONG buffersize,LONG*bytesread,
|
||||
LONG*samplesread)
|
||||
{
|
||||
IAVIEditStreamImpl* const This = ((IEditAVIStreamImpl* const)iface)->pae;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
PAVISTREAM stream;
|
||||
DWORD streamPos, streamNr;
|
||||
LONG readBytes, readSamples, count;
|
||||
|
@ -1076,17 +940,17 @@ static HRESULT WINAPI IEditAVIStream_fnWrite(IAVIStream*iface,LONG start,
|
|||
static HRESULT WINAPI IEditAVIStream_fnDelete(IAVIStream*iface,LONG start,
|
||||
LONG samples)
|
||||
{
|
||||
IEditAVIStreamImpl *This = (IEditAVIStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
|
||||
TRACE("(%p,%d,%d)\n",iface,start,samples);
|
||||
|
||||
return IAVIEditStream_Cut((IAVIEditStream*)This->pae,&start,&samples,NULL);
|
||||
return IAVIEditStream_Cut(&This->IAVIEditStream_iface,&start,&samples,NULL);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IEditAVIStream_fnReadData(IAVIStream*iface,DWORD fcc,
|
||||
LPVOID lp,LONG *lpread)
|
||||
{
|
||||
IAVIEditStreamImpl* const This = ((IEditAVIStreamImpl* const)iface)->pae;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
DWORD n;
|
||||
|
||||
TRACE("(%p,0x%08X,%p,%p)\n",iface,fcc,lp,lpread);
|
||||
|
@ -1118,49 +982,43 @@ static HRESULT WINAPI IEditAVIStream_fnWriteData(IAVIStream*iface,DWORD fcc,
|
|||
static HRESULT WINAPI IEditAVIStream_fnSetInfo(IAVIStream*iface,
|
||||
AVISTREAMINFOW*info,LONG len)
|
||||
{
|
||||
IEditAVIStreamImpl *This = (IEditAVIStreamImpl *)iface;
|
||||
IAVIEditStreamImpl *This = impl_from_IAVIStream( iface );
|
||||
|
||||
TRACE("(%p,%p,%d)\n",iface,info,len);
|
||||
|
||||
return IAVIEditStream_SetInfo((IAVIEditStream*)This->pae,info,len);
|
||||
return IAVIEditStream_SetInfo(&This->IAVIEditStream_iface,info,len);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IEditStreamInternal_fnQueryInterface(IEditStreamInternal*iface,REFIID refiid,LPVOID*obj)
|
||||
static const struct IAVIStreamVtbl ieditstast = {
|
||||
IEditAVIStream_fnQueryInterface,
|
||||
IEditAVIStream_fnAddRef,
|
||||
IEditAVIStream_fnRelease,
|
||||
IEditAVIStream_fnCreate,
|
||||
IEditAVIStream_fnInfo,
|
||||
IEditAVIStream_fnFindSample,
|
||||
IEditAVIStream_fnReadFormat,
|
||||
IEditAVIStream_fnSetFormat,
|
||||
IEditAVIStream_fnRead,
|
||||
IEditAVIStream_fnWrite,
|
||||
IEditAVIStream_fnDelete,
|
||||
IEditAVIStream_fnReadData,
|
||||
IEditAVIStream_fnWriteData,
|
||||
IEditAVIStream_fnSetInfo
|
||||
};
|
||||
|
||||
PAVIEDITSTREAM AVIFILE_CreateEditStream(PAVISTREAM pstream)
|
||||
{
|
||||
IEditStreamInternalImpl *This = (IEditStreamInternalImpl *)iface;
|
||||
IAVIEditStreamImpl *pedit = NULL;
|
||||
|
||||
assert(This->pae != NULL);
|
||||
pedit = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAVIEditStreamImpl));
|
||||
if (pedit == NULL)
|
||||
return NULL;
|
||||
|
||||
return IAVIEditStream_QueryInterface((IAVIEditStream*)This->pae, refiid, obj);
|
||||
}
|
||||
|
||||
static ULONG WINAPI IEditStreamInternal_fnAddRef(IEditStreamInternal*iface)
|
||||
{
|
||||
IEditStreamInternalImpl *This = (IEditStreamInternalImpl *)iface;
|
||||
|
||||
assert(This->pae != NULL);
|
||||
|
||||
return IAVIEditStream_AddRef((IAVIEditStream*)This->pae);
|
||||
}
|
||||
|
||||
static ULONG WINAPI IEditStreamInternal_fnRelease(IEditStreamInternal*iface)
|
||||
{
|
||||
IEditStreamInternalImpl *This = (IEditStreamInternalImpl *)iface;
|
||||
|
||||
assert(This->pae != NULL);
|
||||
|
||||
return IAVIEditStream_Release((IAVIEditStream*)This->pae);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IEditStreamInternal_fnGetEditStreamImpl(IEditStreamInternal*iface,LPVOID*ppimpl)
|
||||
{
|
||||
IEditStreamInternalImpl *This = (IEditStreamInternalImpl *)iface;
|
||||
|
||||
TRACE("(%p,%p) -> %p\n", iface, ppimpl, This->pae);
|
||||
|
||||
assert(This->pae != NULL);
|
||||
assert(ppimpl != NULL);
|
||||
|
||||
*ppimpl = This->pae;
|
||||
return AVIERR_OK;
|
||||
pedit->IAVIEditStream_iface.lpVtbl = &ieditstream;
|
||||
pedit->IAVIStream_iface.lpVtbl = &ieditstast;
|
||||
pedit->ref = 1;
|
||||
|
||||
IAVIStream_Create(&pedit->IAVIStream_iface, (LPARAM)pstream, 0);
|
||||
|
||||
return (PAVIEDITSTREAM)pedit;
|
||||
}
|
||||
|
|
|
@ -35,18 +35,18 @@ typedef struct _EXTRACHUNKS {
|
|||
} EXTRACHUNKS, *LPEXTRACHUNKS;
|
||||
|
||||
/* reads a chunk outof the extrachunk-structure */
|
||||
HRESULT ReadExtraChunk(const EXTRACHUNKS *extra,FOURCC ckid,LPVOID lp,LPLONG size);
|
||||
HRESULT ReadExtraChunk(const EXTRACHUNKS *extra,FOURCC ckid,LPVOID lp,LPLONG size) DECLSPEC_HIDDEN;
|
||||
|
||||
/* writes a chunk into the extrachunk-structure */
|
||||
HRESULT WriteExtraChunk(LPEXTRACHUNKS extra,FOURCC ckid,LPCVOID lp,LONG size);
|
||||
HRESULT WriteExtraChunk(LPEXTRACHUNKS extra,FOURCC ckid,LPCVOID lp,LONG size) DECLSPEC_HIDDEN;
|
||||
|
||||
/* reads a chunk fomr the HMMIO into the extrachunk-structure */
|
||||
HRESULT ReadChunkIntoExtra(LPEXTRACHUNKS extra,HMMIO hmmio,const MMCKINFO *lpck);
|
||||
HRESULT ReadChunkIntoExtra(LPEXTRACHUNKS extra,HMMIO hmmio,const MMCKINFO *lpck) DECLSPEC_HIDDEN;
|
||||
|
||||
/* reads all non-junk chunks into the extrachunk-structure until it finds
|
||||
* the given chunk or the optional parent-chunk is at the end */
|
||||
HRESULT FindChunkAndKeepExtras(LPEXTRACHUNKS extra,HMMIO hmmio,
|
||||
MMCKINFO *lpck,MMCKINFO *lpckParent,UINT flags);
|
||||
MMCKINFO *lpck,MMCKINFO *lpckParent,UINT flags) DECLSPEC_HIDDEN;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "winuser.h"
|
||||
#include "winerror.h"
|
||||
#include "ole2.h"
|
||||
#include "rpcproxy.h"
|
||||
|
||||
#include "initguid.h"
|
||||
#include "vfw.h"
|
||||
|
@ -57,12 +58,17 @@ static const IClassFactoryVtbl iclassfact = {
|
|||
typedef struct
|
||||
{
|
||||
/* IUnknown fields */
|
||||
const IClassFactoryVtbl *lpVtbl;
|
||||
IClassFactory IClassFactory_iface;
|
||||
DWORD dwRef;
|
||||
|
||||
CLSID clsid;
|
||||
} IClassFactoryImpl;
|
||||
|
||||
static inline IClassFactoryImpl *impl_from_IClassFactory(IClassFactory *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, IClassFactoryImpl, IClassFactory_iface);
|
||||
}
|
||||
|
||||
static HRESULT AVIFILE_CreateClassFactory(const CLSID *pclsid, const IID *riid,
|
||||
LPVOID *ppv)
|
||||
{
|
||||
|
@ -75,11 +81,11 @@ static HRESULT AVIFILE_CreateClassFactory(const CLSID *pclsid, const IID *riid,
|
|||
if (pClassFactory == NULL)
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
pClassFactory->lpVtbl = &iclassfact;
|
||||
pClassFactory->IClassFactory_iface.lpVtbl = &iclassfact;
|
||||
pClassFactory->dwRef = 0;
|
||||
pClassFactory->clsid = *pclsid;
|
||||
|
||||
hr = IClassFactory_QueryInterface((IClassFactory*)pClassFactory, riid, ppv);
|
||||
hr = IClassFactory_QueryInterface(&pClassFactory->IClassFactory_iface, riid, ppv);
|
||||
if (FAILED(hr)) {
|
||||
HeapFree(GetProcessHeap(), 0, pClassFactory);
|
||||
*ppv = NULL;
|
||||
|
@ -105,7 +111,7 @@ static HRESULT WINAPI IClassFactory_fnQueryInterface(LPCLASSFACTORY iface,
|
|||
|
||||
static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
IClassFactoryImpl *This = impl_from_IClassFactory(iface);
|
||||
|
||||
TRACE("(%p)\n", iface);
|
||||
|
||||
|
@ -114,7 +120,7 @@ static ULONG WINAPI IClassFactory_fnAddRef(LPCLASSFACTORY iface)
|
|||
|
||||
static ULONG WINAPI IClassFactory_fnRelease(LPCLASSFACTORY iface)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
IClassFactoryImpl *This = impl_from_IClassFactory(iface);
|
||||
|
||||
TRACE("(%p)\n", iface);
|
||||
if ((--(This->dwRef)) > 0)
|
||||
|
@ -129,7 +135,7 @@ static HRESULT WINAPI IClassFactory_fnCreateInstance(LPCLASSFACTORY iface,
|
|||
LPUNKNOWN pOuter,
|
||||
REFIID riid,LPVOID *ppobj)
|
||||
{
|
||||
IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
|
||||
IClassFactoryImpl *This = impl_from_IClassFactory(iface);
|
||||
|
||||
TRACE("(%p,%p,%s,%p)\n", iface, pOuter, debugstr_guid(riid),
|
||||
ppobj);
|
||||
|
@ -216,3 +222,19 @@ BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved)
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DllRegisterServer (AVIFIL32.@)
|
||||
*/
|
||||
HRESULT WINAPI DllRegisterServer(void)
|
||||
{
|
||||
return __wine_register_resources( AVIFILE_hModule );
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DllUnregisterServer (AVIFIL32.@)
|
||||
*/
|
||||
HRESULT WINAPI DllUnregisterServer(void)
|
||||
{
|
||||
return __wine_unregister_resources( AVIFILE_hModule );
|
||||
}
|
||||
|
|
|
@ -37,32 +37,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(avifile);
|
|||
|
||||
/***********************************************************************/
|
||||
|
||||
static HRESULT WINAPI IGetFrame_fnQueryInterface(IGetFrame *iface,
|
||||
REFIID refiid, LPVOID *obj);
|
||||
static ULONG WINAPI IGetFrame_fnAddRef(IGetFrame *iface);
|
||||
static ULONG WINAPI IGetFrame_fnRelease(IGetFrame *iface);
|
||||
static LPVOID WINAPI IGetFrame_fnGetFrame(IGetFrame *iface, LONG lPos);
|
||||
static HRESULT WINAPI IGetFrame_fnBegin(IGetFrame *iface, LONG lStart,
|
||||
LONG lEnd, LONG lRate);
|
||||
static HRESULT WINAPI IGetFrame_fnEnd(IGetFrame *iface);
|
||||
static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
|
||||
LPBITMAPINFOHEADER lpbi,
|
||||
LPVOID lpBits, INT x, INT y,
|
||||
INT dx, INT dy);
|
||||
|
||||
static const struct IGetFrameVtbl igetframeVtbl = {
|
||||
IGetFrame_fnQueryInterface,
|
||||
IGetFrame_fnAddRef,
|
||||
IGetFrame_fnRelease,
|
||||
IGetFrame_fnGetFrame,
|
||||
IGetFrame_fnBegin,
|
||||
IGetFrame_fnEnd,
|
||||
IGetFrame_fnSetFormat
|
||||
};
|
||||
|
||||
typedef struct _IGetFrameImpl {
|
||||
/* IUnknown stuff */
|
||||
const IGetFrameVtbl *lpVtbl;
|
||||
IGetFrame IGetFrame_iface;
|
||||
LONG ref;
|
||||
|
||||
/* IGetFrame stuff */
|
||||
|
@ -92,6 +69,11 @@ typedef struct _IGetFrameImpl {
|
|||
|
||||
/***********************************************************************/
|
||||
|
||||
static inline IGetFrameImpl *impl_from_IGetFrame(IGetFrame *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, IGetFrameImpl, IGetFrame_iface);
|
||||
}
|
||||
|
||||
static void AVIFILE_CloseCompressor(IGetFrameImpl *This)
|
||||
{
|
||||
if (This->lpInFormat != This->lpOutFormat) {
|
||||
|
@ -110,30 +92,10 @@ static void AVIFILE_CloseCompressor(IGetFrameImpl *This)
|
|||
}
|
||||
}
|
||||
|
||||
PGETFRAME AVIFILE_CreateGetFrame(PAVISTREAM pStream)
|
||||
{
|
||||
IGetFrameImpl *pg;
|
||||
|
||||
/* check parameter */
|
||||
if (pStream == NULL)
|
||||
return NULL;
|
||||
|
||||
pg = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IGetFrameImpl));
|
||||
if (pg != NULL) {
|
||||
pg->lpVtbl = &igetframeVtbl;
|
||||
pg->ref = 1;
|
||||
pg->lCurrentFrame = -1;
|
||||
pg->pStream = pStream;
|
||||
IAVIStream_AddRef(pStream);
|
||||
}
|
||||
|
||||
return (PGETFRAME)pg;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IGetFrame_fnQueryInterface(IGetFrame *iface,
|
||||
REFIID refiid, LPVOID *obj)
|
||||
{
|
||||
IGetFrameImpl *This = (IGetFrameImpl *)iface;
|
||||
IGetFrameImpl *This = impl_from_IGetFrame(iface);
|
||||
|
||||
TRACE("(%p,%s,%p)\n", This, debugstr_guid(refiid), obj);
|
||||
|
||||
|
@ -149,7 +111,7 @@ static HRESULT WINAPI IGetFrame_fnQueryInterface(IGetFrame *iface,
|
|||
|
||||
static ULONG WINAPI IGetFrame_fnAddRef(IGetFrame *iface)
|
||||
{
|
||||
IGetFrameImpl *This = (IGetFrameImpl *)iface;
|
||||
IGetFrameImpl *This = impl_from_IGetFrame(iface);
|
||||
ULONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p)\n", iface);
|
||||
|
@ -159,7 +121,7 @@ static ULONG WINAPI IGetFrame_fnAddRef(IGetFrame *iface)
|
|||
|
||||
static ULONG WINAPI IGetFrame_fnRelease(IGetFrame *iface)
|
||||
{
|
||||
IGetFrameImpl *This = (IGetFrameImpl *)iface;
|
||||
IGetFrameImpl *This = impl_from_IGetFrame(iface);
|
||||
ULONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p)\n", iface);
|
||||
|
@ -180,7 +142,7 @@ static ULONG WINAPI IGetFrame_fnRelease(IGetFrame *iface)
|
|||
|
||||
static LPVOID WINAPI IGetFrame_fnGetFrame(IGetFrame *iface, LONG lPos)
|
||||
{
|
||||
IGetFrameImpl *This = (IGetFrameImpl *)iface;
|
||||
IGetFrameImpl *This = impl_from_IGetFrame(iface);
|
||||
|
||||
LONG readBytes;
|
||||
LONG readSamples;
|
||||
|
@ -253,7 +215,7 @@ static LPVOID WINAPI IGetFrame_fnGetFrame(IGetFrame *iface, LONG lPos)
|
|||
if (FAILED(AVIStreamSampleSize(This->pStream, lNext, &readBytes)))
|
||||
return NULL; /* bad thing, but bad things will happen */
|
||||
if (readBytes <= 0) {
|
||||
ERR(": IAVIStream::REad doesn't return needed bytes!\n");
|
||||
ERR(": IAVIStream::Read doesn't return needed bytes!\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -299,7 +261,7 @@ static LPVOID WINAPI IGetFrame_fnGetFrame(IGetFrame *iface, LONG lPos)
|
|||
static HRESULT WINAPI IGetFrame_fnBegin(IGetFrame *iface, LONG lStart,
|
||||
LONG lEnd, LONG lRate)
|
||||
{
|
||||
IGetFrameImpl *This = (IGetFrameImpl *)iface;
|
||||
IGetFrameImpl *This = impl_from_IGetFrame(iface);
|
||||
|
||||
TRACE("(%p,%d,%d,%d)\n", iface, lStart, lEnd, lRate);
|
||||
|
||||
|
@ -310,7 +272,7 @@ static HRESULT WINAPI IGetFrame_fnBegin(IGetFrame *iface, LONG lStart,
|
|||
|
||||
static HRESULT WINAPI IGetFrame_fnEnd(IGetFrame *iface)
|
||||
{
|
||||
IGetFrameImpl *This = (IGetFrameImpl *)iface;
|
||||
IGetFrameImpl *This = impl_from_IGetFrame(iface);
|
||||
|
||||
TRACE("(%p)\n", iface);
|
||||
|
||||
|
@ -324,7 +286,7 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
|
|||
LPVOID lpBits, INT x, INT y,
|
||||
INT dx, INT dy)
|
||||
{
|
||||
IGetFrameImpl *This = (IGetFrameImpl *)iface;
|
||||
IGetFrameImpl *This = impl_from_IGetFrame(iface);
|
||||
|
||||
AVISTREAMINFOW sInfo;
|
||||
LPBITMAPINFOHEADER lpbi = lpbiWanted;
|
||||
|
@ -516,4 +478,34 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
|
|||
}
|
||||
}
|
||||
|
||||
static const struct IGetFrameVtbl igetframeVtbl = {
|
||||
IGetFrame_fnQueryInterface,
|
||||
IGetFrame_fnAddRef,
|
||||
IGetFrame_fnRelease,
|
||||
IGetFrame_fnGetFrame,
|
||||
IGetFrame_fnBegin,
|
||||
IGetFrame_fnEnd,
|
||||
IGetFrame_fnSetFormat
|
||||
};
|
||||
|
||||
PGETFRAME AVIFILE_CreateGetFrame(PAVISTREAM pStream)
|
||||
{
|
||||
IGetFrameImpl *pg;
|
||||
|
||||
/* check parameter */
|
||||
if (pStream == NULL)
|
||||
return NULL;
|
||||
|
||||
pg = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IGetFrameImpl));
|
||||
if (pg != NULL) {
|
||||
pg->IGetFrame_iface.lpVtbl = &igetframeVtbl;
|
||||
pg->ref = 1;
|
||||
pg->lCurrentFrame = -1;
|
||||
pg->pStream = pStream;
|
||||
IAVIStream_AddRef(pStream);
|
||||
}
|
||||
|
||||
return (PGETFRAME)pg;
|
||||
}
|
||||
|
||||
/***********************************************************************/
|
||||
|
|
|
@ -38,42 +38,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(avifile);
|
|||
|
||||
/***********************************************************************/
|
||||
|
||||
static HRESULT WINAPI ICMStream_fnQueryInterface(IAVIStream*iface,REFIID refiid,LPVOID *obj);
|
||||
static ULONG WINAPI ICMStream_fnAddRef(IAVIStream*iface);
|
||||
static ULONG WINAPI ICMStream_fnRelease(IAVIStream* iface);
|
||||
static HRESULT WINAPI ICMStream_fnCreate(IAVIStream*iface,LPARAM lParam1,LPARAM lParam2);
|
||||
static HRESULT WINAPI ICMStream_fnInfo(IAVIStream*iface,AVISTREAMINFOW *psi,LONG size);
|
||||
static LONG WINAPI ICMStream_fnFindSample(IAVIStream*iface,LONG pos,LONG flags);
|
||||
static HRESULT WINAPI ICMStream_fnReadFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG *formatsize);
|
||||
static HRESULT WINAPI ICMStream_fnSetFormat(IAVIStream*iface,LONG pos,LPVOID format,LONG formatsize);
|
||||
static HRESULT WINAPI ICMStream_fnRead(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,LONG *bytesread,LONG *samplesread);
|
||||
static HRESULT WINAPI ICMStream_fnWrite(IAVIStream*iface,LONG start,LONG samples,LPVOID buffer,LONG buffersize,DWORD flags,LONG *sampwritten,LONG *byteswritten);
|
||||
static HRESULT WINAPI ICMStream_fnDelete(IAVIStream*iface,LONG start,LONG samples);
|
||||
static HRESULT WINAPI ICMStream_fnReadData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG *lpread);
|
||||
static HRESULT WINAPI ICMStream_fnWriteData(IAVIStream*iface,DWORD fcc,LPVOID lp,LONG size);
|
||||
static HRESULT WINAPI ICMStream_fnSetInfo(IAVIStream*iface,AVISTREAMINFOW*info,LONG infolen);
|
||||
|
||||
static const struct IAVIStreamVtbl iicmst = {
|
||||
ICMStream_fnQueryInterface,
|
||||
ICMStream_fnAddRef,
|
||||
ICMStream_fnRelease,
|
||||
ICMStream_fnCreate,
|
||||
ICMStream_fnInfo,
|
||||
ICMStream_fnFindSample,
|
||||
ICMStream_fnReadFormat,
|
||||
ICMStream_fnSetFormat,
|
||||
ICMStream_fnRead,
|
||||
ICMStream_fnWrite,
|
||||
ICMStream_fnDelete,
|
||||
ICMStream_fnReadData,
|
||||
ICMStream_fnWriteData,
|
||||
ICMStream_fnSetInfo
|
||||
};
|
||||
|
||||
typedef struct _IAVIStreamImpl {
|
||||
/* IUnknown stuff */
|
||||
const IAVIStreamVtbl *lpVtbl;
|
||||
LONG ref;
|
||||
IAVIStream IAVIStream_iface;
|
||||
LONG ref;
|
||||
|
||||
/* IAVIStream stuff */
|
||||
PAVISTREAM pStream;
|
||||
|
@ -107,6 +75,11 @@ static HRESULT AVIFILE_EncodeFrame(IAVIStreamImpl *This,
|
|||
LPBITMAPINFOHEADER lpbi, LPVOID lpBits);
|
||||
static HRESULT AVIFILE_OpenGetFrame(IAVIStreamImpl *This);
|
||||
|
||||
static inline IAVIStreamImpl *impl_from_IAVIStream(IAVIStream *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, IAVIStreamImpl, IAVIStream_iface);
|
||||
}
|
||||
|
||||
static inline void AVIFILE_Reset(IAVIStreamImpl *This)
|
||||
{
|
||||
This->lCurrent = -1;
|
||||
|
@ -115,33 +88,10 @@ static inline void AVIFILE_Reset(IAVIStreamImpl *This)
|
|||
This->dwUnusedBytes = 0;
|
||||
}
|
||||
|
||||
HRESULT AVIFILE_CreateICMStream(REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
IAVIStreamImpl *pstream;
|
||||
HRESULT hr;
|
||||
|
||||
assert(riid != NULL && ppv != NULL);
|
||||
|
||||
*ppv = NULL;
|
||||
|
||||
pstream = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAVIStreamImpl));
|
||||
if (pstream == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
|
||||
pstream->lpVtbl = &iicmst;
|
||||
AVIFILE_Reset(pstream);
|
||||
|
||||
hr = IAVIStream_QueryInterface((IAVIStream*)pstream, riid, ppv);
|
||||
if (FAILED(hr))
|
||||
HeapFree(GetProcessHeap(), 0, pstream);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ICMStream_fnQueryInterface(IAVIStream *iface,
|
||||
REFIID refiid, LPVOID *obj)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%s,%p)\n", iface, debugstr_guid(refiid), obj);
|
||||
|
||||
|
@ -158,7 +108,7 @@ static HRESULT WINAPI ICMStream_fnQueryInterface(IAVIStream *iface,
|
|||
|
||||
static ULONG WINAPI ICMStream_fnAddRef(IAVIStream *iface)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
ULONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) -> %d\n", iface, ref);
|
||||
|
@ -172,7 +122,7 @@ static ULONG WINAPI ICMStream_fnAddRef(IAVIStream *iface)
|
|||
|
||||
static ULONG WINAPI ICMStream_fnRelease(IAVIStream* iface)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
ULONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) -> %d\n", iface, ref);
|
||||
|
@ -231,7 +181,7 @@ static ULONG WINAPI ICMStream_fnRelease(IAVIStream* iface)
|
|||
static HRESULT WINAPI ICMStream_fnCreate(IAVIStream *iface, LPARAM lParam1,
|
||||
LPARAM lParam2)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
ICINFO icinfo;
|
||||
ICCOMPRESSFRAMES icFrames;
|
||||
|
@ -320,7 +270,7 @@ static HRESULT WINAPI ICMStream_fnCreate(IAVIStream *iface, LPARAM lParam1,
|
|||
static HRESULT WINAPI ICMStream_fnInfo(IAVIStream *iface,LPAVISTREAMINFOW psi,
|
||||
LONG size)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%p,%d)\n", iface, psi, size);
|
||||
|
||||
|
@ -339,7 +289,7 @@ static HRESULT WINAPI ICMStream_fnInfo(IAVIStream *iface,LPAVISTREAMINFOW psi,
|
|||
static LONG WINAPI ICMStream_fnFindSample(IAVIStream *iface, LONG pos,
|
||||
LONG flags)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%d,0x%08X)\n",iface,pos,flags);
|
||||
|
||||
|
@ -376,7 +326,7 @@ static LONG WINAPI ICMStream_fnFindSample(IAVIStream *iface, LONG pos,
|
|||
static HRESULT WINAPI ICMStream_fnReadFormat(IAVIStream *iface, LONG pos,
|
||||
LPVOID format, LONG *formatsize)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
LPBITMAPINFOHEADER lpbi;
|
||||
HRESULT hr;
|
||||
|
@ -427,7 +377,7 @@ static HRESULT WINAPI ICMStream_fnReadFormat(IAVIStream *iface, LONG pos,
|
|||
static HRESULT WINAPI ICMStream_fnSetFormat(IAVIStream *iface, LONG pos,
|
||||
LPVOID format, LONG formatsize)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%d,%p,%d)\n", iface, pos, format, formatsize);
|
||||
|
||||
|
@ -579,7 +529,7 @@ static HRESULT WINAPI ICMStream_fnRead(IAVIStream *iface, LONG start,
|
|||
LONG buffersize, LPLONG bytesread,
|
||||
LPLONG samplesread)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
LPBITMAPINFOHEADER lpbi;
|
||||
|
||||
|
@ -673,7 +623,7 @@ static HRESULT WINAPI ICMStream_fnWrite(IAVIStream *iface, LONG start,
|
|||
LPLONG sampwritten,
|
||||
LPLONG byteswritten)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
HRESULT hr;
|
||||
|
||||
|
@ -718,7 +668,7 @@ static HRESULT WINAPI ICMStream_fnWrite(IAVIStream *iface, LONG start,
|
|||
static HRESULT WINAPI ICMStream_fnDelete(IAVIStream *iface, LONG start,
|
||||
LONG samples)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,%d,%d)\n", iface, start, samples);
|
||||
|
||||
|
@ -728,7 +678,7 @@ static HRESULT WINAPI ICMStream_fnDelete(IAVIStream *iface, LONG start,
|
|||
static HRESULT WINAPI ICMStream_fnReadData(IAVIStream *iface, DWORD fcc,
|
||||
LPVOID lp, LPLONG lpread)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,0x%08X,%p,%p)\n", iface, fcc, lp, lpread);
|
||||
|
||||
|
@ -740,7 +690,7 @@ static HRESULT WINAPI ICMStream_fnReadData(IAVIStream *iface, DWORD fcc,
|
|||
static HRESULT WINAPI ICMStream_fnWriteData(IAVIStream *iface, DWORD fcc,
|
||||
LPVOID lp, LONG size)
|
||||
{
|
||||
IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
|
||||
IAVIStreamImpl *This = impl_from_IAVIStream(iface);
|
||||
|
||||
TRACE("(%p,0x%08x,%p,%d)\n", iface, fcc, lp, size);
|
||||
|
||||
|
@ -757,6 +707,46 @@ static HRESULT WINAPI ICMStream_fnSetInfo(IAVIStream *iface,
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
static const struct IAVIStreamVtbl iicmst = {
|
||||
ICMStream_fnQueryInterface,
|
||||
ICMStream_fnAddRef,
|
||||
ICMStream_fnRelease,
|
||||
ICMStream_fnCreate,
|
||||
ICMStream_fnInfo,
|
||||
ICMStream_fnFindSample,
|
||||
ICMStream_fnReadFormat,
|
||||
ICMStream_fnSetFormat,
|
||||
ICMStream_fnRead,
|
||||
ICMStream_fnWrite,
|
||||
ICMStream_fnDelete,
|
||||
ICMStream_fnReadData,
|
||||
ICMStream_fnWriteData,
|
||||
ICMStream_fnSetInfo
|
||||
};
|
||||
|
||||
HRESULT AVIFILE_CreateICMStream(REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
IAVIStreamImpl *pstream;
|
||||
HRESULT hr;
|
||||
|
||||
assert(riid != NULL && ppv != NULL);
|
||||
|
||||
*ppv = NULL;
|
||||
|
||||
pstream = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAVIStreamImpl));
|
||||
if (pstream == NULL)
|
||||
return AVIERR_MEMORY;
|
||||
|
||||
pstream->IAVIStream_iface.lpVtbl = &iicmst;
|
||||
AVIFILE_Reset(pstream);
|
||||
|
||||
hr = IAVIStream_QueryInterface(&pstream->IAVIStream_iface, riid, ppv);
|
||||
if (FAILED(hr))
|
||||
HeapFree(GetProcessHeap(), 0, pstream);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
/***********************************************************************/
|
||||
|
||||
static HRESULT AVIFILE_EncodeFrame(IAVIStreamImpl *This,
|
||||
|
|
|
@ -1,516 +0,0 @@
|
|||
/*
|
||||
* self-registerable dll functions for avifile.dll and avifil32.dll
|
||||
*
|
||||
* Copyright (C) 2003 John K. Hohm
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wingdi.h"
|
||||
#include "winuser.h"
|
||||
#include "winreg.h"
|
||||
#include "winerror.h"
|
||||
|
||||
#include "vfw.h"
|
||||
#include "avifile_private.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "wine/unicode.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(avifile);
|
||||
|
||||
/*
|
||||
* Near the bottom of this file are the exported DllRegisterServer and
|
||||
* DllUnregisterServer, which make all this worthwhile.
|
||||
*/
|
||||
|
||||
/***********************************************************************
|
||||
* interface for self-registering
|
||||
*/
|
||||
struct regsvr_interface
|
||||
{
|
||||
IID const *iid; /* NULL for end of list */
|
||||
LPCSTR name; /* can be NULL to omit */
|
||||
IID const *base_iid; /* can be NULL to omit */
|
||||
int num_methods; /* can be <0 to omit */
|
||||
CLSID const *ps_clsid; /* can be NULL to omit */
|
||||
CLSID const *ps_clsid32; /* can be NULL to omit */
|
||||
};
|
||||
|
||||
static HRESULT register_interfaces(struct regsvr_interface const *list);
|
||||
static HRESULT unregister_interfaces(struct regsvr_interface const *list);
|
||||
|
||||
struct regsvr_coclass
|
||||
{
|
||||
CLSID const *clsid; /* NULL for end of list */
|
||||
LPCSTR name; /* can be NULL to omit */
|
||||
LPCSTR ips; /* can be NULL to omit */
|
||||
LPCSTR ips32; /* can be NULL to omit */
|
||||
LPCSTR ips32_tmodel; /* can be NULL to omit */
|
||||
LPCSTR progid; /* can be NULL to omit */
|
||||
LPCSTR viprogid; /* can be NULL to omit */
|
||||
LPCSTR progid_extra; /* can be NULL to omit */
|
||||
};
|
||||
|
||||
static HRESULT register_coclasses(struct regsvr_coclass const *list);
|
||||
static HRESULT unregister_coclasses(struct regsvr_coclass const *list);
|
||||
|
||||
/***********************************************************************
|
||||
* static string constants
|
||||
*/
|
||||
static WCHAR const interface_keyname[10] = {
|
||||
'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', 0 };
|
||||
static WCHAR const base_ifa_keyname[14] = {
|
||||
'B', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c',
|
||||
'e', 0 };
|
||||
static WCHAR const num_methods_keyname[11] = {
|
||||
'N', 'u', 'm', 'M', 'e', 't', 'h', 'o', 'd', 's', 0 };
|
||||
static WCHAR const ps_clsid_keyname[15] = {
|
||||
'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's',
|
||||
'i', 'd', 0 };
|
||||
static WCHAR const ps_clsid32_keyname[17] = {
|
||||
'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's',
|
||||
'i', 'd', '3', '2', 0 };
|
||||
static WCHAR const clsid_keyname[6] = {
|
||||
'C', 'L', 'S', 'I', 'D', 0 };
|
||||
static WCHAR const curver_keyname[7] = {
|
||||
'C', 'u', 'r', 'V', 'e', 'r', 0 };
|
||||
static WCHAR const ips_keyname[13] = {
|
||||
'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r',
|
||||
0 };
|
||||
static WCHAR const ips32_keyname[15] = {
|
||||
'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r',
|
||||
'3', '2', 0 };
|
||||
static WCHAR const progid_keyname[7] = {
|
||||
'P', 'r', 'o', 'g', 'I', 'D', 0 };
|
||||
static WCHAR const viprogid_keyname[25] = {
|
||||
'V', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'd', 'e', 'p',
|
||||
'e', 'n', 'd', 'e', 'n', 't', 'P', 'r', 'o', 'g', 'I', 'D',
|
||||
0 };
|
||||
static char const tmodel_valuename[] = "ThreadingModel";
|
||||
|
||||
/***********************************************************************
|
||||
* static helper functions
|
||||
*/
|
||||
static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid);
|
||||
static LONG register_key_defvalueW(HKEY base, WCHAR const *name,
|
||||
WCHAR const *value);
|
||||
static LONG register_key_defvalueA(HKEY base, WCHAR const *name,
|
||||
char const *value);
|
||||
static LONG register_progid(WCHAR const *clsid,
|
||||
char const *progid, char const *curver_progid,
|
||||
char const *name, char const *extra);
|
||||
|
||||
/***********************************************************************
|
||||
* register_interfaces
|
||||
*/
|
||||
static HRESULT register_interfaces(struct regsvr_interface const *list)
|
||||
{
|
||||
LONG res = ERROR_SUCCESS;
|
||||
HKEY interface_key;
|
||||
|
||||
res = RegCreateKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &interface_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_return;
|
||||
|
||||
for (; res == ERROR_SUCCESS && list->iid; ++list) {
|
||||
WCHAR buf[39];
|
||||
HKEY iid_key;
|
||||
|
||||
StringFromGUID2(list->iid, buf, 39);
|
||||
res = RegCreateKeyExW(interface_key, buf, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &iid_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_interface_key;
|
||||
|
||||
if (list->name) {
|
||||
res = RegSetValueExA(iid_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)(list->name),
|
||||
strlen(list->name) + 1);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (list->base_iid) {
|
||||
res = register_key_guid(iid_key, base_ifa_keyname, list->base_iid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (0 <= list->num_methods) {
|
||||
static WCHAR const fmt[3] = { '%', 'd', 0 };
|
||||
HKEY key;
|
||||
|
||||
res = RegCreateKeyExW(iid_key, num_methods_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
|
||||
sprintfW(buf, fmt, list->num_methods);
|
||||
res = RegSetValueExW(key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)buf,
|
||||
(lstrlenW(buf) + 1) * sizeof(WCHAR));
|
||||
RegCloseKey(key);
|
||||
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (list->ps_clsid) {
|
||||
res = register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
if (list->ps_clsid32) {
|
||||
res = register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32);
|
||||
if (res != ERROR_SUCCESS) goto error_close_iid_key;
|
||||
}
|
||||
|
||||
error_close_iid_key:
|
||||
RegCloseKey(iid_key);
|
||||
}
|
||||
|
||||
error_close_interface_key:
|
||||
RegCloseKey(interface_key);
|
||||
error_return:
|
||||
return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* unregister_interfaces
|
||||
*/
|
||||
static HRESULT unregister_interfaces(struct regsvr_interface const *list)
|
||||
{
|
||||
LONG res = ERROR_SUCCESS;
|
||||
HKEY interface_key;
|
||||
|
||||
res = RegOpenKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0,
|
||||
KEY_READ | KEY_WRITE, &interface_key);
|
||||
if (res == ERROR_FILE_NOT_FOUND) return S_OK;
|
||||
if (res != ERROR_SUCCESS) goto error_return;
|
||||
|
||||
for (; res == ERROR_SUCCESS && list->iid; ++list) {
|
||||
WCHAR buf[39];
|
||||
|
||||
StringFromGUID2(list->iid, buf, 39);
|
||||
res = RegDeleteTreeW(interface_key, buf);
|
||||
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
RegCloseKey(interface_key);
|
||||
error_return:
|
||||
return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* register_coclasses
|
||||
*/
|
||||
static HRESULT register_coclasses(struct regsvr_coclass const *list)
|
||||
{
|
||||
LONG res = ERROR_SUCCESS;
|
||||
HKEY coclass_key;
|
||||
|
||||
res = RegCreateKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &coclass_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_return;
|
||||
|
||||
for (; res == ERROR_SUCCESS && list->clsid; ++list) {
|
||||
WCHAR buf[39];
|
||||
HKEY clsid_key;
|
||||
|
||||
StringFromGUID2(list->clsid, buf, 39);
|
||||
res = RegCreateKeyExW(coclass_key, buf, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &clsid_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
|
||||
if (list->name) {
|
||||
res = RegSetValueExA(clsid_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)(list->name),
|
||||
strlen(list->name) + 1);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->ips) {
|
||||
res = register_key_defvalueA(clsid_key, ips_keyname, list->ips);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->ips32) {
|
||||
HKEY ips32_key;
|
||||
|
||||
res = RegCreateKeyExW(clsid_key, ips32_keyname, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL,
|
||||
&ips32_key, NULL);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
|
||||
res = RegSetValueExA(ips32_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)list->ips32,
|
||||
lstrlenA(list->ips32) + 1);
|
||||
if (res == ERROR_SUCCESS && list->ips32_tmodel)
|
||||
res = RegSetValueExA(ips32_key, tmodel_valuename, 0, REG_SZ,
|
||||
(CONST BYTE*)list->ips32_tmodel,
|
||||
strlen(list->ips32_tmodel) + 1);
|
||||
RegCloseKey(ips32_key);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->progid) {
|
||||
res = register_key_defvalueA(clsid_key, progid_keyname,
|
||||
list->progid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
|
||||
res = register_progid(buf, list->progid, NULL,
|
||||
list->name, list->progid_extra);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
if (list->viprogid) {
|
||||
res = register_key_defvalueA(clsid_key, viprogid_keyname,
|
||||
list->viprogid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
|
||||
res = register_progid(buf, list->viprogid, list->progid,
|
||||
list->name, list->progid_extra);
|
||||
if (res != ERROR_SUCCESS) goto error_close_clsid_key;
|
||||
}
|
||||
|
||||
error_close_clsid_key:
|
||||
RegCloseKey(clsid_key);
|
||||
}
|
||||
|
||||
error_close_coclass_key:
|
||||
RegCloseKey(coclass_key);
|
||||
error_return:
|
||||
return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* unregister_coclasses
|
||||
*/
|
||||
static HRESULT unregister_coclasses(struct regsvr_coclass const *list)
|
||||
{
|
||||
LONG res = ERROR_SUCCESS;
|
||||
HKEY coclass_key;
|
||||
|
||||
res = RegOpenKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0,
|
||||
KEY_READ | KEY_WRITE, &coclass_key);
|
||||
if (res == ERROR_FILE_NOT_FOUND) return S_OK;
|
||||
if (res != ERROR_SUCCESS) goto error_return;
|
||||
|
||||
for (; res == ERROR_SUCCESS && list->clsid; ++list) {
|
||||
WCHAR buf[39];
|
||||
|
||||
StringFromGUID2(list->clsid, buf, 39);
|
||||
res = RegDeleteTreeW(coclass_key, buf);
|
||||
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
|
||||
if (list->progid) {
|
||||
res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid);
|
||||
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
}
|
||||
|
||||
if (list->viprogid) {
|
||||
res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->viprogid);
|
||||
if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS;
|
||||
if (res != ERROR_SUCCESS) goto error_close_coclass_key;
|
||||
}
|
||||
}
|
||||
|
||||
error_close_coclass_key:
|
||||
RegCloseKey(coclass_key);
|
||||
error_return:
|
||||
return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* regsvr_key_guid
|
||||
*/
|
||||
static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid)
|
||||
{
|
||||
WCHAR buf[39];
|
||||
|
||||
StringFromGUID2(guid, buf, 39);
|
||||
return register_key_defvalueW(base, name, buf);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* regsvr_key_defvalueW
|
||||
*/
|
||||
static LONG register_key_defvalueW(
|
||||
HKEY base,
|
||||
WCHAR const *name,
|
||||
WCHAR const *value)
|
||||
{
|
||||
LONG res;
|
||||
HKEY key;
|
||||
|
||||
res = RegCreateKeyExW(base, name, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &key, NULL);
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
res = RegSetValueExW(key, NULL, 0, REG_SZ, (CONST BYTE*)value,
|
||||
(lstrlenW(value) + 1) * sizeof(WCHAR));
|
||||
RegCloseKey(key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* regsvr_key_defvalueA
|
||||
*/
|
||||
static LONG register_key_defvalueA(
|
||||
HKEY base,
|
||||
WCHAR const *name,
|
||||
char const *value)
|
||||
{
|
||||
LONG res;
|
||||
HKEY key;
|
||||
|
||||
res = RegCreateKeyExW(base, name, 0, NULL, 0,
|
||||
KEY_READ | KEY_WRITE, NULL, &key, NULL);
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
res = RegSetValueExA(key, NULL, 0, REG_SZ, (CONST BYTE*)value,
|
||||
lstrlenA(value) + 1);
|
||||
RegCloseKey(key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* regsvr_progid
|
||||
*/
|
||||
static LONG register_progid(
|
||||
WCHAR const *clsid,
|
||||
char const *progid,
|
||||
char const *curver_progid,
|
||||
char const *name,
|
||||
char const *extra)
|
||||
{
|
||||
LONG res;
|
||||
HKEY progid_key;
|
||||
|
||||
res = RegCreateKeyExA(HKEY_CLASSES_ROOT, progid, 0,
|
||||
NULL, 0, KEY_READ | KEY_WRITE, NULL,
|
||||
&progid_key, NULL);
|
||||
if (res != ERROR_SUCCESS) return res;
|
||||
|
||||
if (name) {
|
||||
res = RegSetValueExA(progid_key, NULL, 0, REG_SZ,
|
||||
(CONST BYTE*)name, strlen(name) + 1);
|
||||
if (res != ERROR_SUCCESS) goto error_close_progid_key;
|
||||
}
|
||||
|
||||
if (clsid) {
|
||||
res = register_key_defvalueW(progid_key, clsid_keyname, clsid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_progid_key;
|
||||
}
|
||||
|
||||
if (curver_progid) {
|
||||
res = register_key_defvalueA(progid_key, curver_keyname,
|
||||
curver_progid);
|
||||
if (res != ERROR_SUCCESS) goto error_close_progid_key;
|
||||
}
|
||||
|
||||
if (extra) {
|
||||
HKEY extra_key;
|
||||
|
||||
res = RegCreateKeyExA(progid_key, extra, 0,
|
||||
NULL, 0, KEY_READ | KEY_WRITE, NULL,
|
||||
&extra_key, NULL);
|
||||
if (res == ERROR_SUCCESS)
|
||||
RegCloseKey(extra_key);
|
||||
}
|
||||
|
||||
error_close_progid_key:
|
||||
RegCloseKey(progid_key);
|
||||
return res;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* coclass list
|
||||
*/
|
||||
static GUID const CLSID_AVIProxy = {
|
||||
0x0002000D, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} };
|
||||
|
||||
static struct regsvr_coclass const coclass_list[] = {
|
||||
{ &CLSID_AVIFile,
|
||||
"Microsoft AVI Files",
|
||||
"avifile.dll",
|
||||
"avifil32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_ICMStream,
|
||||
"AVI Compressed Stream",
|
||||
"avifile.dll",
|
||||
"avifil32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_WAVFile,
|
||||
"Microsoft Wave File",
|
||||
"avifile.dll",
|
||||
"avifil32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_AVIProxy,
|
||||
"IAVIStream & IAVIFile Proxy",
|
||||
"avifile.dll",
|
||||
"avifil32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ &CLSID_ACMStream,
|
||||
"ACM Compressed Audio Stream",
|
||||
"avifile.dll",
|
||||
"avifil32.dll",
|
||||
"Apartment"
|
||||
},
|
||||
{ NULL } /* list terminator */
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
* interface list
|
||||
*/
|
||||
|
||||
static struct regsvr_interface const interface_list[] = {
|
||||
{ NULL } /* list terminator */
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
* DllRegisterServer (AVIFILE.@)
|
||||
*/
|
||||
HRESULT WINAPI DllRegisterServer(void)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
hr = register_coclasses(coclass_list);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = register_interfaces(interface_list);
|
||||
return hr;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DllUnregisterServer (AVIFILE.@)
|
||||
*/
|
||||
HRESULT WINAPI DllUnregisterServer(void)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("\n");
|
||||
|
||||
hr = unregister_coclasses(coclass_list);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = unregister_interfaces(interface_list);
|
||||
return hr;
|
||||
}
|
|
@ -22,11 +22,14 @@
|
|||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
#define WINE_OLESELFREGISTER
|
||||
/* @makedep: avifile.rgs */
|
||||
1 WINE_REGISTRY avifile.rgs
|
||||
|
||||
#define WINE_FILEDESCRIPTION_STR "Wine AVI file support library"
|
||||
#define WINE_FILENAME_STR "avifil32.dll"
|
||||
#define WINE_FILEVERSION 4,0,3,1998
|
||||
#define WINE_FILEVERSION_STR "4.03.1998"
|
||||
#define WINE_EXTRAVALUES VALUE "OLESelfRegister",""
|
||||
|
||||
#include "wine/wine_common_ver.rc"
|
||||
#include "avifile_private.h"
|
||||
|
|
|
@ -34,102 +34,23 @@ WINE_DEFAULT_DEBUG_CHANNEL(avifile);
|
|||
|
||||
/***********************************************************************/
|
||||
|
||||
static HRESULT WINAPI ITmpFile_fnQueryInterface(IAVIFile* iface,REFIID refiid,LPVOID *obj);
|
||||
static ULONG WINAPI ITmpFile_fnAddRef(IAVIFile* iface);
|
||||
static ULONG WINAPI ITmpFile_fnRelease(IAVIFile* iface);
|
||||
static HRESULT WINAPI ITmpFile_fnInfo(IAVIFile*iface,AVIFILEINFOW*afi,LONG size);
|
||||
static HRESULT WINAPI ITmpFile_fnGetStream(IAVIFile*iface,PAVISTREAM*avis,DWORD fccType,LONG lParam);
|
||||
static HRESULT WINAPI ITmpFile_fnCreateStream(IAVIFile*iface,PAVISTREAM*avis,AVISTREAMINFOW*asi);
|
||||
static HRESULT WINAPI ITmpFile_fnWriteData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG size);
|
||||
static HRESULT WINAPI ITmpFile_fnReadData(IAVIFile*iface,DWORD ckid,LPVOID lpData,LONG *size);
|
||||
static HRESULT WINAPI ITmpFile_fnEndRecord(IAVIFile*iface);
|
||||
static HRESULT WINAPI ITmpFile_fnDeleteStream(IAVIFile*iface,DWORD fccType,LONG lParam);
|
||||
|
||||
static const struct IAVIFileVtbl itmpft = {
|
||||
ITmpFile_fnQueryInterface,
|
||||
ITmpFile_fnAddRef,
|
||||
ITmpFile_fnRelease,
|
||||
ITmpFile_fnInfo,
|
||||
ITmpFile_fnGetStream,
|
||||
ITmpFile_fnCreateStream,
|
||||
ITmpFile_fnWriteData,
|
||||
ITmpFile_fnReadData,
|
||||
ITmpFile_fnEndRecord,
|
||||
ITmpFile_fnDeleteStream
|
||||
};
|
||||
|
||||
typedef struct _ITmpFileImpl {
|
||||
/* IUnknown stuff */
|
||||
const IAVIFileVtbl *lpVtbl;
|
||||
IAVIFile IAVIFile_iface;
|
||||
LONG ref;
|
||||
|
||||
/* IAVIFile stuff */
|
||||
AVIFILEINFOW fInfo;
|
||||
PAVISTREAM *ppStreams;
|
||||
} ITmpFileImpl;
|
||||
|
||||
PAVIFILE AVIFILE_CreateAVITempFile(int nStreams, const PAVISTREAM *ppStreams) {
|
||||
ITmpFileImpl *tmpFile;
|
||||
int i;
|
||||
|
||||
tmpFile = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ITmpFileImpl));
|
||||
if (tmpFile == NULL)
|
||||
return NULL;
|
||||
|
||||
tmpFile->lpVtbl = &itmpft;
|
||||
tmpFile->ref = 1;
|
||||
memset(&tmpFile->fInfo, 0, sizeof(tmpFile->fInfo));
|
||||
|
||||
tmpFile->fInfo.dwStreams = nStreams;
|
||||
tmpFile->ppStreams = HeapAlloc(GetProcessHeap(), 0, nStreams * sizeof(PAVISTREAM));
|
||||
if (tmpFile->ppStreams == NULL) {
|
||||
HeapFree(GetProcessHeap(), 0, tmpFile);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < nStreams; i++) {
|
||||
AVISTREAMINFOW sInfo;
|
||||
|
||||
tmpFile->ppStreams[i] = ppStreams[i];
|
||||
|
||||
AVIStreamAddRef(ppStreams[i]);
|
||||
AVIStreamInfoW(ppStreams[i], &sInfo, sizeof(sInfo));
|
||||
if (i == 0) {
|
||||
tmpFile->fInfo.dwScale = sInfo.dwScale;
|
||||
tmpFile->fInfo.dwRate = sInfo.dwRate;
|
||||
if (!sInfo.dwScale || !sInfo.dwRate) {
|
||||
tmpFile->fInfo.dwScale = 1;
|
||||
tmpFile->fInfo.dwRate = 100;
|
||||
}
|
||||
}
|
||||
|
||||
if (tmpFile->fInfo.dwSuggestedBufferSize < sInfo.dwSuggestedBufferSize)
|
||||
tmpFile->fInfo.dwSuggestedBufferSize = sInfo.dwSuggestedBufferSize;
|
||||
|
||||
{
|
||||
register DWORD tmp;
|
||||
|
||||
tmp = MulDiv(AVIStreamSampleToTime(ppStreams[i], sInfo.dwLength),
|
||||
tmpFile->fInfo.dwScale, tmpFile->fInfo.dwRate * 1000);
|
||||
if (tmpFile->fInfo.dwLength < tmp)
|
||||
tmpFile->fInfo.dwLength = tmp;
|
||||
|
||||
tmp = sInfo.rcFrame.right - sInfo.rcFrame.left;
|
||||
if (tmpFile->fInfo.dwWidth < tmp)
|
||||
tmpFile->fInfo.dwWidth = tmp;
|
||||
tmp = sInfo.rcFrame.bottom - sInfo.rcFrame.top;
|
||||
if (tmpFile->fInfo.dwHeight < tmp)
|
||||
tmpFile->fInfo.dwHeight = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
return (PAVIFILE)tmpFile;
|
||||
static inline ITmpFileImpl *impl_from_IAVIFile(IAVIFile *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, ITmpFileImpl, IAVIFile_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ITmpFile_fnQueryInterface(IAVIFile *iface, REFIID refiid,
|
||||
LPVOID *obj)
|
||||
{
|
||||
ITmpFileImpl *This = (ITmpFileImpl *)iface;
|
||||
ITmpFileImpl *This = impl_from_IAVIFile(iface);
|
||||
|
||||
TRACE("(%p,%s,%p)\n", This, debugstr_guid(refiid), obj);
|
||||
|
||||
|
@ -146,7 +67,7 @@ static HRESULT WINAPI ITmpFile_fnQueryInterface(IAVIFile *iface, REFIID refiid,
|
|||
|
||||
static ULONG WINAPI ITmpFile_fnAddRef(IAVIFile *iface)
|
||||
{
|
||||
ITmpFileImpl *This = (ITmpFileImpl *)iface;
|
||||
ITmpFileImpl *This = impl_from_IAVIFile(iface);
|
||||
ULONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) -> %d\n", iface, ref);
|
||||
|
@ -156,7 +77,7 @@ static ULONG WINAPI ITmpFile_fnAddRef(IAVIFile *iface)
|
|||
|
||||
static ULONG WINAPI ITmpFile_fnRelease(IAVIFile *iface)
|
||||
{
|
||||
ITmpFileImpl *This = (ITmpFileImpl *)iface;
|
||||
ITmpFileImpl *This = impl_from_IAVIFile(iface);
|
||||
ULONG ref = InterlockedDecrement(&This->ref);
|
||||
|
||||
TRACE("(%p) -> %d\n", iface, ref);
|
||||
|
@ -182,7 +103,7 @@ static ULONG WINAPI ITmpFile_fnRelease(IAVIFile *iface)
|
|||
static HRESULT WINAPI ITmpFile_fnInfo(IAVIFile *iface,
|
||||
AVIFILEINFOW *afi, LONG size)
|
||||
{
|
||||
ITmpFileImpl *This = (ITmpFileImpl *)iface;
|
||||
ITmpFileImpl *This = impl_from_IAVIFile(iface);
|
||||
|
||||
TRACE("(%p,%p,%d)\n",iface,afi,size);
|
||||
|
||||
|
@ -201,7 +122,7 @@ static HRESULT WINAPI ITmpFile_fnInfo(IAVIFile *iface,
|
|||
static HRESULT WINAPI ITmpFile_fnGetStream(IAVIFile *iface, PAVISTREAM *avis,
|
||||
DWORD fccType, LONG lParam)
|
||||
{
|
||||
ITmpFileImpl *This = (ITmpFileImpl *)iface;
|
||||
ITmpFileImpl *This = impl_from_IAVIFile(iface);
|
||||
|
||||
ULONG nStream = (ULONG)-1;
|
||||
|
||||
|
@ -283,3 +204,75 @@ static HRESULT WINAPI ITmpFile_fnDeleteStream(IAVIFile *iface, DWORD fccType,
|
|||
|
||||
return AVIERR_UNSUPPORTED;
|
||||
}
|
||||
|
||||
static const struct IAVIFileVtbl itmpft = {
|
||||
ITmpFile_fnQueryInterface,
|
||||
ITmpFile_fnAddRef,
|
||||
ITmpFile_fnRelease,
|
||||
ITmpFile_fnInfo,
|
||||
ITmpFile_fnGetStream,
|
||||
ITmpFile_fnCreateStream,
|
||||
ITmpFile_fnWriteData,
|
||||
ITmpFile_fnReadData,
|
||||
ITmpFile_fnEndRecord,
|
||||
ITmpFile_fnDeleteStream
|
||||
};
|
||||
|
||||
PAVIFILE AVIFILE_CreateAVITempFile(int nStreams, const PAVISTREAM *ppStreams)
|
||||
{
|
||||
ITmpFileImpl *tmpFile;
|
||||
int i;
|
||||
|
||||
tmpFile = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ITmpFileImpl));
|
||||
if (tmpFile == NULL)
|
||||
return NULL;
|
||||
|
||||
tmpFile->IAVIFile_iface.lpVtbl = &itmpft;
|
||||
tmpFile->ref = 1;
|
||||
memset(&tmpFile->fInfo, 0, sizeof(tmpFile->fInfo));
|
||||
|
||||
tmpFile->fInfo.dwStreams = nStreams;
|
||||
tmpFile->ppStreams = HeapAlloc(GetProcessHeap(), 0, nStreams * sizeof(PAVISTREAM));
|
||||
if (tmpFile->ppStreams == NULL) {
|
||||
HeapFree(GetProcessHeap(), 0, tmpFile);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < nStreams; i++) {
|
||||
AVISTREAMINFOW sInfo;
|
||||
|
||||
tmpFile->ppStreams[i] = ppStreams[i];
|
||||
|
||||
AVIStreamAddRef(ppStreams[i]);
|
||||
AVIStreamInfoW(ppStreams[i], &sInfo, sizeof(sInfo));
|
||||
if (i == 0) {
|
||||
tmpFile->fInfo.dwScale = sInfo.dwScale;
|
||||
tmpFile->fInfo.dwRate = sInfo.dwRate;
|
||||
if (!sInfo.dwScale || !sInfo.dwRate) {
|
||||
tmpFile->fInfo.dwScale = 1;
|
||||
tmpFile->fInfo.dwRate = 100;
|
||||
}
|
||||
}
|
||||
|
||||
if (tmpFile->fInfo.dwSuggestedBufferSize < sInfo.dwSuggestedBufferSize)
|
||||
tmpFile->fInfo.dwSuggestedBufferSize = sInfo.dwSuggestedBufferSize;
|
||||
|
||||
{
|
||||
register DWORD tmp;
|
||||
|
||||
tmp = MulDiv(AVIStreamSampleToTime(ppStreams[i], sInfo.dwLength),
|
||||
tmpFile->fInfo.dwScale, tmpFile->fInfo.dwRate * 1000);
|
||||
if (tmpFile->fInfo.dwLength < tmp)
|
||||
tmpFile->fInfo.dwLength = tmp;
|
||||
|
||||
tmp = sInfo.rcFrame.right - sInfo.rcFrame.left;
|
||||
if (tmpFile->fInfo.dwWidth < tmp)
|
||||
tmpFile->fInfo.dwWidth = tmp;
|
||||
tmp = sInfo.rcFrame.bottom - sInfo.rcFrame.top;
|
||||
if (tmpFile->fInfo.dwHeight < tmp)
|
||||
tmpFile->fInfo.dwHeight = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
return (PAVIFILE)tmpFile;
|
||||
}
|
||||
|
|
|
@ -41,8 +41,8 @@ reactos/dll/directx/msdmo # Autosync
|
|||
reactos/dll/directx/qedit # Autosync
|
||||
reactos/dll/directx/quartz # Autosync
|
||||
reactos/dll/win32/advpack # Synced to Wine-1.3.37
|
||||
reactos/dll/win32/atl # Autosync
|
||||
reactos/dll/win32/avifil32 # Autosync
|
||||
reactos/dll/win32/atl # Synced to Wine-1.3.37
|
||||
reactos/dll/win32/avifil32 # Synced to Wine-1.3.37
|
||||
reactos/dll/win32/bcrypt # Synced to Wine-1.3.37
|
||||
reactos/dll/win32/browseui # Out of sync
|
||||
reactos/dll/win32/cabinet # Synced to Wine-1.3.37
|
||||
|
|
Loading…
Reference in a new issue