org.red5.io.m4a.impl
Class M4AReader

java.lang.Object
  extended by org.red5.io.m4a.impl.M4AReader
All Implemented Interfaces:
IoConstants, ITagReader

public class M4AReader
extends Object
implements IoConstants, ITagReader

A Reader is used to read the contents of a M4A file. NOTE: This class is not implemented as threading-safe. The caller should make sure the threading-safety.

Author:
The Red5 Project ([email protected]), Paul Gregoire, ([email protected])

Field Summary
 
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
 
Constructor Summary
M4AReader(File f)
          Creates M4A reader from file input stream, sets up metadata generation flag.
M4AReader(IoBuffer buffer)
          Accepts mapped file bytes to construct internal members.
 
Method Summary
 void analyzeFrames()
          Performs frame analysis and generates metadata for use in seeking.
 void close()
          Closes the reader and free any allocated memory.
 void decodeHeader()
          This handles the moov atom being at the beginning or end of the file, so the mdat may also be before or after the moov atom.
 String getAudioCodecId()
           
 long getBytesRead()
          Returns the amount of bytes read
 long getDuration()
          Return length in seconds
 IStreamableFile getFile()
          Return the file that is loaded.
 IoBuffer getFileData()
          Returns the file buffer.
 int getOffset()
          Returns the offet length
 long getTotalBytes()
          Get the total readable bytes in a file or ByteBuffer
 boolean hasMoreTags()
          Returns a boolean stating whether the FLV has more tags
 boolean hasVideo()
          Check if the reader also has video tags.
 void position(long pos)
          Put the current position to pos.
 ITag readTag()
          Packages media data for return to providers.
 ITag readTagHeader()
           
 void setAudioCodecId(String audioCodecId)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

M4AReader

public M4AReader(File f)
          throws IOException
Creates M4A reader from file input stream, sets up metadata generation flag.

Parameters:
f - File input stream
Throws:
IOException

M4AReader

public M4AReader(IoBuffer buffer)
          throws IOException
Accepts mapped file bytes to construct internal members.

Parameters:
buffer - Byte buffer
Throws:
IOException
Method Detail

decodeHeader

public void decodeHeader()
This handles the moov atom being at the beginning or end of the file, so the mdat may also be before or after the moov atom.

Specified by:
decodeHeader in interface ITagReader

getTotalBytes

public long getTotalBytes()
Description copied from interface: ITagReader
Get the total readable bytes in a file or ByteBuffer

Specified by:
getTotalBytes in interface ITagReader
Returns:
Total readable bytes

hasVideo

public boolean hasVideo()
Check if the reader also has video tags.

Specified by:
hasVideo in interface ITagReader
Returns:
has video

getFileData

public IoBuffer getFileData()
Returns the file buffer.

Returns:
File contents as byte buffer

getFile

public IStreamableFile getFile()
Return the file that is loaded.

Specified by:
getFile in interface ITagReader
Returns:
the file to be loaded

getOffset

public int getOffset()
Returns the offet length

Specified by:
getOffset in interface ITagReader
Returns:
int

getBytesRead

public long getBytesRead()
Returns the amount of bytes read

Specified by:
getBytesRead in interface ITagReader
Returns:
long

getDuration

public long getDuration()
Return length in seconds

Specified by:
getDuration in interface ITagReader
Returns:
length in seconds

getAudioCodecId

public String getAudioCodecId()

hasMoreTags

public boolean hasMoreTags()
Returns a boolean stating whether the FLV has more tags

Specified by:
hasMoreTags in interface ITagReader
Returns:
boolean

readTag

public ITag readTag()
Packages media data for return to providers.

Specified by:
readTag in interface ITagReader
Returns:
Tag

analyzeFrames

public void analyzeFrames()
Performs frame analysis and generates metadata for use in seeking. All the frames are analyzed and sorted together based on time and offset.


position

public void position(long pos)
Put the current position to pos. The caller must ensure the pos is a valid one.

Specified by:
position in interface ITagReader
Parameters:
pos - position to move to in file / channel

close

public void close()
Closes the reader and free any allocated memory.

Specified by:
close in interface ITagReader

setAudioCodecId

public void setAudioCodecId(String audioCodecId)

readTagHeader

public ITag readTagHeader()


Copyright © 2006-2012 The Red5 Project