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 MNRTPENCODERSPEG_H
00026
#define MNRTPENCODERSPEG_H
00027
00028
#include "MNRTPEncoderCommon.h"
00029
extern "C" {
00030
#include "dbuf.h"
00031 }
00032
#include "SPEGPacket.h"
00033
#include "MNTimeval.h"
00034
00035
00036
00037
00038
00039
00040
#define CLOCKRATE 8000
00041
#define MPEG_BANDWIDTH 8000
00042
00043 class MNRTPEncoderSPEG :
public MNRTPEncoderCommon
00044 {
00045
bool _first_run;
00046
00047
public:
00091
virtual MNRope*
get_next_data(
SH::SinkEndpoint* pull_here,
00092 size_t max_bytes_to_pull,
00093 SH::ReturnCode& except,
00094 size_t& pulled_bytes,
00095
bool& rtp_marker,
00096
u_int32& rtp_timestamp,
00097
Timeval& next_playtime_packet,
00098
int bandwidth );
00099
00100
MNRTPEncoderSPEG(
RetransBase* retrans );
00101
virtual ~MNRTPEncoderSPEG();
00102
00103
virtual u_int32_t get_std_bw(
int fd );
00104
00110
virtual int get_timer_type( );
00111
00112
private:
00113
dbuf *packetBuffer;
00114
int numRecv;
00115
int numSent;
00116
int dropprio;
00117
00118
Timeval lastTime;
00119
Timeval diffTime;
00120
int timeCount;
00121
int bcounter[4];
00122
00123
void appendToBuffer (
const uchar *data, size_t size);
00124
00125 };
00126
00127
#endif
00128