Classes | Public Types | Public Member Functions | Protected Attributes

gnash::RTMP Class Reference

#include <rtmp.h>

Inheritance diagram for gnash::RTMP:
Inheritance graph
[legend]
Collaboration diagram for gnash::RTMP:
Collaboration graph
[legend]

List of all members.

Classes

struct  rtmp_handshake_head_t
struct  rtmp_head_t
struct  rtmp_ping_t
struct  user_event_t

Public Types

enum  encoding_types_e { ENCODE_AMF0 = 0x0, ENCODE_AMF3 = 0x3 }
enum  audiocodecs_e {
  RAW = 0x0001, ADPCM = 0x0002, MP3 = 0x0004, INTEL = 0x0005,
  CELT = 0x0008, NELLY8 = 0x0020, NELLY = 0x0040, G711A = 0x0080,
  G711U = 0x0100, NELLY16 = 0x0200, AAC = 0x0400, SPEEX = 0x0800,
  DEFAULT_AUDIO_SET = 0x0267, ALLAUDIO = 0x0fff
}
enum  videocodecs_e {
  UNUSED = 0x0001, JPEG = 0x0002, SORENSON = 0x4, ADOBE = 0x0008,
  VP6 = 0x0010, VP6ALPHA = 0x0020, SCREEN2 = 0x0040, H264 = 0x0080,
  DEFAULT_VIDEO_SET = 0x007c, ALLVIDEO = 0x00ff
}
enum  videofunction_e { SEEK = 0x1, AMF0 = 0x0, AMF3 = 0x3 }
enum  content_types_e {
  NONE = 0x0, CHUNK_SIZE = 0x1, ABORT = 0x2, BYTES_READ = 0x3,
  USER = 0x4, WINDOW_SIZE = 0x5, SET_BANDWITH = 0x6, ROUTE = 0x7,
  AUDIO_DATA = 0x8, VIDEO_DATA = 0x9, SHARED_OBJ = 0xa, AMF3_NOTIFY = 0xf,
  AMF3_SHARED_OBJ = 0x10, AMF3_INVOKE = 0x11, NOTIFY = 0x12, INVOKE = 0x14,
  FLV_DATA = 0x16
}
enum  user_control_e {
  STREAM_START = 0x0, STREAM_EOF = 0x1, STREAM_NODATA = 0x2, STREAM_BUFFER = 0x3,
  STREAM_LIVE = 0x4, STREAM_PING = 0x6, STREAM_PONG = 0x7
}
enum  sharedobj_types_e {
  CREATE_OBJ = 0x1, DELETE_OBJ = 0x2, REQUEST_CHANGE = 0x3, CHANGE = 0x4,
  SUCCESS_CLIENT = 0x5, SEND_MESSAGE = 0x6, STATUS = 0x7, CLEAR = 0x8,
  DELETE_SLOT = 0x9, REQUEST_DELETE_SLOT = 0xa, SUCCESS_SERVER = 0xb
}
enum  rtmp_ping_e {
  PING_CLEAR = 0x0, PING_PLAY = 0x1, PING_TIME = 0x3, PING_RESET = 0x4,
  PING_CLIENT = 0x6, PONG_CLIENT = 0x7
}
enum  rtmp_op_e {
  STREAM_PLAY, STREAM_PAUSE, STREAM_PUBLISH, STREAM_STOP,
  STREAM_SEEK
}
enum  rtmp_state_t {
  RTMP_STATE_HANDSHAKE_SEND, RTMP_STATE_HANDSHAKE_RECV, RTMP_STATE_HANDSHAKE_ACK, RTMP_STATE_CONNECT,
  RTMP_STATE_NETCONNECT, RTMP_STATE_NETSTREAM, RTMP_STATE_HEADER, RTMP_STATE_DONE
}
enum  rtmp_error_t {
  RTMP_ERR_UNDEF, RTMP_ERR_NOTFOUND, RTMP_ERR_PERM, RTMP_ERR_DISKFULL,
  RTMP_ERR_ILLEGAL, RTMP_ERR_UNKNOWNID, RTMP_ERR_EXISTS, RTMP_ERR_NOSUCHUSER,
  RTMP_ERR_TIMEOUT, RTMP_ERR_NORESPONSE
}
enum  rtmp_headersize_e { HEADER_12 = 0x0, HEADER_8 = 0x40, HEADER_4 = 0x80, HEADER_1 = 0xc0 }
typedef std::map< const char
*, cygnal::Element
AMFProperties
typedef std::deque< CQue * > queues_t

Public Member Functions

 RTMP ()
