org.red5.server.net.rtmp.codec
Class RTMPProtocolEncoder

java.lang.Object
  extended by org.red5.server.net.protocol.BaseProtocolEncoder
      extended by org.red5.server.net.rtmp.codec.RTMPProtocolEncoder
All Implemented Interfaces:
SimpleProtocolEncoder, IEventEncoder, Constants
Direct Known Subclasses:
RTMPMinaProtocolEncoder, RTMPTProtocolEncoder

public class RTMPProtocolEncoder
extends BaseProtocolEncoder
implements SimpleProtocolEncoder, Constants, IEventEncoder

RTMP protocol encoder encodes RTMP messages and packets to byte buffers.


Field Summary
protected static Logger log
          Logger.
 
Fields inherited from interface org.red5.server.net.rtmp.message.Constants
ACTION_CLOSE_STREAM, ACTION_CONNECT, ACTION_CREATE_STREAM, ACTION_DELETE_STREAM, ACTION_DISCONNECT, ACTION_PAUSE, ACTION_PAUSE_RAW, ACTION_PLAY, ACTION_PUBLISH, ACTION_RECEIVE_AUDIO, ACTION_RECEIVE_VIDEO, ACTION_RELEASE_STREAM, ACTION_SEEK, ACTION_STOP, HANDSHAKE_SIZE, HEADER_CONTINUE, HEADER_NEW, HEADER_SAME_SOURCE, HEADER_TIMER_CHANGE, MEDIUM_INT_MAX, SO_CLIENT_CLEAR_DATA, SO_CLIENT_DELETE_DATA, SO_CLIENT_INITIAL_DATA, SO_CLIENT_SEND_MESSAGE, SO_CLIENT_STATUS, SO_CLIENT_UPDATE_ATTRIBUTE, SO_CLIENT_UPDATE_DATA, SO_CONNECT, SO_DELETE_ATTRIBUTE, SO_DISCONNECT, SO_SEND_MESSAGE, SO_SET_ATTRIBUTE, TYPE_AUDIO_DATA, TYPE_BYTES_READ, TYPE_CHUNK_SIZE, TYPE_CLIENT_BANDWIDTH, TYPE_FLEX_MESSAGE, TYPE_FLEX_SHARED_OBJECT, TYPE_FLEX_STREAM_SEND, TYPE_INVOKE, TYPE_NOTIFY, TYPE_PING, TYPE_SERVER_BANDWIDTH, TYPE_SHARED_OBJECT, TYPE_STREAM_METADATA, TYPE_VIDEO_DATA
 
Constructor Summary
RTMPProtocolEncoder()
           
 
Method Summary
 void doEncodeSharedObject(ISharedObjectMessage so, RTMP rtmp, org.apache.mina.core.buffer.IoBuffer out)
          Perform the actual encoding of the shared object contents.
 org.apache.mina.core.buffer.IoBuffer encode(ProtocolState state, Object message)
          Encodes object with given protocol state to byte buffer
 org.apache.mina.core.buffer.IoBuffer encodeAudioData(AudioData audioData)
          Encodes AudioData event to byte buffer.
 org.apache.mina.core.buffer.IoBuffer encodeBytesRead(BytesRead bytesRead)
          Encodes BytesRead event to byte buffer.
 org.apache.mina.core.buffer.IoBuffer encodeChunkSize(ChunkSize chunkSize)
          Encodes ChunkSize event to byte buffer.
 org.apache.mina.core.buffer.IoBuffer encodeFlexMessage(FlexMessage msg, RTMP rtmp)
          Encodes Flex message event.
 org.apache.mina.core.buffer.IoBuffer encodeFlexSharedObject(ISharedObjectMessage so, RTMP rtmp)
          Encodes SharedObjectMessage event to byte buffer using AMF3 encoding.
 org.apache.mina.core.buffer.IoBuffer encodeFlexStreamSend(FlexStreamSend msg)
           
 org.apache.mina.core.buffer.IoBuffer encodeHeader(Header header, Header lastHeader)
          Encode RTMP header.
 void encodeHeader(Header header, Header lastHeader, org.apache.mina.core.buffer.IoBuffer buf)
          Encode RTMP header into given IoBuffer.
 org.apache.mina.core.buffer.IoBuffer encodeInvoke(Invoke invoke, RTMP rtmp)
          Encodes Invoke event to byte buffer.
 org.apache.mina.core.buffer.IoBuffer encodeMessage(RTMP rtmp, Header header, IRTMPEvent message)
          Encode message.
 org.apache.mina.core.buffer.IoBuffer encodeNotify(Notify notify, RTMP rtmp)
          Encodes Notify event to byte buffer.
