video4linux - wine
Mike McCormack
mike at codeweavers.com
Wed Jan 5 00:52:54 CST 2005
There's currently no support, but you could add it via the Still Image
(STI) API. It's meant for scanners and webcams. There's probably a way
to add VFW (Video For Windows drivers) too.
I have written an IDL file for IStillImage, which I haven't gotten round
to submitting as yet. I've attached it incase you're interested... I
think it still needs some fixing up.
Mike
MediaHost (TM) wrote:
> Question: Is there support for video4linux devices with wine? Is there
> some support for webcams? What are the settings (config)? I couldn't
> find anything useful on google concerning this issue....
-------------- next part --------------
/*
* Copyright (C) 2004 Mike McCormack
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import "oaidl.idl";
/* encoding neutral interfaces */
/*struct STIDEVICE;
typedef struct STIDEVICE* PSTIDEVICE ;
struct IStillImage;
struct STI;
typedef struct STI *PSTI;
struct STI_DEVICE_INFORMATIONW;
struct STIDEVICEW;
typedef struct IStillImageW IStillImageW,*PSTIW;
typedef struct STIDEVICEW* PSTIDEVICEW;
typedef struct STI_DEVICE_INFORMATIONW *PSTI_DEVICE_INFORMATIONW;
struct STIDEVICEA;
typedef struct IStillImageA IStillImageA,*PSTIA;
typedef struct STIDEVICEA* PSTIDEVICEA;
typedef struct STI_DEVICE_INFORMATIONA *PSTI_DEVICE_INFORMATIONA;
HRESULT WINAPI StiCreateInstanceA(HINSTANCE hinst, DWORD ver, PSTIA *ppSti, void **punk);
HRESULT WINAPI StiCreateInstanceW(HINSTANCE hinst, DWORD ver, PSTIW *ppSti, void **punk);
*/
typedef struct _STI_DEV_CAPS {
DWORD dwGeneric;
} STI_DEV_CAPS, *PSTI_DEV_CAPS;
typedef struct _STI_DEVICE_STATUS {
DWORD dwSize;
DWORD StatusMask;
DWORD dwOnlineState;
DWORD dwHardwareStatusCode;
DWORD dwEventHandlingState;
DWORD dwPollingInterval;
} STI_DEVICE_STATUS, *PSTI_DEVICE_STATUS;
typedef struct _ERROR_INFOA {
DWORD dwSize;
DWORD dwGenericError;
DWORD dwVendorError;
CHAR szExtendedErrorText[255];
} STI_ERROR_INFOA, *PSTI_ERROR_INFOA;
typedef struct _ERROR_INFOW {
DWORD dwSize;
DWORD dwGenericError;
DWORD dwVendorError;
WCHAR szExtendedErrorText[255];
} STI_ERROR_INFOW, *PSTI_ERROR_INFOW;
typedef struct _STI_DIAGA {
DWORD dwSize;
DWORD dwBasicDiagCode;
DWORD dwVendorDiagCode;
DWORD dwStatusMask;
STI_ERROR_INFOA sErrorInfo;
} STI_DIAGA, *LPSTI_DIAGA;
typedef struct _STI_DIAGW {
DWORD dwSize;
DWORD dwBasicDiagCode;
DWORD dwVendorDiagCode;
DWORD dwStatusMask;
STI_ERROR_INFOW sErrorInfo;
} STI_DIAGW, *LPSTI_DIAGW;
[
object,
uuid(6CFA5A80-2DC8-11D0-90EA-00AA0060F86C),
pointer_default(unique)
]
interface IStiDevice : IUnknown
{
HRESULT Initialize(HINSTANCE hinst, LPCWSTR pwszDeviceName, DWORD dwVersion, DWORD dwMode);
HRESULT GetCapabilities(PSTI_DEV_CAPS pDevCaps);
HRESULT GetStatus(PSTI_DEVICE_STATUS pDevStatus);
HRESULT DeviceReset();
HRESULT Diagnostic(LPSTI_DIAG pBuffer);
HRESULT Escape(STI_RAW_CONTROL EscapeFunction, LPVOID lpInData, DWORD cbInDataSize, LPVOID pOutData, DWORD dwOutDataSize, LPDWORD pdwActualData);
HRESULT GetLastError(LPDWORD pdwLastDeviceError);
HRESULT LockDevice(DWORD dwTimeOut);
HRESULT UnLockDevice();
HRESULT RawReadData(LPVOID lpBuffer, LPDWORD lpdwNumberOfBytes, LPOVERLAPPED lpOverlapped);
HRESULT RawWriteData(LPVOID lpBuffer, DWORD nNumberOfBytes, LPOVERLAPPED lpOverlapped);
HRESULT RawReadCommand(LPVOID lpBuffer, LPDWORD lpdwNumberOfBytes, LPOVERLAPPED lpOverlapped);
HRESULT RawWriteCommand(LPVOID lpBuffer, DWORD nNumberOfBytes, LPOVERLAPPED lpOverlapped);
HRESULT Subscribe(LPSTISUBSCRIBE lpSubscribe);
HRESULT GetLastNotificationData(LPSTINOTIFY lpNotify);
HRESULT UnSubscribe();
HRESULT GetLastErrorInfo(STI_ERROR_INFO *pLastErrorInfo);
}
/*****************************************************************************
* IStillImageW
*/
[
object,
uuid(641BD880-2DC8-11D0-90EA-00AA0060F86C),
pointer_default(unique)
]
interface IStillImageW : IUnknown
{
HRESULT Initialize(HINSTANCE hinst, DWORD dwVersion);
HRESULT GetDeviceList(DWORD dwType, DWORD dwFlags, DWORD *pdwItemsReturned, LPVOID* ppBuffer);
HRESULT GetDeviceInfo(LPWSTR pwszDeviceName, LPVOID* ppBuffer);
HRESULT CreateDevice(LPWSTR pwszDeviceName, DWORD dwMode, PSTIDEVICE* pDevice, LPUNKNOWN* punkOuter);
HRESULT GetDeviceValue(LPWSTR pwszDeviceName, LPWSTR pValueName, LPDWORD pType, LPBYTE pData, LPDWORD cbData);
HRESULT SetDeviceValue(LPWSTR pwszDeviceName, LPWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData);
HRESULT GetSTILaunchInformation(LPWSTR pwszDeviceName, LPDWORD pdwEventCode, LPWSTR pwszEventName);
HRESULT RegisterLaunchApplication(LPWSTR pwszAppName, LPWSTR pwszCommandLine);
HRESULT UnregisterLaunchApplication(LPWSTR pwszAppName);
HRESULT EnableHwNotifications(LPCWSTR pwszDeviceName, BOOL bNewState);
HRESULT GetHwNotificationState(LPCWSTR pwszDeviceName, BOOL* pbCurrentState);
HRESULT RefreshDeviceBus(LPCWSTR pwszDeviceName);
HRESULT LaunchApplicationForDevice(LPWSTR pwszDeviceName, LPWSTR pwszAppName, LPSTINOTIFY pStiNotify);
HRESULT SetupDeviceParameters(PSTI_DEVICE_INFORMATIONW);
HRESULT WriteToErrorLog(DWORD dwMessageType, LPCWSTR pszMessage);
}
/*****************************************************************************
* IStillImageA
*/
[
object,
uuid(A7B1F740-1D7F-11D1-ACA9-00A02438AD48),
pointer_default(unique)
]
interface IStillImageA : IUnknown
{
HRESULT Initialize(HINSTANCE hinst, DWORD dwVersion);
HRESULT GetDeviceList(DWORD dwType, DWORD dwFlags, DWORD *pdwItemsReturned, LPVOID* ppBuffer);
HRESULT GetDeviceInfo(LPSTR pwszDeviceName, LPVOID* ppBuffer);
HRESULT CreateDevice(LPSTR pwszDeviceName, DWORD dwMode, PSTIDEVICE* pDevice, LPUNKNOWN* punkOuter);
HRESULT GetDeviceValue(LPSTR pwszDeviceName, LPSTR pValueName, LPDWORD pType, LPBYTE pData, LPDWORD cbData);
HRESULT SetDeviceValue(LPSTR pwszDeviceName, LPSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData);
HRESULT GetSTILaunchInformation(LPSTR pwszDeviceName, LPDWORD pdwEventCode, LPSTR pwszEventName);
HRESULT RegisterLaunchApplication(LPSTR pwszAppName, LPSTR pwszCommandLine);
HRESULT UnregisterLaunchApplication(LPSTR pwszAppName);
HRESULT EnableHwNotifications(LPCSTR pwszDeviceName, BOOL bNewState);
HRESULT GetHwNotificationState(LPCSTR pwszDeviceName, BOOL* pbCurrentState);
HRESULT RefreshDeviceBus(LPWSTR pwszDeviceName);
HRESULT LaunchApplicationForDevice(LPSTR pwszDeviceName, LPSTR pwszAppName, LPSTINOTIFY pStiNotify);
HRESULT SetupDeviceParameters(PSTI_DEVICE_INFORMATIONA);
HRESULT WriteToErrorLog(DWORD dwMessageType, LPCSTR pszMessage);
}
More information about the wine-devel
mailing list