virtual ~RTMP ()
boost::shared_ptr< rtmp_head_tdecodeHeader (boost::uint8_t *header)
boost::shared_ptr< rtmp_head_tdecodeHeader (cygnal::Buffer &data)
boost::shared_ptr< cygnal::BufferencodeHeader (int amf_index, rtmp_headersize_e head_size, size_t total_size, content_types_e type, RTMPMsg::rtmp_source_e routing)
boost::shared_ptr< cygnal::BufferencodeHeader (int amf_index, rtmp_headersize_e head_size)
 \ Each RTMP header consists of the following:
void addProperty (cygnal::Element &el)
void addProperty (char *name, cygnal::Element &el)
void addProperty (std::string &name, cygnal::Element &el)
cygnal::ElementgetProperty (const std::string &name)
int headerSize (boost::uint8_t header)
rtmp_head_tgetHeader ()
int getHeaderSize ()
int getTotalSize ()
RTMPMsg::rtmp_source_e getRouting ()
int getChannel ()
int getPacketSize ()
int getMysteryWord ()
boost::shared_ptr< RTMPMsgdecodeMsgBody (boost::uint8_t *data, size_t size)
boost::shared_ptr< RTMPMsgdecodeMsgBody (cygnal::Buffer &buf)
virtual boost::shared_ptr
< rtmp_ping_t
decodePing (boost::uint8_t *data)
boost::shared_ptr< rtmp_ping_tdecodePing (cygnal::Buffer &buf)
virtual boost::shared_ptr
< user_event_t
decodeUserControl (boost::uint8_t *data)
boost::shared_ptr< user_event_tdecodeUserControl (cygnal::Buffer &buf)
virtual boost::shared_ptr
< cygnal::Buffer
encodeUserControl (user_control_e, boost::uint32_t data)
virtual boost::shared_ptr
< cygnal::Buffer
encodeChunkSize (int size)
virtual void decodeChunkSize ()
virtual boost::shared_ptr
< cygnal::Buffer
encodeBytesRead ()
virtual void decodeBytesRead ()
virtual boost::shared_ptr
< cygnal::Buffer
encodeServer ()
virtual void decodeServer ()
virtual boost::shared_ptr
< cygnal::Buffer
encodeClient ()
virtual void decodeClient ()
virtual boost::shared_ptr
< cygnal::Buffer
encodeAudioData ()
virtual void decodeAudioData ()
virtual boost::shared_ptr
< cygnal::Buffer
encodeVideoData ()
virtual void decodeVideoData ()
virtual boost::shared_ptr
< cygnal::Buffer
encodeNotify ()
virtual void decodeNotify ()
virtual boost::shared_ptr
< cygnal::Buffer
encodeSharedObj ()
virtual void decodeSharedObj ()
virtual boost::shared_ptr
< cygnal::Buffer
encodeInvoke ()
virtual void decodeInvoke ()
boost::shared_ptr< cygnal::BufferrecvMsg ()
boost::shared_ptr< cygnal::BufferrecvMsg (int fd)
bool sendMsg (cygnal::Buffer &data)
bool sendMsg (int channel, rtmp_headersize_e head_size, size_t total_size, content_types_e type, RTMPMsg::rtmp_source_e routing, cygnal::Buffer &data)
bool sendMsg (int fd, int channel, rtmp_headersize_e head_size, size_t total_size, content_types_e type, RTMPMsg::rtmp_source_e routing, cygnal::Buffer &data)
bool sendMsg (int channel, rtmp_headersize_e head_size, size_t total_size, content_types_e type, RTMPMsg::rtmp_source_e routing, boost::uint8_t *data, size_t size)
bool sendMsg (int fd, int channel, rtmp_headersize_e head_size, size_t total_size, content_types_e type, RTMPMsg::rtmp_source_e routing, boost::uint8_t *data, size_t size)
boost::shared_ptr< queues_tsplit (cygnal::Buffer &buf)
boost::shared_ptr< queues_tsplit (boost::uint8_t *data, size_t size)
CQueoperator[] (size_t x)
boost::uint32_t getTime ()
void dump ()

Protected Attributes

AMFProperties _properties
cygnal::Buffer_handshake
rtmp_head_t _header
int _packet_size
int _mystery_word
size_t _chunksize [MAX_AMF_INDEXES]
size_t _lastsize [MAX_AMF_INDEXES]
std::vector< size_t > _bodysize
std::vector< content_types_e_type
int _timeout
CQue _queues [MAX_AMF_INDEXES]
cygnal::Buffer _buffer
rtmp_handshake_head_t _handshake_header

Member Typedef Documentation

typedef std::map<const char*, cygnal::Element> gnash::RTMP::AMFProperties
typedef std::deque<CQue *> gnash::RTMP::queues_t

Member Enumeration Documentation

