Package org.red5.server.net.rtmp.codec
Class RTMPProtocolDecoder
java.lang.Object
org.red5.server.net.rtmp.codec.RTMPProtocolDecoder
- All Implemented Interfaces:
IEventDecoder,Constants
- Direct Known Subclasses:
RTMPTProtocolDecoder
RTMP protocol decoder.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.red5.server.net.rtmp.message.Constants
Constants.DataType -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected static final booleanprotected static final booleanprotected static final org.slf4j.Loggerprotected static intFields inherited from interface org.red5.server.net.rtmp.message.Constants
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, SOURCE_TYPE_LIVE, SOURCE_TYPE_VOD, TYPE_ABORT, TYPE_AGGREGATE, TYPE_AUDIO_DATA, TYPE_BYTES_READ, TYPE_CHUNK_SIZE, TYPE_CLIENT_BANDWIDTH, TYPE_EDGE_ORIGIN, 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
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondecode(RTMPConnection conn, RTMPDecodeState state, org.apache.mina.core.buffer.IoBuffer in) Decodes the buffer data.decodeAbort(org.apache.mina.core.buffer.IoBuffer in) decodeAggregate(org.apache.mina.core.buffer.IoBuffer in) Decodes the aggregated data.decodeAudioData(org.apache.mina.core.buffer.IoBuffer in) Decodes audio data event.decodeBuffer(RTMPConnection conn, org.apache.mina.core.buffer.IoBuffer buffer) Decode all available objects in buffer.decodeBytesRead(org.apache.mina.core.buffer.IoBuffer in) Decodes BytesRead event.decodeChunkSize(org.apache.mina.core.buffer.IoBuffer in) Decodes chunk size event.decodeFlexMessage(org.apache.mina.core.buffer.IoBuffer in) Decodes FlexMessage event.decodeFlexSharedObject(org.apache.mina.core.buffer.IoBuffer in) Decodes shared object message event from AMF3 encoding.decodeHeader(ChunkHeader chh, RTMPDecodeState state, org.apache.mina.core.buffer.IoBuffer in, RTMP rtmp, int startPostion) Decodes packet header.decodeMessage(RTMPConnection conn, Header header, org.apache.mina.core.buffer.IoBuffer in) Decodes RTMP message event.decodePacket(RTMPConnection conn, RTMPDecodeState state, org.apache.mina.core.buffer.IoBuffer in) Decodes an IoBuffer into a Packet.decodePing(org.apache.mina.core.buffer.IoBuffer in) Decodes ping event.decodeSharedObject(org.apache.mina.core.buffer.IoBuffer in) Decodes shared object message event.decodeStreamData(org.apache.mina.core.buffer.IoBuffer in) Decodes stream data, to include onMetaData, onCuePoint, and onFI.decodeUnknown(byte dataType, org.apache.mina.core.buffer.IoBuffer in) Decodes event of Unknown type.decodeVideoData(org.apache.mina.core.buffer.IoBuffer in) Decodes video data event.protected voiddoDecodeSharedObject(SharedObjectMessage so, org.apache.mina.core.buffer.IoBuffer in, Input input) Perform the actual decoding of the shared object contents.voidsetCloseOnHeaderError(boolean closeOnHeaderError) Sets whether or not a header error on any channel should result in a closed connection.static voidsetMaxPacketSize(int maxPacketSize) Set the maximum allowed packet size.
-
Field Details
-
log
protected static final org.slf4j.Logger log -
isTrace
protected static final boolean isTrace -
isDebug
protected static final boolean isDebug -
closeOnHeaderError
protected boolean closeOnHeaderError -
MAX_PACKET_SIZE
protected static int MAX_PACKET_SIZE
-
-
Constructor Details
-
RTMPProtocolDecoder
public RTMPProtocolDecoder()Constructs a new RTMPProtocolDecoder.
-
-
Method Details
-
decodeBuffer
Decode all available objects in buffer.- Parameters:
conn- RTMP connectionbuffer- IoBuffer of data to be decoded- Returns:
- a list of decoded objects, may be empty if nothing could be decoded
-
decode
public Object decode(RTMPConnection conn, RTMPDecodeState state, org.apache.mina.core.buffer.IoBuffer in) throws ProtocolException Decodes the buffer data.- Parameters:
conn- RTMP connectionstate- Stores state for the protocol, ProtocolState is just a marker interfacein- IoBuffer of data to be decoded- Returns:
- one of three possible values:
1. null : the object could not be decoded, or some data was skipped, just continue 2. ProtocolState : the decoder was unable to decode the whole object, refer to the protocol state 3. Object : something was decoded, continue
- Throws:
ProtocolException- on error
-
decodePacket
public Packet decodePacket(RTMPConnection conn, RTMPDecodeState state, org.apache.mina.core.buffer.IoBuffer in) Decodes an IoBuffer into a Packet.- Parameters:
conn- Connectionstate- RTMP protocol statein- IoBuffer- Returns:
- Packet
-
decodeHeader
public Header decodeHeader(ChunkHeader chh, RTMPDecodeState state, org.apache.mina.core.buffer.IoBuffer in, RTMP rtmp, int startPostion) Decodes packet header.- Parameters:
chh- chunk headerstate- RTMP decode statein- Input IoBufferrtmp- RTMP object to get last headerstartPostion- Start position of the header in the input buffer from decodePacket- Returns:
- Decoded header
-
decodeMessage
public IRTMPEvent decodeMessage(RTMPConnection conn, Header header, org.apache.mina.core.buffer.IoBuffer in) Decodes RTMP message event.- Parameters:
conn- RTMP connectionheader- RTMP headerin- Input IoBuffer- Returns:
- RTMP event
-
decodeAbort
-
decodeUnknown
Decodes event of Unknown type.- Specified by:
decodeUnknownin interfaceIEventDecoder- Parameters:
dataType- Data typein- Byte buffer to decode- Returns:
- Unknown event
-
decodeAggregate
Decodes the aggregated data.- Specified by:
decodeAggregatein interfaceIEventDecoder- Parameters:
in- Byte buffer to decode- Returns:
- Aggregate event
-
decodeChunkSize
Decodes chunk size event.- Specified by:
decodeChunkSizein interfaceIEventDecoder- Parameters:
in- Byte buffer to decode- Returns:
- ChunkSize event
-
decodePing
Decodes ping event.- Specified by:
decodePingin interfaceIEventDecoder- Parameters:
in- IoBuffer- Returns:
- Ping event
-
decodeBytesRead
Decodes BytesRead event.- Specified by:
decodeBytesReadin interfaceIEventDecoder- Parameters:
in- Byte buffer to decode- Returns:
- BytesRead event
-
decodeAudioData
Decodes audio data event.- Specified by:
decodeAudioDatain interfaceIEventDecoder- Parameters:
in- Byte buffer to decode- Returns:
- AudioData event
-
decodeVideoData
Decodes video data event.- Specified by:
decodeVideoDatain interfaceIEventDecoder- Parameters:
in- Byte buffer to decode- Returns:
- VideoData event
-
decodeStreamData
Decodes stream data, to include onMetaData, onCuePoint, and onFI.- Parameters:
in- input buffer- Returns:
- Notify
-
decodeFlexMessage
Decodes FlexMessage event.- Specified by:
decodeFlexMessagein interfaceIEventDecoder- Parameters:
in- IoBuffer- Returns:
- FlexMessage event
-
setCloseOnHeaderError
public void setCloseOnHeaderError(boolean closeOnHeaderError) Sets whether or not a header error on any channel should result in a closed connection.- Parameters:
closeOnHeaderError- true to close on header decode errors
-
setMaxPacketSize
public static void setMaxPacketSize(int maxPacketSize) Set the maximum allowed packet size. Default is 3 Mb.- Parameters:
maxPacketSize- maximum allowed size for a packet
-