org.jaudiotagger.audio.mp4
Class Mp4AtomTree

java.lang.Object
  extended by org.jaudiotagger.audio.mp4.Mp4AtomTree

public class Mp4AtomTree
extends java.lang.Object

Tree representing atoms in the mp4 file

Note it doesn't create the complete tree it delves into subtrees for atom we know about and are interested in. (Note it would be impossible to create a complete tree for any file without understanding all the nodes because some atoms such as meta contain data and children and therefore need to be specially preprocessed)

This class is currently only used when writing tags because it better handles the difficulties of mdat and free atoms being optional/multiple places then the older sequential method. It is expected this class will eventually be used when reading tags as well.

Uses a TreeModel for the tree, with convenience methods holding onto references to most common nodes so they can be used without having to traverse the tree again.


Field Summary
private  DefaultTreeModel dataTree
           
private  java.util.List<DefaultMutableTreeNode> freeNodes
           
private  DefaultMutableTreeNode hdlrWithinMdiaNode
           
private  DefaultMutableTreeNode hdlrWithinMetaNode
           
private  DefaultMutableTreeNode ilstNode
           
static java.util.logging.Logger logger
           
private  DefaultMutableTreeNode mdatNode
           
private  java.util.List<DefaultMutableTreeNode> mdatNodes
           
private  DefaultMutableTreeNode metaNode
           
private  java.nio.ByteBuffer moovBuffer
           
private  Mp4BoxHeader moovHeader
           
private  DefaultMutableTreeNode moovNode
           
private  DefaultMutableTreeNode rootNode
           
private  Mp4StcoBox stco
           
private  DefaultMutableTreeNode stcoNode
           
private  DefaultMutableTreeNode tagsNode
           
private  java.util.List<DefaultMutableTreeNode> trakNodes
           
private  DefaultMutableTreeNode udtaNode
           
 
Constructor Summary
Mp4AtomTree(java.io.RandomAccessFile raf)
          Create Atom Tree
Mp4AtomTree(java.io.RandomAccessFile raf, boolean closeOnExit)
          Create Atom Tree and maintain open channel to raf, should only be used if will continue to use raf after this call, you will have to close raf yourself.
 
Method Summary
 void buildChildrenOfNode(java.nio.ByteBuffer moovBuffer, DefaultMutableTreeNode parentNode)
           
 DefaultTreeModel buildTree(java.io.RandomAccessFile raf, boolean closeExit)
          Build a tree of the atoms in the file
 Mp4BoxHeader getBoxHeader(DefaultMutableTreeNode node)
           
 DefaultTreeModel getDataTree()
           
 java.util.List<DefaultMutableTreeNode> getFreeNodes()
           
 DefaultMutableTreeNode getHdlrWithinMdiaNode()
           
 DefaultMutableTreeNode getHdlrWithinMetaNode()
           
 DefaultMutableTreeNode getIlstNode()
           
 DefaultMutableTreeNode getMdatNode()
           
 DefaultMutableTreeNode getMetaNode()
           
 java.nio.ByteBuffer getMoovBuffer()
           
 Mp4BoxHeader getMoovHeader()
           
 DefaultMutableTreeNode getMoovNode()
           
 Mp4StcoBox getStco()
           
 DefaultMutableTreeNode getStcoNode()
           
 DefaultMutableTreeNode getTagsNode()
           
 java.util.List<DefaultMutableTreeNode> getTrakNodes()
           
 DefaultMutableTreeNode getUdtaNode()
           
 void printAtomTree()
          Display atom tree
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rootNode

private DefaultMutableTreeNode rootNode

dataTree

private DefaultTreeModel dataTree

moovNode

private DefaultMutableTreeNode moovNode

mdatNode

private DefaultMutableTreeNode mdatNode

stcoNode

private DefaultMutableTreeNode stcoNode

ilstNode

private DefaultMutableTreeNode ilstNode

