📄 filemembers.h
字号:
/*
* filemembers.h
*
* Various file-based listeners for OpenMCU
*
* Copyright (C) 2003 Post Increment
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Portable Windows Library.
*
* The Initial Developer of the Original Code is Post Increment
*
* Portions of ths code were written by by Post Increment (http://www.postincrement.com)
* with the assistance of funding from Stonevoice, slc. http://www.stonevoice.com
*
* Portions of this code were written by Post Increment (http://www.postincrement.com)
* with the assistance of funding from Citron Networks (http://www.citron.com.tw)
*
* Contributor(s): Derek J Smithies (derek@indranet.co.nz)
* Craig Southeren (craig@postincrement.com)
*
* $Log: filemembers.h,v $
* Revision 1.1 2007/10/17 19:44:30 shorne
* Initial Commit
*
* Revision 2.6 2007/01/11 03:47:27 csoutheren
* Add missing <deque>
*
* Revision 2.5 2006/08/02 06:24:53 csoutheren
* Add provision for recording input audio
*
* Revision 2.4 2006/06/21 06:11:36 csoutheren
* Fixes for latest pwlib
*
* Revision 2.3 2006/06/09 04:39:59 csoutheren
* Migrated VideoBranch to main trunk
*
* Revision 2.2.2.6 2006/05/31 08:48:02 csoutheren
* Fixed crash on second call when entry/exit files do not exist
* Fix crash when Cisco HOLD used. Thanks to Christian Bongiovanni of Stonevoice
*
* Revision 2.2.2.5 2006/04/06 01:11:16 csoutheren
* Latest sources include
* - premedia blanking and optional image display
* - ablity to defer conference join for authentication if required
* - more bulletproofing on conference join
* - new video copy/fill functions
*
* Revision 1.1 2006/03/31 07:36:12 craigs
* New version with PINs and premedia blanking
*
* Revision 2.2.2.3 2006/03/28 05:13:38 csoutheren
* Normalised file headers
* Fixed problem with QCIF video
* Seperated H.323 and MCU process functions into seperate files
*
* Revision 2.2.2.2 2006/03/14 08:02:50 csoutheren
* More implemenrtation of video
* Video mixing infrastructure implemented but not fully working
*
* Revision 2.2.2.1 2006/03/06 05:45:30 csoutheren
* Start of implementation for video. Still in progress
*
* Revision 2.2 2006/02/03 04:40:00 csoutheren
* Extended logging messages
*
* Revision 2.1 2004/05/26 06:54:31 csoutheren
* Changed to be a PHTTPServiceProcess
* Added ability to play WAV files on member entry and exit
* Added additional documentation on all classes
* Preparation for re-introducing video
*
*/
#ifndef _OpenMCU_FILEMEMBERS_H
#define _OpenMCU_FILEMEMBERS_H
#include "config.h"
#include <ptlib/sound.h>
#include <opalwavfile.h>
#include "conference.h"
#include <deque>
class ConferenceSoundCardMember : public ConferenceMember
{
PCLASSINFO(ConferenceSoundCardMember, ConferenceMember);
public:
ConferenceSoundCardMember(Conference * _conference);
~ConferenceSoundCardMember();
void Unlisten();
virtual ConferenceConnection * CreateConnection()
{ return new ConferenceConnection(this); }
virtual PString GetName() const
{ return "sound card listener"; }
virtual BOOL IsVisible() const
{ return FALSE; }
void OnReceivedUserInputIndication(const PString & str)
{ cout << "Received user input indication " << str << endl; }
PDECLARE_NOTIFIER(PThread, ConferenceSoundCardMember, Thread);
protected:
BOOL running;
PSoundChannel soundDevice;
PThread * thread;
};
class ConferenceFileMember : public ConferenceMember
{
PCLASSINFO(ConferenceFileMember, ConferenceMember);
public:
ConferenceFileMember(Conference * conference, const PFilePath & _fn, PFile::OpenMode mode);
typedef std::deque<PFilePath> FilenameList;
ConferenceFileMember(Conference * conference, const FilenameList & _fns, PFile::OpenMode mode);
~ConferenceFileMember();
void Unlisten();
virtual ConferenceConnection * CreateConnection()
{ return new ConferenceConnection(this); }
virtual PString GetName() const
{ return PString(mode == PFile::ReadOnly ? "file player" : "file recorder") & currentFilename; }
virtual BOOL IsVisible() const
{ return FALSE; }
void OnReceivedUserInputIndication(const PString & str)
{ cout << "Received user input indication " << str << endl; }
PDECLARE_NOTIFIER(PThread, ConferenceFileMember, ReadThread);
PDECLARE_NOTIFIER(PThread, ConferenceFileMember, WriteThread);
protected:
void Construct();
BOOL QueueNext();
FilenameList filenames;
PFilePath currentFilename;
PFile::OpenMode mode;
OpalWAVFile file;
BOOL running;
PThread * thread;
};
class ConferenceFilePlayer : public ConferenceFileMember
{
PCLASSINFO(ConferenceFilePlayer, ConferenceFileMember);
public:
ConferenceFilePlayer();
void Unlisten();
PDECLARE_NOTIFIER(PThread, ConferenceFilePlayer, Thread);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -