00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#ifndef MN_SendBlockStreamerGM_H
00026
#define MN_SendBlockStreamerGM_H
00027
00028
#include <sys/types.h>
00029
#include "var_type.h"
00030
00031
#include "ServerGM.h"
00032
#include "MNFileSourceSH.h"
00033
#include "MNSem.h"
00034
#include "MNMutex.h"
00035
#include "MNRTPutildefs.h"
00036
00037
namespace SH
00038 {
00039
class Base;
00040
class RTPEncoderSH;
00041
class DummyLayerSourceSH;
00042
class SendBlockSH;
00043 };
00044
00045
class MNUDPSocket;
00046
00051 class SendBlockStreamerGM :
public ServerGM
00052 {
00053
struct timeval* _tv;
00054
00055
SH::Base* _ssh;
00056
MNString _client;
00057
00058
MediaState _streamer_state;
00059
MNSem _eof_sig;
00060
MNMutex _eof_lock;
00061
bool _initialized;
00062
00066
MNSocket* _local_down_rtp;
00067
MNSocket* _local_down_rtcp;
00068
int _DistantPortDown;
00069
00070
public:
00083
SendBlockStreamerGM(
GMUser* user,
00084
MNSelector& sel );
00085
00089
virtual ~SendBlockStreamerGM();
00090
00097
virtual void init(
int idx);
00098
00101
virtual void uninit();
00102
00103
virtual u_int32 getSsrc();
00104
00109
virtual void start();
00110
00119
virtual void set_hostnames(
const MNString& client,
const MNString& server );
00120
virtual void set_ports(
int idx,
00121
MNSocket* locDownRtp,
00122
MNSocket* locDownRtcp,
00123
int distDown,
00124
MNSocket* locUpRtp,
00125
MNSocket* locUpRtcp,
00126
int distUp );
00127
virtual bool graphManNotify(
int idx,
SH::Base* caller, SH::Notification attribute,
void* msg );
00128
00129
private:
00130
virtual int start_streamer(
int idx,
int bandwidth );
00131
00132
public:
00133
00153
virtual int open_file(
int idx,
00154
const char* name,
00155
int rtp_pt,
00156 SDP::PayloadTypes int_pt,
00157
u_int32 bw,
00158 SDP::RetransTypes int_rt,
00159
int packetsize );
00160
virtual int play(
int startp,
int stopp );
00161
virtual int stop( );
00162
virtual int pause( );
00163
virtual int jump (
long pos );
00164
virtual long getFilePos();
00165
00178
void send_forced( size_t timeout, size_t packetsize );
00179
00183
void stop_forced( );
00184
00188
void recv_forced( );
00189
00191
virtual bool synchronousGet( GetValue what,
u_int32& outVar );
00192
00193
00194
00195
00201 void set_repeat_times(
u_int32 ) { }
00202 };
00203
00205
00206
#endif
00207