00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef MN_LCRTPFileRecorderGM_H
00025
#define MN_LCRTPFileRecorderGM_H
00026
00027
#include <sys/types.h>
00028
#include "var_type.h"
00029
00030
#include "ServerGM.h"
00031
#include "MNFileSinkSH.h"
00032
#include "MNSem.h"
00033
#include "MNMutex.h"
00034
#include "MNRTPutildefs.h"
00035
00036
namespace SH
00037 {
00038
class Base;
00039
class RTPDecoderSH;
00040
class FileSinkSH;
00041 };
00042
00047 class LCRTPFileRecorderGM :
public ServerGM
00048 {
00049
struct timeval* _tv;
00050
00051
SH::FileSinkSH* _fsh;
00052
SH::RTPDecoderSH* _dsh;
00053
SH::Base* _ssh;
00054
00055
MediaState _streamer_state;
00056
MNSem _eof_sig;
00057
MNMutex _eof_lock;
00058
MNString _server;
00059
00060
00061
MNSocket* _local_upstream_rtp;
00062
MNSocket* _local_upstream_rtcp;
00063
int _DistantPortUp;
00064
00065
public:
00066
LCRTPFileRecorderGM(
GMUser* user,
MNSelector& sel );
00067
00068
virtual ~LCRTPFileRecorderGM();
00069
00070
virtual void init(
int idx);
00071
00072
virtual void uninit();
00073
00074
virtual void start();
00075
00090
virtual void set_hostnames(
const MNString& client,
00091
const MNString& server );
00092
00122
virtual void set_ports(
int idx,
00123
MNSocket* locDownRtp,
00124
MNSocket* locDownRtcp,
00125
int distDown,
00126
MNSocket* locUpRtp,
00127
MNSocket* locUpRtcp,
00128
int distUp );
00129
00130
virtual bool graphManNotify(
int idx,
00131
SH::Base* caller,
00132 SH::Notification attribute,
00133
void* msg );
00134
private:
00135
virtual int start_streamer(
int idx,
int bandwidth );
00136
00137
public:
00156
virtual int open_file(
int idx,
00157
const char* name,
00158
int rtp_pt,
00159 SDP::PayloadTypes int_pt,
00160
u_int32 bandwidth,
00161 SDP::RetransTypes int_rt,
00162
int packetsize );
00163
00164
virtual int play(
int startp,
int stopp );
00165
virtual int stop( );
00166
virtual int pause( );
00167
virtual int jump (
long pos );
00168
00175
void set_repeat_times(
u_int32 lc_max_loop );
00176
00182
void set_listpacket_timeout(
u_int32 secs );
00183
00189
void set_endpacket_timeout(
u_int32 secs );
00190 };
00191
00193
00194
#endif
00195