Package org.red5.codec
Class AVCVideo
- java.lang.Object
-
- org.red5.codec.AbstractVideo
-
- org.red5.codec.AVCVideo
-
- All Implemented Interfaces:
IVideoStreamCodec,IoConstants
public class AVCVideo extends AbstractVideo
Red5 video codec for the AVC (h264) video format. Stores DecoderConfigurationRecord and last keyframe.- Author:
- Tiago Jacobs (tiago@imdt.com.br), Paul Gregoire (mondain@gmail.com)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.red5.codec.IVideoStreamCodec
IVideoStreamCodec.FrameData
-
-
Field Summary
-
Fields inherited from class org.red5.codec.AbstractVideo
keyframes, keyframeTimestamp
-
Fields inherited from interface org.red5.io.IoConstants
AVC_PACKET_TYPE_END_OF_SEQUENCE, AVC_PACKET_TYPE_NALU, AVC_PACKET_TYPE_SEQUENCE_HEADER, FLAG_CODEC_H263, FLAG_CODEC_SCREEN, FLAG_CODEC_VP6, FLAG_FORMAT_ADPCM, FLAG_FORMAT_MP3, FLAG_FORMAT_NELLYMOSER, FLAG_FORMAT_NELLYMOSER_8_KHZ, FLAG_FORMAT_RAW, FLAG_FRAMETYPE_DISPOSABLE, FLAG_FRAMETYPE_GENERATED_KEYFRAME, FLAG_FRAMETYPE_INFO, FLAG_FRAMETYPE_INTERFRAME, FLAG_FRAMETYPE_KEYFRAME, FLAG_RATE_11_KHZ, FLAG_RATE_22_KHZ, FLAG_RATE_44_KHZ, FLAG_RATE_48_KHZ, FLAG_RATE_5_5_KHZ, FLAG_SIZE_16_BIT, FLAG_SIZE_8_BIT, FLAG_TYPE_MONO, FLAG_TYPE_STEREO, INFO_PACKET_SEEK_END, INFO_PACKET_SEEK_START, MASK_SOUND_FORMAT, MASK_SOUND_RATE, MASK_SOUND_SIZE, MASK_SOUND_TYPE, MASK_VIDEO_CODEC, MASK_VIDEO_FRAMETYPE, TYPE_AUDIO, TYPE_ENCRYPTED, TYPE_ENCRYPTED_AUDIO, TYPE_ENCRYPTED_METADATA, TYPE_ENCRYPTED_VIDEO, TYPE_METADATA, TYPE_VIDEO
-
Fields inherited from interface org.red5.codec.IVideoStreamCodec
FLV_FRAME_KEY
-
-
Constructor Summary
Constructors Constructor Description AVCVideo()Constructs a new AVCVideo.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddData(org.apache.mina.core.buffer.IoBuffer data)Update the state of the codec with the passed data.booleanaddData(org.apache.mina.core.buffer.IoBuffer data, int timestamp)Update the state of the codec with the passed data.booleancanDropFrames()Check if the codec supports frame dropping.booleancanHandleData(org.apache.mina.core.buffer.IoBuffer data)Returns true if the codec knows how to handle the passed stream data.org.apache.mina.core.buffer.IoBuffergetDecoderConfiguration()Returns information used to configure the decoder.IVideoStreamCodec.FrameDatagetInterframe(int index)Gets data of interframe with the specified index.StringgetName()intgetNumInterframes()Returns the number of interframes collected from last keyframe.booleanisBufferInterframes()voidreset()Reset the codec to its initial state.voidsetBufferInterframes(boolean bufferInterframes)-
Methods inherited from class org.red5.codec.AbstractVideo
getKeyframe, getKeyframes
-
-
-
-
Method Detail
-
getName
public String getName()
- Specified by:
getNamein interfaceIVideoStreamCodec- Overrides:
getNamein classAbstractVideo- Returns:
- the name of the video codec.
-
canDropFrames
public boolean canDropFrames()
Check if the codec supports frame dropping.- Specified by:
canDropFramesin interfaceIVideoStreamCodec- Overrides:
canDropFramesin classAbstractVideo- Returns:
- if the codec supports frame dropping.
-
reset
public void reset()
Reset the codec to its initial state.- Specified by:
resetin interfaceIVideoStreamCodec- Overrides:
resetin classAbstractVideo
-
canHandleData
public boolean canHandleData(org.apache.mina.core.buffer.IoBuffer data)
Returns true if the codec knows how to handle the passed stream data.- Specified by:
canHandleDatain interfaceIVideoStreamCodec- Overrides:
canHandleDatain classAbstractVideo- Parameters:
data- some sample data to see if this codec can handle it- Returns:
- can this code handle the data.
-
addData
public boolean addData(org.apache.mina.core.buffer.IoBuffer data)
Update the state of the codec with the passed data.- Specified by:
addDatain interfaceIVideoStreamCodec- Overrides:
addDatain classAbstractVideo- Parameters:
data- data to tell the codec we're adding- Returns:
- true for success. false for error
-
addData
public boolean addData(org.apache.mina.core.buffer.IoBuffer data, int timestamp)Update the state of the codec with the passed data.- Specified by:
addDatain interfaceIVideoStreamCodec- Overrides:
addDatain classAbstractVideo- Parameters:
data- data to tell the codec we're addingtimestamp- time associated with the data- Returns:
- true for success. false for error
-
getDecoderConfiguration
public org.apache.mina.core.buffer.IoBuffer getDecoderConfiguration()
Returns information used to configure the decoder.- Specified by:
getDecoderConfigurationin interfaceIVideoStreamCodec- Overrides:
getDecoderConfigurationin classAbstractVideo- Returns:
- the data for decoder setup
-
getNumInterframes
public int getNumInterframes()
Returns the number of interframes collected from last keyframe.- Specified by:
getNumInterframesin interfaceIVideoStreamCodec- Overrides:
getNumInterframesin classAbstractVideo- Returns:
- number of interframes
-
getInterframe
public IVideoStreamCodec.FrameData getInterframe(int index)
Gets data of interframe with the specified index.- Specified by:
getInterframein interfaceIVideoStreamCodec- Overrides:
getInterframein classAbstractVideo- Parameters:
index- of interframe- Returns:
- data of the interframe or null if index is not valid
-
isBufferInterframes
public boolean isBufferInterframes()
-
setBufferInterframes
public void setBufferInterframes(boolean bufferInterframes)
-
-