protected  void encodeNotifyOrInvoke(org.apache.mina.core.buffer.IoBuffer out, Notify invoke, RTMP rtmp)
          Encode notification event and fill given byte buffer.
protected  org.apache.mina.core.buffer.IoBuffer encodeNotifyOrInvoke(Notify invoke, RTMP rtmp)
          Encode notification event.
 org.apache.mina.core.buffer.IoBuffer encodePacket(RTMP rtmp, Packet packet)
          Encode packet.
 org.apache.mina.core.buffer.IoBuffer encodePing(Ping ping)
          Encodes Ping event to byte buffer.
 org.apache.mina.core.buffer.IoBuffer encodeSharedObject(ISharedObjectMessage so, RTMP rtmp)
          Encodes SharedObjectMessage event to byte buffer.
 org.apache.mina.core.buffer.IoBuffer encodeStreamMetadata(Notify metaData)
           
 org.apache.mina.core.buffer.IoBuffer encodeUnknown(Unknown unknown)
          Encodes Unknown event to byte buffer.
 org.apache.mina.core.buffer.IoBuffer encodeVideoData(VideoData videoData)
          Encodes VideoData event to byte buffer.
 void setSerializer(Serializer serializer)
          Setter for serializer.
 
Methods inherited from class org.red5.server.net.protocol.BaseProtocolEncoder
generateErrorResult
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static Logger log
Logger.

Constructor Detail

RTMPProtocolEncoder

public RTMPProtocolEncoder()
Method Detail

encode

public org.apache.mina.core.buffer.IoBuffer encode(ProtocolState state,
                                                   Object message)
                                            throws Exception
Encodes object with given protocol state to byte buffer

Specified by:
encode in interface SimpleProtocolEncoder
Parameters:
state - Protocol state
message - Object to encode
Returns:
IoBuffer with encoded data
Throws:
Exception - Any decoding exception

encodePacket

public org.apache.mina.core.buffer.IoBuffer encodePacket(RTMP rtmp,
                                                         Packet packet)
Encode packet.

Parameters:
rtmp - RTMP protocol state
packet - RTMP packet
Returns:
Encoded data

encodeHeader

public org.apache.mina.core.buffer.IoBuffer encodeHeader(Header header,
                                                         Header lastHeader)
Encode RTMP header.

Parameters:
header - RTMP message header
lastHeader - Previous header
Returns:
Encoded header data

encodeHeader

public void encodeHeader(Header header,
                         Header lastHeader,
                         org.apache.mina.core.buffer.IoBuffer buf)
Encode RTMP header into given IoBuffer.

Parameters:
header - RTMP message header
lastHeader - Previous header
buf - Buffer to write encoded header to

encodeMessage

public org.apache.mina.core.buffer.IoBuffer encodeMessage(RTMP rtmp,
                                                          Header header,
                                                          IRTMPEvent message)
Encode message.

Parameters:
rtmp - RTMP protocol state
header - RTMP message header
message - RTMP message (event)
Returns:
Encoded message data

encodeChunkSize

public org.apache.mina.core.buffer.IoBuffer encodeChunkSize(ChunkSize chunkSize)
Encodes ChunkSize event to byte buffer.

Specified by:
encodeChunkSize in interface IEventEncoder
Parameters:
chunkSize - ChunkSize event
Returns:
Byte buffer

encodeFlexSharedObject

public org.apache.mina.core.buffer.IoBuffer encodeFlexSharedObject(ISharedObjectMessage so,
                                                                   RTMP rtmp)
Encodes SharedObjectMessage event to byte buffer using AMF3 encoding.

Specified by:
encodeFlexSharedObject in interface IEventEncoder
Parameters:
so - ISharedObjectMessage event
rtmp - RTMP protocol state
Returns:
Byte buffer

