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 org.slf4j.Logger ioLog
          I/O operations logger.
protected static org.slf4j.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_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.common.ByteBuffer out)
          Perform the actual encoding of the shared object contents.
 org.apache.mina.common.ByteBuffer encode(ProtocolState state, Object message)
          Encodes object with given protocol state to byte buffer
 org.apache.mina.common.ByteBuffer encodeAudioData(AudioData audioData)
          Encodes AudioData event to byte buffer.
 org.apache.mina.common.ByteBuffer encodeBytesRead(BytesRead bytesRead)
          Encodes BytesRead event to byte buffer.
 org.apache.mina.common.ByteBuffer encodeChunkSize(ChunkSize chunkSize)
          Encodes ChunkSize event to byte buffer.
 org.apache.mina.common.ByteBuffer encodeFlexMessage(FlexMessage msg, RTMP rtmp)
          Encodes Flex message event.
 org.apache.mina.common.ByteBuffer encodeFlexSharedObject(ISharedObjectMessage so, RTMP rtmp)
          Encodes SharedObjectMessage event to byte buffer using AMF3 encoding.
 org.apache.mina.common.ByteBuffer encodeFlexStreamSend(FlexStreamSend msg)
           
 org.apache.mina.common.ByteBuffer encodeHeader(Header header, Header lastHeader)
          Encode RTMP header.
 void encodeHeader(Header header, Header lastHeader, org.apache.mina.common.ByteBuffer buf)
          Encode RTMP header into given ByteBuffer.
 org.apache.mina.common.ByteBuffer encodeInvoke(Invoke invoke, RTMP rtmp)
          Encodes Invoke event to byte buffer.
 org.apache.mina.common.ByteBuffer encodeMessage(RTMP rtmp, Header header, IRTMPEvent message)
          Encode message.
 org.apache.mina.common.ByteBuffer encodeNotify(Notify notify, RTMP rtmp)
          Encodes Notify event to byte buffer.
protected  void encodeNotifyOrInvoke(org.apache.mina.common.ByteBuffer out, Notify invoke, RTMP rtmp)
          Encode notification event and fill given byte buffer.
protected  org.apache.mina.common.ByteBuffer encodeNotifyOrInvoke(Notify invoke, RTMP rtmp)
          Encode notification event.
 org.apache.mina.common.ByteBuffer encodePacket(RTMP rtmp, Packet packet)
          Encode packet.
 org.apache.mina.common.ByteBuffer encodePing(Ping ping)
          Encodes Ping event to byte buffer.
 org.apache.mina.common.ByteBuffer encodeSharedObject(ISharedObjectMessage so, RTMP rtmp)
          Encodes SharedObjectMessage event to byte buffer.
 org.apache.mina.common.ByteBuffer encodeStreamMetadata(Notify metaData)
           
 org.apache.mina.common.ByteBuffer encodeUnknown(Unknown unknown)
          Encodes Unknown event to byte buffer.
 org.apache.mina.common.ByteBuffer 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 org.slf4j.Logger log
Logger.


ioLog

protected static org.slf4j.Logger ioLog
I/O operations logger.

Constructor Detail

RTMPProtocolEncoder

public RTMPProtocolEncoder()
Method Detail

encode

public org.apache.mina.common.ByteBuffer 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:
Byte buffer with encoded data
Throws:
Exception - Any decoding exception

encodePacket

public org.apache.mina.common.ByteBuffer encodePacket(RTMP rtmp,
                                                      Packet packet)
Encode packet.

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

encodeHeader

public org.apache.mina.common.ByteBuffer 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.common.ByteBuffer buf)
Encode RTMP header into given ByteBuffer.

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

encodeMessage

public org.apache.mina.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer out)
Perform the actual encoding of the shared object contents.

Parameters:
so -
rtmp -
out -

encodeNotify

public org.apache.mina.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer encodeNotifyOrInvoke(Notify invoke,
                                                                 RTMP rtmp)
Encode notification event.

Parameters:
invoke - Notification event
Returns:
Encoded event data

encodeNotifyOrInvoke

protected void encodeNotifyOrInvoke(org.apache.mina.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer 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.common.ByteBuffer encodeStreamMetadata(Notify metaData)

setSerializer

public void setSerializer(Serializer serializer)
Setter for serializer.

Parameters:
serializer - Serializer

encodeFlexMessage

public org.apache.mina.common.ByteBuffer encodeFlexMessage(FlexMessage msg,
                                                           RTMP rtmp)
Encodes Flex message event.

Parameters:
msg - Flex message event
Returns:
Encoded data

encodeFlexStreamSend

public org.apache.mina.common.ByteBuffer encodeFlexStreamSend(FlexStreamSend msg)


Copyright © 2006-2007 the Red5 project.