## org.red5.io.m4a.impl
Class M4AReader

    java.lang.Object
      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 (red5@osflash.org), Paul Gregoire, (mondain@gmail.com)

Field Summary

Fields inherited from interface org.red5.io.IoConstants

`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_INTERFRAME, FLAG_FRAMETYPE_KEYFRAME, FLAG_RATE_11_KHZ, FLAG_RATE_22_KHZ, FLAG_RATE_44_KHZ, FLAG_RATE_5_5_KHZ, FLAG_SIZE_16_BIT, FLAG_SIZE_8_BIT, FLAG_TYPE_MONO, FLAG_TYPE_STEREO, MASK_SOUND_FORMAT, MASK_SOUND_RATE, MASK_SOUND_SIZE, MASK_SOUND_TYPE, MASK_VIDEO_CODEC, MASK_VIDEO_FRAMETYPE, TYPE_AUDIO, 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-2010 The Red5 Project