[AVIFIL32]

- Sync to Wine 1.3.37

svn path=/trunk/; revision=56162
This commit is contained in:
Rafal Harabien 2012-03-15 21:32:52 +00:00
parent 81f40a88f1
commit 3238aafc17
38 changed files with 1011 additions and 1748 deletions

View file

@ -19,7 +19,6 @@ add_library(avifil32 SHARED
factory.c
getframe.c
icmstream.c
regsvr.c
tmpfile.c
wavfile.c
rsrc.rc

View file

@ -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;
}

View file

@ -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);

View file

@ -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);

View 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}'
}
}
}

View file

@ -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

View file

@ -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ý"
}

View file

@ -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

View file

@ -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"
}

View file

@ -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

View file

@ -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

View file

@ -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é"
}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"
}

View file

@ -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

View file

@ -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

View file

@ -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"
}

View file

@ -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

View file

@ -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

View file

@ -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 "без сжатия"
}

View file

@ -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"
}

View file

@ -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&lternativ...",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"
}

View file

@ -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

View file

@ -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

View file

@ -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 "未壓縮"
}

View file

@ -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

View file

@ -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;
}

View file

@ -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
}

View file

@ -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 );
}

View file

@ -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;
}
/***********************************************************************/

View file

@ -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,

View file

@ -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;
}

View file

@ -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"

View file

@ -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;
}

View file

@ -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