Package org.red5.codec
Class AbstractVideo
- java.lang.Object
-
- org.red5.codec.AbstractVideo
-
- All Implemented Interfaces:
IVideoStreamCodec,IoConstants
- Direct Known Subclasses:
AVCVideo,ScreenVideo,ScreenVideo2,SorensonVideo
public class AbstractVideo extends Object implements IVideoStreamCodec, IoConstants
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.red5.codec.IVideoStreamCodec
IVideoStreamCodec.FrameData
-
-
Field Summary
Fields Modifier and Type Field Description protected CopyOnWriteArrayList<IVideoStreamCodec.FrameData>keyframesStorage for key framesprotected intkeyframeTimestampCurrent timestamp for the stored keyframe-
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 AbstractVideo()
-
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 idx)Gets data of interframe with the specified index.org.apache.mina.core.buffer.IoBuffergetKeyframe()Returns keyframe data.IVideoStreamCodec.FrameData[]getKeyframes()Returns all the keyframe data.StringgetName()intgetNumInterframes()Returns the number of interframes collected from last keyframe.voidreset()Reset the codec to its initial state.
-
-
-
Field Detail
-
keyframeTimestamp
protected int keyframeTimestamp
Current timestamp for the stored keyframe
-
keyframes
protected final CopyOnWriteArrayList<IVideoStreamCodec.FrameData> keyframes
Storage for key frames
-
-
Method Detail
-
getName
public String getName()
- Specified by:
getNamein interfaceIVideoStreamCodec- Returns:
- the name of the video codec.
-
reset
public void reset()
Description copied from interface:IVideoStreamCodecReset the codec to its initial state.- Specified by:
resetin interfaceIVideoStreamCodec
-
canDropFrames
public boolean canDropFrames()
Description copied from interface:IVideoStreamCodecCheck if the codec supports frame dropping.- Specified by:
canDropFramesin interfaceIVideoStreamCodec- Returns:
- if the codec supports frame dropping.
-
canHandleData
public boolean canHandleData(org.apache.mina.core.buffer.IoBuffer data)
Description copied from interface:IVideoStreamCodecReturns true if the codec knows how to handle the passed stream data.- Specified by:
canHandleDatain interfaceIVideoStreamCodec- 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)
Description copied from interface:IVideoStreamCodecUpdate the state of the codec with the passed data.- Specified by:
addDatain interfaceIVideoStreamCodec- 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)Description copied from interface:IVideoStreamCodecUpdate the state of the codec with the passed data.- Specified by:
addDatain interfaceIVideoStreamCodec- 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()
Description copied from interface:IVideoStreamCodecReturns information used to configure the decoder.- Specified by:
getDecoderConfigurationin interfaceIVideoStreamCodec- Returns:
- the data for decoder setup
-
getKeyframe
public org.apache.mina.core.buffer.IoBuffer getKeyframe()
Returns keyframe data.- Specified by:
getKeyframein interfaceIVideoStreamCodec- Returns:
- the data for a keyframe
-
getKeyframes
public IVideoStreamCodec.FrameData[] getKeyframes()
Returns all the keyframe data.- Specified by:
getKeyframesin interfaceIVideoStreamCodec- Returns:
- array of keyframe data
-
getNumInterframes
public int getNumInterframes()
Description copied from interface:IVideoStreamCodecReturns the number of interframes collected from last keyframe.- Specified by:
getNumInterframesin interfaceIVideoStreamCodec- Returns:
- number of interframes
-
getInterframe
public IVideoStreamCodec.FrameData getInterframe(int idx)
Description copied from interface:IVideoStreamCodecGets data of interframe with the specified index.- Specified by:
getInterframein interfaceIVideoStreamCodec- Parameters:
idx- of interframe- Returns:
- data of the interframe or null if index is not valid
-
-