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_RECV_BASE_H
00026
#define RETRANS_RECV_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 "sh/SHData.h"
00036
#include "rtp/MNRTPPacket.h"
00037
#include "MNTimeval.h"
00038
00039
00040
00041
00042
00043
00044
00045
00046
namespace SH
00047 {
00048
class Base;
00049
class SinkEndpoint;
00050
class RTPDecoderSH;
00051 };
00052
00053
class MNRope;
00054
class MNRTPDecoderBase;
00055
class MNSelector;
00056
00057 class RetransRecvBase
00058 {
00059
public:
00060
00063
RetransRecvBase( );
00064
virtual ~RetransRecvBase( );
00065
00074
static RetransRecvBase*
factory( SDP::RetransTypes retrans_type,
00075
SH::RTPDecoderSH* enc,
00076
MNSelector& sel );
00077
00080
virtual void setDecoder(
MNRTPDecoderBase* enc ) = 0;
00081
00084
virtual MNRTPDecoderBase*
getDecoder( ) = 0;
00085
00086
virtual void init(
int32 list_timeout,
u_int32 repeat_timeouts ) = 0;
00087
virtual void startStreaming( ) = 0;
00088
virtual void stopStreaming( ) = 0;
00089
virtual void evalLCRTCPPacket(
u_int32 ssrc,
00090
void* data,
00091
int len,
00092
int subtype,
00093
char* name,
00094
bool inCallback ) = 0;
00095
virtual SH::DataPtr evalLCRTPPacket(
MNRTPPacketPtr packet,
00096
MNRope*& payload,
00097 u_int64_t& bytecount ) = 0;
00098 };
00099
00100
00101
#endif