StsdAtom.java
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. package com.axiosys.bento4;
  2. import java.io.DataOutputStream;
  3. import java.io.IOException;
  4. import java.io.RandomAccessFile;
  5. import java.util.ArrayList;
  6. public class StsdAtom extends Atom implements AtomParent {
  7.     private ArrayList entries = new ArrayList();
  8.     public StsdAtom(int size, RandomAccessFile source, AtomFactory atomFactory) throws IOException, InvalidFormatException {
  9.         super(TYPE_STSD, size, true, source);
  10.         
  11.         // read the number of entries
  12.         int entryCount = source.readInt();
  13.         int[] bytesAvailable = new int[] { size-FULL_HEADER_SIZE-4 };
  14.         for (int i=0; i<entryCount; i++) {
  15.             Atom atom = atomFactory.createAtom(source, bytesAvailable);
  16.             if (atom != null) {
  17.                 entries.add(atom);
  18.             }
  19.         }
  20.     }    
  21.     
  22.     public void writeFields(DataOutputStream stream) throws IOException {
  23.         stream.writeInt(entries.size());
  24.         
  25.         for (int i=0; i<entries.size(); i++) {
  26.             Atom atom = (Atom)entries.get(i);
  27.             atom.write(stream);
  28.         }        
  29.     }
  30.     
  31.     public int getChildrenCount() {
  32.         return entries.size();
  33.     }
  34.     public Atom getChild(int index) {
  35.         return (Atom)entries.get(index);
  36.     }
  37.     public Atom getChild(int type, int index) {
  38.         return AtomUtils.findChild(entries, type, index);
  39.     }
  40.     public String toString(String indentation) {
  41.         StringBuffer result = new StringBuffer();
  42.         result.append(super.toString(indentation));
  43.         for (int i=0; i<entries.size(); i++) {
  44.             result.append("n");
  45.             result.append(((Atom)entries.get(i)).toString(indentation+"  "));
  46.         }
  47.         
  48.         return result.toString();  
  49.     }
  50.     
  51.     public String toString() {
  52.         return toString("");
  53.     }
  54. }