162 lines
4.6 KiB
C++
162 lines
4.6 KiB
C++
/*++
|
|
|
|
Copyright (c) 1995-1996 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
medistrm.h
|
|
|
|
Abstract:
|
|
Contains constants and class declarations for the abstract MediaStream object. A MediaStream
|
|
represents a single unidirectional stream, such as a received Video channel.
|
|
|
|
--*/
|
|
#ifndef _IMSTREAM_H_
|
|
#define _IMSTREAM_H_
|
|
|
|
#include <pshpack8.h> /* Assume 8 byte packing throughout */
|
|
|
|
class IStreamEventNotify
|
|
{
|
|
public:
|
|
virtual HRESULT __stdcall EventNotification(UINT uDirection, UINT uMediaType, UINT uEventCode, UINT uSubCode)=0;
|
|
};
|
|
|
|
|
|
DECLARE_INTERFACE_(IMediaChannel, IUnknown)
|
|
{
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID FAR* ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
|
|
STDMETHOD(GetProperty)(THIS_ DWORD dwProp, PVOID pBuf, LPUINT pcbBuf) PURE;
|
|
STDMETHOD(SetProperty)(THIS_ DWORD dwProp, PVOID pBuf, UINT cbBuf) PURE;
|
|
STDMETHOD(Configure)(THIS_ BYTE *pFormat, UINT cbFormat,
|
|
BYTE *pChannelParams, UINT cbParams,
|
|
IUnknown *pUnknown) PURE;
|
|
STDMETHOD(SetNetworkInterface)(THIS_ IUnknown *pUnknown) PURE;
|
|
STDMETHOD(Start)(THIS ) PURE;
|
|
STDMETHOD(Stop)(THIS) PURE;
|
|
STDMETHOD_(DWORD, GetState)(THIS) PURE;
|
|
STDMETHOD(SetMaxBitrate) (THIS_ UINT uMaxBitrate) PURE;
|
|
};
|
|
|
|
class IAudioChannel : public IMediaChannel
|
|
{
|
|
public:
|
|
virtual HRESULT __stdcall GetSignalLevel(UINT *pLevel)=0;
|
|
};
|
|
|
|
|
|
class IVideoChannel : public IMediaChannel
|
|
{
|
|
public:
|
|
virtual HRESULT __stdcall SetTemporalSpatialTradeOff(DWORD dwVal)=0;
|
|
virtual HRESULT __stdcall GetTemporalSpatialTradeOff(DWORD *pdwVal)=0;
|
|
virtual HRESULT __stdcall SendKeyFrame(void) = 0;
|
|
virtual HRESULT __stdcall ShowDeviceDialog(DWORD dwFlags)=0;
|
|
virtual HRESULT __stdcall GetDeviceDialog(DWORD *pdwFlags)=0;
|
|
};
|
|
|
|
|
|
// return values for GetState
|
|
#define MSSTATE_UNCONFIGURED 0
|
|
#define MSSTATE_CONFIGURED 1
|
|
#define MSSTATE_STARTED 2
|
|
|
|
// flag values for CreateMediaChannel()
|
|
typedef enum
|
|
{
|
|
MCF_SEND = 1,
|
|
MCF_RECV = 2,
|
|
MCF_AUDIO = 4,
|
|
MCF_VIDEO = 8,
|
|
MCF_DEFAULT_DEVICE = 16
|
|
} MC_FLAGS;
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IMediaChannelBuilder
|
|
DECLARE_INTERFACE_( IMediaChannelBuilder, IUnknown)
|
|
{
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
STDMETHOD(Initialize) (THIS_ HWND hWnd, HINSTANCE hInst) PURE;
|
|
STDMETHOD(CreateMediaChannel) (THIS_ UINT flags, IMediaChannel **ppI) PURE;
|
|
STDMETHOD(SetStreamEventObj) (THIS_ IStreamEventNotify *pNotify) PURE;
|
|
};
|
|
|
|
|
|
class IMixer : public IUnknown
|
|
{
|
|
public:
|
|
virtual BOOL __stdcall SetVolume(DWORD dwVolume)=0;
|
|
virtual BOOL __stdcall CanSetVolume()=0;
|
|
virtual BOOL __stdcall SetMainVolume(DWORD dwVolume)=0;
|
|
virtual BOOL __stdcall SetSubVolume(DWORD dwVolume)=0;
|
|
virtual BOOL __stdcall SetAGC(BOOL fOn)=0;
|
|
virtual BOOL __stdcall GetMainVolume(LPDWORD pdwVolume)=0;
|
|
virtual BOOL __stdcall GetSubVolume(LPDWORD pdwVolume)=0;
|
|
virtual BOOL __stdcall GetAGC(BOOL *pfOn)=0;
|
|
virtual BOOL __stdcall EnableMicrophone()=0;
|
|
virtual BOOL __stdcall UnMuteVolume()=0;
|
|
};
|
|
|
|
class IAudioDevice : public IUnknown
|
|
{
|
|
public:
|
|
virtual HRESULT __stdcall GetRecordID(UINT *puWaveDevID)=0;
|
|
virtual HRESULT __stdcall SetRecordID(UINT uWaveDevID)=0;
|
|
virtual HRESULT __stdcall GetPlaybackID(UINT *puWaveDevID)=0;
|
|
virtual HRESULT __stdcall SetPlaybackID(UINT uWaveDevID)=0;
|
|
virtual HRESULT __stdcall GetDuplex(BOOL *pbFullDuplex)=0;
|
|
virtual HRESULT __stdcall SetDuplex(BOOL bFullDuplex)=0;
|
|
virtual HRESULT __stdcall GetSilenceLevel(UINT *puLevel)=0;
|
|
virtual HRESULT __stdcall SetSilenceLevel(UINT uLevel)=0;
|
|
virtual HRESULT __stdcall GetAutoMix(BOOL *pbAutoMix)=0;
|
|
virtual HRESULT __stdcall SetAutoMix(BOOL bAutoMix)=0;
|
|
virtual HRESULT __stdcall GetDirectSound(BOOL *pbDS)=0;
|
|
virtual HRESULT __stdcall SetDirectSound(BOOL bDS)=0;
|
|
virtual HRESULT __stdcall GetMixer(HWND hwnd, BOOL bPlayback, IMixer **ppMixer)=0;
|
|
};
|
|
|
|
|
|
enum STREAM_EVENTS
|
|
{
|
|
STREAM_EVENT_DEVICE_FAILURE=1001,
|
|
STREAM_EVENT_DEVICE_OPEN,
|
|
STREAM_EVENT_DEVICE_CLOSE
|
|
};
|
|
|
|
|
|
// hiword of GetSignalLevel contains may these status bits
|
|
#define SIGNAL_STATUS_TRANSMIT 0x01 // data is being received/sent
|
|
#define SIGNAL_STATUS_JAMMED 0x02 // wave dev failed to open
|
|
|
|
|
|
typedef HRESULT (WINAPI *CREATE_SP)(IMediaChannelBuilder **);
|
|
|
|
|
|
|
|
#define DTMF_STAR 10
|
|
#define DTMF_POUND 11
|
|
#define DTMF_A 12
|
|
#define DTMF_B 13
|
|
#define DTMF_C 14
|
|
#define DTMF_D 15
|
|
|
|
class IDTMFSend : public IUnknown
|
|
{
|
|
public:
|
|
virtual HRESULT __stdcall AddDigit(int nDigit) = 0;
|
|
virtual HRESULT __stdcall ResetDTMF() = 0;
|
|
};
|
|
|
|
|
|
#include <poppack.h> /* End byte packing */
|
|
|
|
|
|
#endif // _MEDISTRM_H_
|
|
|