153 lines
3.1 KiB
C++
153 lines
3.1 KiB
C++
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
Confvid.h
|
|
|
|
Abstract:
|
|
|
|
Definitions for video streams
|
|
|
|
Author:
|
|
|
|
Mu Han (muhan) 15-September-1998
|
|
|
|
--*/
|
|
#ifndef __CONFVID_H_
|
|
#define __CONFVID_H_
|
|
|
|
const DWORD g_dwVideoThreadPriority = THREAD_PRIORITY_NORMAL;
|
|
const DWORD g_dwVideoChannels = 1;
|
|
const DWORD g_dwVideoSampleRateHigh = 8;
|
|
const DWORD g_dwVideoSampleRateLow = 5;
|
|
|
|
const int CIFWIDTH = 0x160;
|
|
const int CIFHEIGHT = 0x120;
|
|
|
|
const int QCIFWIDTH = 0xb0;
|
|
const int QCIFHEIGHT = 0x90;
|
|
|
|
// This is the lowest bitrate we will use.
|
|
const int BITRATELOWERLIMIT = 4000;
|
|
|
|
// This is the threshold for sending a flow control command.
|
|
const int BITRATEDELTA = 2000;
|
|
|
|
// This is increment we use for adjust back to normal.
|
|
const int BITRATEINC = 1000;
|
|
|
|
const DWORD VIDEO_INITIAL_ADJUSTMENT_THRESHOLD = 12000;
|
|
const float VIDEO_INITIAL_ADJUSTMENT = 0.8f;
|
|
|
|
const int IFRAMEINTERVAL = 15000; // in miliseconds.
|
|
|
|
typedef enum _ENCODERCOMMAND
|
|
{
|
|
EC_BITRATE,
|
|
EC_IFRAME
|
|
} ENCODERCOMMAND, *PENCODERCOMMAND;
|
|
|
|
class CStreamVideoRecv : public CH323MSPStream
|
|
{
|
|
public:
|
|
CStreamVideoRecv();
|
|
|
|
HRESULT Configure(
|
|
IN HANDLE htChannel,
|
|
IN STREAMSETTINGS &StreamSettings
|
|
);
|
|
|
|
protected:
|
|
HRESULT SetUpFilters();
|
|
|
|
HRESULT SetUpInternalFilters();
|
|
|
|
HRESULT ConnectTerminal(
|
|
IN ITTerminal * pITTerminal
|
|
);
|
|
|
|
HRESULT ConfigureRTPFilter(
|
|
IN IBaseFilter * pIBaseFilter
|
|
);
|
|
|
|
HRESULT HandlePacketReceiveLoss(
|
|
IN DWORD dwLossRate
|
|
);
|
|
|
|
protected:
|
|
DWORD m_dwCurrentBitRate;
|
|
DWORD m_dwProposedBitRate;
|
|
DWORD m_dwLastIFrameRequestedTime;
|
|
DWORD m_dwIFramePending;
|
|
};
|
|
|
|
|
|
class CStreamVideoSend : public CH323MSPStream
|
|
{
|
|
public:
|
|
CStreamVideoSend();
|
|
|
|
HRESULT Configure(
|
|
IN HANDLE htChannel,
|
|
IN STREAMSETTINGS &StreamSettings
|
|
);
|
|
|
|
HRESULT ShutDown ();
|
|
|
|
HRESULT SendIFrame();
|
|
|
|
HRESULT ChangeMaxBitRate(
|
|
IN DWORD dwMaxBitRate
|
|
);
|
|
|
|
protected:
|
|
HRESULT CheckTerminalTypeAndDirection(
|
|
IN ITTerminal * pTerminal
|
|
);
|
|
|
|
HRESULT SetUpFilters();
|
|
|
|
HRESULT ConnectTerminal(
|
|
IN ITTerminal * pITTerminal
|
|
);
|
|
|
|
HRESULT CStreamVideoSend::CreateSendFilters(
|
|
IN IPin *pCapturePin
|
|
);
|
|
|
|
HRESULT CStreamVideoSend::ConnectPreview(
|
|
IN IPin *pPreviewInputPin
|
|
);
|
|
|
|
HRESULT ConfigureVideoCaptureTerminal(
|
|
IN ITTerminalControl* pTerminal,
|
|
OUT IPin ** ppIPin
|
|
);
|
|
|
|
HRESULT FindPreviewInputPin(
|
|
IN ITTerminalControl* pTerminal,
|
|
OUT IPin ** ppIpin
|
|
);
|
|
|
|
HRESULT ConfigureRTPFilter(
|
|
IN IBaseFilter * pIBaseFilter
|
|
);
|
|
|
|
HRESULT HandlePacketTransmitLoss(
|
|
IN DWORD dwLossRate
|
|
);
|
|
|
|
protected:
|
|
IBaseFilter * m_pIEncoderFilter;
|
|
|
|
DWORD m_dwCurrentBitRate;
|
|
DWORD m_dwProposedBitRate;
|
|
DWORD m_dwLastIFrameSentTime;
|
|
DWORD m_dwIFramePending;
|
|
};
|
|
|
|
#endif
|
|
|