org.red5.server.stream
Class VideoFrameDropper

java.lang.Object
  extended by org.red5.server.stream.VideoFrameDropper
All Implemented Interfaces:
IFrameDropper

public class VideoFrameDropper
extends Object
implements IFrameDropper

State machine for video frame dropping in live streams.

We start sending all frame types. Disposable interframes can be dropped any time without affecting the current state. If a regular interframe is dropped, all future frames up to the next keyframes are dropped as well. Dropped keyframes result in only keyframes being sent. If two consecutive keyframes have been successfully sent, regular interframes will be sent in the next iteration as well. If these frames all went through, disposable interframes are sent again.

So from highest to lowest bandwidth and back, the states go as follows:

Author:
The Red5 Project ([email protected]), Joachim Bauch ([email protected])

Field Summary
protected static Logger log
           
 
Fields inherited from interface org.red5.server.stream.IFrameDropper
SEND_ALL, SEND_INTERFRAMES, SEND_KEYFRAMES, SEND_KEYFRAMES_CHECK
 
Constructor Summary
VideoFrameDropper()
          Constructs a new VideoFrameDropper.
 
Method Summary
 boolean canSendPacket(RTMPMessage message, long pending)
          Checks if a message may be sent to the subscriber.
 void dropPacket(RTMPMessage message)
          Notify that a packet has been dropped.
 void reset()
          Reset the frame dropper.
 void reset(int state)
          Reset the frame dropper to a given state.
 void sendPacket(RTMPMessage message)
          Notify that a message has been sent.
 
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
Constructor Detail

VideoFrameDropper

public VideoFrameDropper()
Constructs a new VideoFrameDropper.

Method Detail

reset

public void reset()
Reset the frame dropper.

Specified by:
reset in interface IFrameDropper

reset

public void reset(int state)
Reset the frame dropper to a given state.

Specified by:
reset in interface IFrameDropper
Parameters:
state - the state to reset the frame dropper to

canSendPacket

public boolean canSendPacket(RTMPMessage message,
                             long pending)
Checks if a message may be sent to the subscriber.

Specified by:
canSendPacket in interface IFrameDropper
Parameters:
message - the message to check
pending - the number of pending messages
Returns:
true if the packet may be sent, otherwise false

dropPacket

public void dropPacket(RTMPMessage message)
Notify that a packet has been dropped.

Specified by:
dropPacket in interface IFrameDropper
Parameters:
message - the message that was dropped

sendPacket

public void sendPacket(RTMPMessage message)
Notify that a message has been sent.

Specified by:
sendPacket in interface IFrameDropper
Parameters:
message - the message that was sent


Copyright © 2006-2012 The Red5 Project