Enumerator:
RAW 
ADPCM 
MP3 
INTEL 
CELT 
NELLY8 
NELLY 
G711A 
G711U 
NELLY16 
AAC 
SPEEX 
DEFAULT_AUDIO_SET 
ALLAUDIO 
Enumerator:
NONE 
CHUNK_SIZE 
ABORT 
BYTES_READ 
USER 
WINDOW_SIZE 
SET_BANDWITH 
ROUTE 
AUDIO_DATA 
VIDEO_DATA 
SHARED_OBJ 
AMF3_NOTIFY 
AMF3_SHARED_OBJ 
AMF3_INVOKE 
NOTIFY 
INVOKE 
FLV_DATA 
Enumerator:
ENCODE_AMF0 
ENCODE_AMF3 
Enumerator:
RTMP_ERR_UNDEF 
RTMP_ERR_NOTFOUND 
RTMP_ERR_PERM 
RTMP_ERR_DISKFULL 
RTMP_ERR_ILLEGAL 
RTMP_ERR_UNKNOWNID 
RTMP_ERR_EXISTS 
RTMP_ERR_NOSUCHUSER 
RTMP_ERR_TIMEOUT 
RTMP_ERR_NORESPONSE 
Enumerator:
HEADER_12 
HEADER_8 
HEADER_4 
HEADER_1 
Enumerator:
STREAM_PLAY 
STREAM_PAUSE 
STREAM_PUBLISH 
STREAM_STOP 
STREAM_SEEK 
Enumerator:
PING_CLEAR 
PING_PLAY 
PING_TIME 
PING_RESET 
PING_CLIENT 
PONG_CLIENT 
Enumerator:
RTMP_STATE_HANDSHAKE_SEND 
RTMP_STATE_HANDSHAKE_RECV 
RTMP_STATE_HANDSHAKE_ACK 
RTMP_STATE_CONNECT 
RTMP_STATE_NETCONNECT 
RTMP_STATE_NETSTREAM 
RTMP_STATE_HEADER 
RTMP_STATE_DONE 
Enumerator:
CREATE_OBJ 
DELETE_OBJ 
REQUEST_CHANGE 
CHANGE 
SUCCESS_CLIENT 
SEND_MESSAGE 
STATUS 
CLEAR 
DELETE_SLOT 
REQUEST_DELETE_SLOT 
SUCCESS_SERVER 
Enumerator:
STREAM_START 
STREAM_EOF 
STREAM_NODATA 
STREAM_BUFFER 
STREAM_LIVE 
STREAM_PING 
STREAM_PONG 
Enumerator:
UNUSED 
JPEG 
SORENSON 
ADOBE 
VP6 
VP6ALPHA 
SCREEN2 
H264 
DEFAULT_VIDEO_SET 
ALLVIDEO 
Enumerator:
SEEK 
AMF0 
AMF3 

Constructor & Destructor Documentation

gnash::RTMP::RTMP (  ) 
gnash::RTMP::~RTMP (  )  [virtual]

References _handshake, and _properties.


Member Function Documentation

void gnash::RTMP::addProperty ( cygnal::Element el  ) 
void gnash::RTMP::addProperty ( char *  name,
cygnal::Element el 
)

References _properties.

void gnash::RTMP::addProperty ( std::string &  name,
cygnal::Element el 
)
void gnash::RTMP::decodeAudioData (  )  [virtual]
void gnash::RTMP::decodeBytesRead (  )  [virtual]
void gnash::RTMP::decodeChunkSize (  )  [virtual]
void gnash::RTMP::decodeClient (  )  [virtual]
boost::shared_ptr< RTMP::rtmp_head_t > gnash::RTMP::decodeHeader ( boost::uint8_t *  header  ) 
boost::shared_ptr< RTMP::rtmp_head_t > gnash::RTMP::decodeHeader ( cygnal::Buffer data  ) 
void gnash::RTMP::decodeInvoke (  )  [virtual]
boost::shared_ptr< RTMPMsg > gnash::RTMP::decodeMsgBody ( boost::uint8_t *  data,
size_t  size 
)
boost::shared_ptr< RTMPMsg > gnash::RTMP::decodeMsgBody ( cygnal::Buffer buf  ) 
void gnash::RTMP::decodeNotify (  )  [virtual]
boost::shared_ptr< RTMP::rtmp_ping_t > gnash::RTMP::decodePing ( boost::uint8_t *  data  )  [virtual]
boost::shared_ptr< RTMP::rtmp_ping_t > gnash::RTMP::decodePing ( cygnal::Buffer buf  ) 
void gnash::RTMP::decodeServer (  )  [virtual]
void gnash::RTMP::decodeSharedObj (  )  [virtual]
boost::shared_ptr< RTMP::user_event_t > gnash::RTMP::decodeUserControl ( boost::uint8_t *  data  )  [virtual]
boost::shared_ptr< RTMP::user_event_t > gnash::RTMP::decodeUserControl ( cygnal::Buffer buf  ) 
void gnash::RTMP::decodeVideoData (  )  [virtual]
void gnash::RTMP::dump (  ) 
boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeAudioData (  )  [virtual]