encodeSharedObject

public org.apache.mina.core.buffer.IoBuffer encodeSharedObject(ISharedObjectMessage so,
                                                               RTMP rtmp)
Encodes SharedObjectMessage event to byte buffer.

Specified by:
encodeSharedObject in interface IEventEncoder
Parameters:
so - ISharedObjectMessage event
rtmp - RTMP protocol state
Returns:
Byte buffer

doEncodeSharedObject

public void doEncodeSharedObject(ISharedObjectMessage so,
                                 RTMP rtmp,
                                 org.apache.mina.core.buffer.IoBuffer out)
Perform the actual encoding of the shared object contents.

Parameters:
so - shared object
rtmp - rtmp
out - output buffer

encodeNotify

public org.apache.mina.core.buffer.IoBuffer encodeNotify(Notify notify,
                                                         RTMP rtmp)
Encodes Notify event to byte buffer.

Specified by:
encodeNotify in interface IEventEncoder
Parameters:
notify - Notify event
rtmp - RTMP protocol state
Returns:
Byte buffer

encodeInvoke

public org.apache.mina.core.buffer.IoBuffer encodeInvoke(Invoke invoke,
                                                         RTMP rtmp)
Encodes Invoke event to byte buffer.

Specified by:
encodeInvoke in interface IEventEncoder
Parameters:
invoke - Invoke event
rtmp - RTMP protocol state
Returns:
Byte buffer

encodeNotifyOrInvoke

protected org.apache.mina.core.buffer.IoBuffer encodeNotifyOrInvoke(Notify invoke,
                                                                    RTMP rtmp)
Encode notification event.

Parameters:
invoke - Notification event
Returns:
Encoded event data

encodeNotifyOrInvoke

protected void encodeNotifyOrInvoke(org.apache.mina.core.buffer.IoBuffer out,
                                    Notify invoke,
                                    RTMP rtmp)
Encode notification event and fill given byte buffer.

Parameters:
out - Byte buffer to fill
invoke - Notification event

encodePing

public org.apache.mina.core.buffer.IoBuffer encodePing(Ping ping)
Encodes Ping event to byte buffer.

Specified by:
encodePing in interface IEventEncoder
Parameters:
ping - Ping event
Returns:
Byte buffer

encodeBytesRead

public org.apache.mina.core.buffer.IoBuffer encodeBytesRead(BytesRead bytesRead)
Encodes BytesRead event to byte buffer.

Specified by:
encodeBytesRead in interface IEventEncoder
Parameters:
bytesRead - BytesRead event
Returns:
Byte buffer

encodeAudioData

public org.apache.mina.core.buffer.IoBuffer encodeAudioData(AudioData audioData)
Encodes AudioData event to byte buffer.

Specified by:
encodeAudioData in interface IEventEncoder
Parameters:
audioData - AudioData event
Returns:
Byte buffer

encodeVideoData

public org.apache.mina.core.buffer.IoBuffer encodeVideoData(VideoData videoData)
Encodes VideoData event to byte buffer.

Specified by:
encodeVideoData in interface IEventEncoder
Parameters:
videoData - VideoData event
Returns:
Byte buffer

encodeUnknown

public org.apache.mina.core.buffer.IoBuffer encodeUnknown(Unknown unknown)
Encodes Unknown event to byte buffer.

Specified by:
encodeUnknown in interface IEventEncoder
Parameters:
unknown - Unknown event
Returns:
Byte buffer

encodeStreamMetadata

public org.apache.mina.core.buffer.IoBuffer encodeStreamMetadata(Notify metaData)

setSerializer

public void setSerializer(Serializer serializer)
Setter for serializer.

Parameters:
serializer - Serializer

encodeFlexMessage

public org.apache.mina.core.buffer.IoBuffer encodeFlexMessage(FlexMessage msg,
                                                              RTMP rtmp)
Encodes Flex message event.

Parameters:
msg - Flex message event
rtmp - RTMP
Returns:
Encoded data

encodeFlexStreamSend

public org.apache.mina.core.buffer.IoBuffer encodeFlexStreamSend(FlexStreamSend msg)


Copyright © 2006-2009 The Red5 Project