Package org.red5.server.net.rtmp.codec
Class RTMPProtocolEncoder
java.lang.Object
org.red5.server.net.rtmp.codec.RTMPProtocolEncoder
- All Implemented Interfaces:
IEventEncoder,Constants
- Direct Known Subclasses:
RTMPTProtocolEncoder
RTMP protocol encoder encodes RTMP messages and packets to byte buffers.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.red5.server.net.rtmp.message.Constants
Constants.DataType -
Field Summary
FieldsFields 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 TypeMethodDescriptionprotected booleandropMessage(int channelId, IRTMPEvent message) Determine if this message should be dropped.org.apache.mina.core.buffer.IoBufferEncodes object with given protocol state to byte bufferorg.apache.mina.core.buffer.IoBufferencodeAggregate(Aggregate aggregate) Encodes Aggregate event to byte buffer.org.apache.mina.core.buffer.IoBufferencodeAudioData(AudioData audioData) Encodes AudioData event to byte buffer.org.apache.mina.core.buffer.IoBufferencodeBytesRead(BytesRead bytesRead) Encodes BytesRead event to byte buffer.org.apache.mina.core.buffer.IoBufferencodeChunkSize(ChunkSize chunkSize) Encodes ChunkSize event to byte buffer.protected voidencodeCommand(org.apache.mina.core.buffer.IoBuffer out, ICommand command) Encode command event and fill given byte buffer.protected org.apache.mina.core.buffer.IoBufferencodeCommand(Notify invoke) Encode notification event.org.apache.mina.core.buffer.IoBufferEncodes Flex message event.org.apache.mina.core.buffer.IoBufferEncodes SharedObjectMessage event to byte buffer using AMF3 encoding.org.apache.mina.core.buffer.IoBufferorg.apache.mina.core.buffer.IoBufferencodeHeader(Header header, Header lastHeader) Encode RTMP header.voidencodeHeader(Header header, Header lastHeader, org.apache.mina.core.buffer.IoBuffer buf) Encode RTMP header into given IoBuffer.org.apache.mina.core.buffer.IoBufferencodeInvoke(Invoke invoke) Encodes Invoke event to byte buffer.org.apache.mina.core.buffer.IoBufferencodeMessage(Header header, IRTMPEvent message) Encode message.org.apache.mina.core.buffer.IoBufferencodeNotify(Notify notify) Encodes Notify event to byte buffer.org.apache.mina.core.buffer.IoBufferencodePacket(Packet packet) Encode packet.org.apache.mina.core.buffer.IoBufferencodePing(Ping ping) Encodes Ping event to byte buffer.org.apache.mina.core.buffer.IoBufferEncodes SharedObjectMessage event to byte buffer.org.apache.mina.core.buffer.IoBufferencodeStreamMetadata(Notify metaData) org.apache.mina.core.buffer.IoBufferencodeUnknown(Unknown unknown) Encodes Unknown event to byte buffer.org.apache.mina.core.buffer.IoBufferencodeVideoData(VideoData videoData) Encodes VideoData event to byte buffer.protected StatusObjectgenerateErrorResult(String code, Throwable error) Generate error object to return for given exception.longvoidsetBaseTolerance(long baseTolerance) voidsetDropEncoded(boolean dropEncoded) voidsetDropLiveFuture(boolean dropLiveFuture) Setter for dropLiveFuture
-
Field Details
-
log
protected org.slf4j.Logger log
-
-
Constructor Details
-
RTMPProtocolEncoder
public RTMPProtocolEncoder()
-
-
Method Details
-
encode
Encodes object with given protocol state to byte buffer- Parameters:
message- Object to encode- Returns:
- IoBuffer with encoded data
- Throws:
Exception- Any decoding exception
-
encodePacket
Encode packet.- Parameters:
packet- RTMP packet- Returns:
- Encoded data
-
dropMessage
Determine if this message should be dropped. If the traffic from server to client is congested, then drop LIVE messages to help alleviate congestion. - determine latency between server and client using ping - ping timestamp is unsigned int (4 bytes) and is set from value on sender 1st drop disposable frames - lowest mark 2nd drop interframes - middle 3rd drop key frames - high mark- Parameters:
channelId- the channel IDmessage- the message- Returns:
- true to drop; false to send
-
encodeHeader
Encode RTMP header.- Parameters:
header- RTMP message headerlastHeader- 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 headerlastHeader- Previous headerbuf- Buffer for writing encoded header into
-
encodeMessage
Encode message.- Parameters:
header- RTMP message headermessage- RTMP message (event)- Returns:
- Encoded message data
-
encodeChunkSize
Encodes ChunkSize event to byte buffer.- Specified by:
encodeChunkSizein interfaceIEventEncoder- Parameters:
chunkSize- ChunkSize event- Returns:
- Byte buffer
-
encodeNotify
Encodes Notify event to byte buffer.- Specified by:
encodeNotifyin interfaceIEventEncoder- Parameters:
notify- Notify event- Returns:
- Byte buffer
-
encodeInvoke
Encodes Invoke event to byte buffer.- Specified by:
encodeInvokein interfaceIEventEncoder- Parameters:
invoke- Invoke event- Returns:
- Byte buffer
-
encodeCommand
Encode notification event.- Parameters:
invoke- Notification event- Returns:
- Encoded event data
-
encodeCommand
Encode command event and fill given byte buffer.- Parameters:
out- Buffer to fillcommand- Command event
-
encodePing
Encodes Ping event to byte buffer.- Specified by:
encodePingin interfaceIEventEncoder- Parameters:
ping- Ping event- Returns:
- Byte buffer
-
encodeBytesRead
Encodes BytesRead event to byte buffer.- Specified by:
encodeBytesReadin interfaceIEventEncoder- Parameters:
bytesRead- BytesRead event- Returns:
- Byte buffer
-
encodeAggregate
Encodes Aggregate event to byte buffer.- Specified by:
encodeAggregatein interfaceIEventEncoder- Parameters:
aggregate- Aggregate event- Returns:
- Byte buffer
-
encodeAudioData
Encodes AudioData event to byte buffer.- Specified by:
encodeAudioDatain interfaceIEventEncoder- Parameters:
audioData- AudioData event- Returns:
- Byte buffer
-
encodeVideoData
Encodes VideoData event to byte buffer.- Specified by:
encodeVideoDatain interfaceIEventEncoder- Parameters:
videoData- VideoData event- Returns:
- Byte buffer
-
encodeUnknown
Encodes Unknown event to byte buffer.- Specified by:
encodeUnknownin interfaceIEventEncoder- Parameters:
unknown- Unknown event- Returns:
- Byte buffer
-
encodeStreamMetadata
-
generateErrorResult
Generate error object to return for given exception.- Parameters:
code- callerror- error- Returns:
- status object
-
encodeFlexMessage
Encodes Flex message event.- Parameters:
msg- Flex message event- Returns:
- Encoded data
-
encodeFlexStreamSend
-
setBaseTolerance
public void setBaseTolerance(long baseTolerance) -
setDropLiveFuture
public void setDropLiveFuture(boolean dropLiveFuture) Setter for dropLiveFuture- Parameters:
dropLiveFuture- drop live data with future times
-
setDropEncoded
public void setDropEncoded(boolean dropEncoded) -
getBaseTolerance
public long getBaseTolerance()
-