References __PRETTY_FUNCTION__.

boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeBytesRead (  )  [virtual]

References __PRETTY_FUNCTION__.

boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeChunkSize ( int  size  )  [virtual]
boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeClient (  )  [virtual]

References __PRETTY_FUNCTION__.

boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeHeader ( int  amf_index,
rtmp_headersize_e  head_size 
)

\ Each RTMP header consists of the following:

Index & header size - The header size and amf channel index. Total size - The total size of the message Type - The type of the message Routing - The source/destination of the message

References gnash::RTMP_HEADSIZE_MASK, and gnash::RTMP_INDEX_MASK.

boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeHeader ( int  amf_index,
rtmp_headersize_e  head_size,
size_t  total_size,
content_types_e  type,
RTMPMsg::rtmp_source_e  routing 
)
boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeInvoke (  )  [virtual]

References __PRETTY_FUNCTION__.

boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeNotify (  )  [virtual]

References __PRETTY_FUNCTION__.

boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeServer (  )  [virtual]

References __PRETTY_FUNCTION__.

boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeSharedObj (  )  [virtual]

References __PRETTY_FUNCTION__.

boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeUserControl ( user_control_e  eventid,
boost::uint32_t  data 
) [virtual]
boost::shared_ptr< cygnal::Buffer > gnash::RTMP::encodeVideoData (  )  [virtual]

References __PRETTY_FUNCTION__.

int gnash::RTMP::getChannel (  )  [inline]
rtmp_head_t* gnash::RTMP::getHeader (  )  [inline]
int gnash::RTMP::getHeaderSize (  )  [inline]
int gnash::RTMP::getMysteryWord (  )  [inline]
int gnash::RTMP::getPacketSize (  )  [inline]
cygnal::Element & gnash::RTMP::getProperty ( const std::string &  name  ) 

References _properties.

RTMPMsg::rtmp_source_e gnash::RTMP::getRouting (  )  [inline]
boost::uint32_t gnash::RTMP::getTime (  )  [inline]

getTime The time on most systems these days is a 64 bit long, but swf is old, so it only uses a 32 bit integer instead. We know casting looses precision, but that's just the way it is in RTMP.

Referenced by gnash::RTMPClient::handShakeRequest().

int gnash::RTMP::getTotalSize (  )  [inline]
int gnash::RTMP::headerSize ( boost::uint8_t  header  ) 
CQue& gnash::RTMP::operator[] ( size_t  x  )  [inline]
boost::shared_ptr< cygnal::Buffer > gnash::RTMP::recvMsg ( int  fd  ) 
boost::shared_ptr< cygnal::Buffer > gnash::RTMP::recvMsg (  ) 
bool gnash::RTMP::sendMsg ( cygnal::Buffer data  ) 
bool gnash::RTMP::sendMsg ( int  fd,
int  channel,
rtmp_headersize_e  head_size,
size_t  total_size,
content_types_e  type,
RTMPMsg::rtmp_source_e  routing,
boost::uint8_t *  data,
size_t  size 
)
bool gnash::RTMP::sendMsg ( int  channel,
rtmp_headersize_e  head_size,
size_t  total_size,
content_types_e  type,
RTMPMsg::rtmp_source_e  routing,
boost::uint8_t *  data,
size_t  size 
)
bool gnash::RTMP::sendMsg ( int  channel,
rtmp_headersize_e  head_size,
size_t  total_size,
content_types_e  type,
RTMPMsg::rtmp_source_e  routing,
cygnal::Buffer data 
)
bool gnash::RTMP::sendMsg ( int  fd,
int  channel,
rtmp_headersize_e  head_size,
size_t  total_size,
content_types_e  type,
RTMPMsg::rtmp_source_e  routing,
cygnal::Buffer data 
)
boost::shared_ptr< RTMP::queues_t > gnash::RTMP::split ( boost::uint8_t *  data,
size_t  size 
)
boost::shared_ptr< RTMP::queues_t > gnash::RTMP::split ( cygnal::Buffer buf  ) 

Member Data Documentation

std::vector<size_t> gnash::RTMP::_bodysize [protected]

Referenced by decodeHeader(), and RTMP().

Referenced by RTMP(), sendMsg(), and split().

Referenced by RTMP(), and split().

int gnash::RTMP::_mystery_word [protected]

Referenced by decodeHeader().

int gnash::RTMP::_packet_size [protected]

Referenced by RTMP(), and split().

int gnash::RTMP::_timeout [protected]

Reimplemented from gnash::Network.

Referenced by recvMsg().

std::vector<content_types_e> gnash::RTMP::_type [protected]

Referenced by decodeHeader(), and RTMP().


The documentation for this class was generated from the following files: