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 RETRANS_BASE_H
00026
#define RETRANS_BASE_H
00027
00028
#include <config.h>
00029
00030
#include "var_type.h"
00031
#include "sdp/PayloadTypes.h"
00032
#include "sdp/RetransTypes.h"
00033
#include "sh/SHReport.h"
00034
#include "sh/SHReturnCodes.h"
00035
#include "MNTimeval.h"
00036
00037
00038
00039
00040
00041
00042
00043
00044
namespace SH
00045 {
00046
class Base;
00047
class SinkEndpoint;
00048
class Data;
00049 };
00050
00051
class MNRope;
00052
class MNRTPEncoderBase;
00053
00054 class RetransBase
00055 {
00056
public:
00057
00060
RetransBase( );
00061
virtual ~RetransBase( );
00062
00071
static RetransBase*
factory( SDP::RetransTypes retrans_type,
SH::Base* enc );
00072
00077
virtual MNRope*
createExtensionHeaderData(
int& type ) = 0;
00078
00081
virtual void setEncoder(
MNRTPEncoderBase* enc ) = 0;
00082
00085
virtual MNRTPEncoderBase*
getEncoder( ) = 0;
00086
00090
virtual bool hasExtHeader( ) = 0;
00091
virtual bool prepareCallback( ) = 0;
00092
virtual SH::ReportPtr sendEnd( );
00093
virtual MNRope*
get_next_data(
SH::SinkEndpoint* pull_here,
00094 size_t max_bytes_to_pull,
00095 SH::ReturnCode& except,
00096 size_t& pulled_bytes,
00097
bool& rtp_marker,
00098
u_int32& rtp_timestamp,
00099
Timeval& next_playtime_packet,
00100
int bandwidth,
00101
int& cbpidx ) = 0;
00102
virtual bool evalRTRTCP(
void* data,
int len,
int subtype,
int& cbpidx);
00103
00104 };
00105
00106
#endif