metaNode

private DefaultMutableTreeNode metaNode

tagsNode

private DefaultMutableTreeNode tagsNode

udtaNode

private DefaultMutableTreeNode udtaNode

hdlrWithinMdiaNode

private DefaultMutableTreeNode hdlrWithinMdiaNode

hdlrWithinMetaNode

private DefaultMutableTreeNode hdlrWithinMetaNode

freeNodes

private java.util.List<DefaultMutableTreeNode> freeNodes

mdatNodes

private java.util.List<DefaultMutableTreeNode> mdatNodes

trakNodes

private java.util.List<DefaultMutableTreeNode> trakNodes

stco

private Mp4StcoBox stco

moovBuffer

private java.nio.ByteBuffer moovBuffer

moovHeader

private Mp4BoxHeader moovHeader

logger

public static java.util.logging.Logger logger
Constructor Detail

Mp4AtomTree

public Mp4AtomTree(java.io.RandomAccessFile raf)
            throws java.io.IOException,
                   CannotReadException
Create Atom Tree

Parameters:
raf -
Throws:
java.io.IOException
CannotReadException

Mp4AtomTree

public Mp4AtomTree(java.io.RandomAccessFile raf,
                   boolean closeOnExit)
            throws java.io.IOException,
                   CannotReadException
Create Atom Tree and maintain open channel to raf, should only be used if will continue to use raf after this call, you will have to close raf yourself.

Parameters:
raf -
closeOnExit - to keep randomfileaccess open, only used when randomaccessfile already being used
Throws:
java.io.IOException
CannotReadException
Method Detail

buildTree

public DefaultTreeModel buildTree(java.io.RandomAccessFile raf,
                                  boolean closeExit)
                           throws java.io.IOException,
                                  CannotReadException
Build a tree of the atoms in the file

Parameters:
raf -
closeExit - false to keep randomfileacces open, only used when randomaccessfile already being used
Returns:
Throws:
java.io.IOException
CannotReadException

printAtomTree

public void printAtomTree()
Display atom tree


buildChildrenOfNode

public void buildChildrenOfNode(java.nio.ByteBuffer moovBuffer,
                                DefaultMutableTreeNode parentNode)
                         throws java.io.IOException,
                                CannotReadException
Parameters:
moovBuffer -
parentNode -
Throws:
java.io.IOException
CannotReadException

getDataTree

public DefaultTreeModel getDataTree()
Returns:

getMoovNode

public DefaultMutableTreeNode getMoovNode()
Returns:

getStcoNode

public DefaultMutableTreeNode getStcoNode()
Returns:

getIlstNode

public DefaultMutableTreeNode getIlstNode()
Returns:

getBoxHeader

public Mp4BoxHeader getBoxHeader(DefaultMutableTreeNode node)
Parameters:
node -
Returns:

getMdatNode

public DefaultMutableTreeNode getMdatNode()
Returns:

getUdtaNode

public DefaultMutableTreeNode getUdtaNode()
Returns:

getMetaNode

public DefaultMutableTreeNode getMetaNode()
Returns:

getHdlrWithinMetaNode

public DefaultMutableTreeNode getHdlrWithinMetaNode()
Returns:

getHdlrWithinMdiaNode

public DefaultMutableTreeNode getHdlrWithinMdiaNode()
Returns:

getTagsNode

public DefaultMutableTreeNode getTagsNode()
Returns:

getFreeNodes

public java.util.List<DefaultMutableTreeNode> getFreeNodes()
Returns:

getTrakNodes

public java.util.List<DefaultMutableTreeNode> getTrakNodes()
Returns:

getStco

public Mp4StcoBox getStco()
Returns:

getMoovBuffer

public java.nio.ByteBuffer getMoovBuffer()
Returns:

getMoovHeader

public Mp4BoxHeader getMoovHeader()
Returns:


Copyright © 2005-2010 java.net. All Rights Reserved.