com.wowza.wms.amf
Class AMFPacket

Object
  extended by com.wowza.wms.amf.AMFPacket

public class AMFPacket
extends Object

AMFPacket: data container for data being transferred to and from the server from the Flash client. AMFPacket is also used to store data read/written to/from an flv file.


Constructor Summary
AMFPacket()
          Create new empty packet
AMFPacket(int type, int src, int size)
          Create new packet with given values
 
Method Summary
 int addData(byte[] data, int offset, int size)
          Add data to the packet
 int addDataEx(byte[] srcData, int srcOffset, int destOffset, int srcBytes)
          Add data to the packet
static int calcTotalPacketSize(int packetSize, int headerSize, int chunkSize, int amfNumber, boolean isLongTimecode)
          Calculate the total packet size for given packet parameters
 AMFPacket clone()
           
 long getAbsTimecode()
          Get absolute timecode (milliseconds)
 byte[] getData()
          Get data as byte[]
 java.nio.ByteBuffer getDataBuffer()
          Get data as ByteBuffer
 int getFirstByte()
          Get first byte of data (used to peek into packet)
 int getMissing()
          Get the number of bytes remaining unfilled in the packet
 int getSecondByte()
          Get second byte of data (used to peek into packet)
 long getSeq()
          Get packet sequence number.
 int getSize()
          Get packet size
 int getSrc()
          Get stream id (0 if not stream data)
 long getTimecode()
          Get timecode (milliseconds) relative
 int getType()
          Get content type IVHost.CONTENTTYPE_*
 boolean isAudio()
          Is this an audio packet IVHost.CONTENTTYPE_AUDIO
 boolean isVideo()
          Is this an audio packet IVHost.CONTENTTYPE_VIDEO
 void setAbsTimecode(long absTimecode)
          Set absolute timecode (milliseconds)
 void setDataBuffer(byte[] data)
          Set the data buffer to a byte array
 void setDataBuffer(java.nio.ByteBuffer data)
          Set the data for this packet
 void setSeq(long seq)
          Set packet sequence.
 void setSize(int size)
          Set packet size
 void setSrc(int src)
          Set stream id (0 if not stream data)
 void setTimecode(long timecode)
          Set timecode (milliseconds) relative
 void setTimecodes(long timecode, long absTimecode)
          Set both relative and absolute timecode in one call (milliseconds)
 void setType(int type)
          Set content type IVHost.CONTENTTYPE_*
 String toString()
          Return object as formatted string
 void truncatePacket(int newSize)
           
 
Methods inherited from class Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AMFPacket

public AMFPacket()
Create new empty packet


AMFPacket

public AMFPacket(int type,
                 int src,
                 int size)
Create new packet with given values

Parameters:
type - packet content type: IVHost.CONTENTTYPE_*
src - stream id
size - packet size (bytes)
Method Detail

addData

public int addData(byte[] data,
                   int offset,
                   int size)
Add data to the packet

Parameters:
data - byte buffer with data
offset - offset in byte buffer
size - size of data
Returns:
number of bytes unfilled in packet

addDataEx

public int addDataEx(byte[] srcData,
                     int srcOffset,
                     int destOffset,
                     int srcBytes)
Add data to the packet

Parameters:
srcData - - source byte buffer with data
srcOffset - - start copying from source buffer at this offset
destOffset - - copy into destination buffer from this offset
srcBytes - - size of data to copy
Returns:
number of bytes unfilled in packet

calcTotalPacketSize

public static int calcTotalPacketSize(int packetSize,
                                      int headerSize,
                                      int chunkSize,
                                      int amfNumber,
                                      boolean isLongTimecode)
Calculate the total packet size for given packet parameters

Parameters:
packetSize - data size
headerSize - header size
chunkSize - chunk size
amfNumber - amf number
isLongTimecode - is long timecode
Returns:
total bytes

clone

public AMFPacket clone()
Overrides:
clone in class Object

getAbsTimecode

public long getAbsTimecode()
Get absolute timecode (milliseconds)

Returns:
absolute timecode

getData

public byte[] getData()
Get data as byte[]

Returns:
data as byte[] null if no data

getDataBuffer

public java.nio.ByteBuffer getDataBuffer()
Get data as ByteBuffer

Returns:
data as ByteBuffer

getFirstByte

public int getFirstByte()
Get first byte of data (used to peek into packet)

Returns:
first byte of data in packet

getMissing

public int getMissing()
Get the number of bytes remaining unfilled in the packet

Returns:
number of bytes unfilled in packet

getSecondByte

public int getSecondByte()
Get second byte of data (used to peek into packet)

Returns:
second byte of data in packet

getSeq

public long getSeq()
Get packet sequence number. Used for live streams to keep track of packet ordering.

Returns:
packet sequence

getSize

public int getSize()
Get packet size

Returns:
packet size

getSrc

public int getSrc()
Get stream id (0 if not stream data)

Returns:
stream id

getTimecode

public long getTimecode()
Get timecode (milliseconds) relative

Returns:
timecode (milliseconds)

getType

public int getType()
Get content type IVHost.CONTENTTYPE_*

Returns:
content type

isAudio

public boolean isAudio()
Is this an audio packet IVHost.CONTENTTYPE_AUDIO

Returns:
true if audio packet

isVideo

public boolean isVideo()
Is this an audio packet IVHost.CONTENTTYPE_VIDEO

Returns:
true if video packet

setAbsTimecode

public void setAbsTimecode(long absTimecode)
Set absolute timecode (milliseconds)

Parameters:
absTimecode - absolute timecode

setDataBuffer

public void setDataBuffer(byte[] data)
Set the data buffer to a byte array

Parameters:
data - data buffer byte array

setDataBuffer

public void setDataBuffer(java.nio.ByteBuffer data)
Set the data for this packet

Parameters:
data - byte buffer that holds packet data

setSeq

public void setSeq(long seq)
Set packet sequence. Used for live streams to keep track of packet ordering.

Parameters:
seq - packet sequence

setSize

public void setSize(int size)
Set packet size

Parameters:
size - packet size

setSrc

public void setSrc(int src)
Set stream id (0 if not stream data)

Parameters:
src - stream id

setTimecode

public void setTimecode(long timecode)
Set timecode (milliseconds) relative

Parameters:
timecode - timecode (milliseconds)

setTimecodes

public void setTimecodes(long timecode,
                         long absTimecode)
Set both relative and absolute timecode in one call (milliseconds)

Parameters:
timecode - relative timecode (milliseconds)
absTimecode - absolute timecode (milliseconds)

setType

public void setType(int type)
Set content type IVHost.CONTENTTYPE_*

Parameters:
type - content type

toString

public String toString()
Return object as formatted string

Overrides:
toString in class Object

truncatePacket

public void truncatePacket(int newSize)