📄 cmediacontroller.h
字号:
//
// CMediaController.h
// Desc: This is Controlling Center of Net Receiver Filter. Save setttings,
// create sockets, manage the network data buffer and so on.
//
#ifndef __H_CMediaController__
#define __H_CMediaController__
//#define _QOS_
//#define _DEBUG_IO
#include <stdio.h>
#include "CStreamSocket2.h"
class CFilterNetReceiver;
class CMediaController
{
private:
CFilterNetReceiver * mReceiveFilter;
// Receiving buffer
CCritSec mSyncBuffer;
BYTE * mMediaBuffer;
long mBufferSize;
long mMinWorkingSize; // When valid data less than MinWorkingSize,
// we'll memmove.
long mReadingOffset;
long mWritingOffset;
long mCheckingSize; // When filter connection, some data will
// be read out to determine media type.
long mAvailabeSize;
long mTotalSize;
BOOL mIsWaitingToRead;
BOOL mIsWaitingToAddData;
long mStreamType;
BYTE * mExtraBuffer;
long mExtraCheckOffset; // Offset in the whole file
long mExtraBufferSize;
long mExtraWritingOffset;
long mExtraReadingOffset;
BOOL mReadFromExtraBuffer;
BOOL mIsReadyToBeChecked;
BOOL mCheckingFinished;
BOOL mIsEOS;
CStreamSocket2 mStrmSocket;
#ifdef _QOS_
HANDLE mQosThrd;
BOOL mMonitoring;
BOOL StartQosMonitoring(void);
void StopQosMonitoring(void);
static DWORD WINAPI MonitoringThrd(void * pParam);
#endif
#ifdef _DEBUG_IO
FILE * fp;
#endif
public:
CMediaController(CFilterNetReceiver * inFilter);
~CMediaController();
void StartStreaming(void);
void StopStreaming(void);
// Interface methods
void SetStreamType(long inType);
void SetStreamSocket(SOCKET inSocket);
void SetSize(long inTotalSize, long inCheckOffset);
BOOL StartReceiving(void);
void StopReceiving(void);
// Status check
BOOL IsReadToBeChecked(void);
// Buffer operations
BOOL AddData(char * inData, long inLength);
void EndOfStream(void);
// Delegating output stream pin's methods
HRESULT SetPointer(LONGLONG llPos);
HRESULT Read(PBYTE pbBuffer, DWORD dwBytesToRead, BOOL bAlign, LPDWORD pdwBytesRead);
LONGLONG Size(LONGLONG *pSizeAvailable);
void MakeSpaceForAddData(void);
};
#endif // __H_CMediaController__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -