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

多媒体编程

开发平台:

Visual C++

  1. package com.axiosys.bento4;
  2. import java.io.IOException;
  3. import java.io.RandomAccessFile;
  4. public class VideoSampleEntry extends MpegSampleEntry {
  5.     private int    width;           
  6.     private int    height;
  7.     private int    horizontalResolution;
  8.     private int    verticalResolution;
  9.     private int    frameCount;
  10.     private int    depth;
  11.     private String compressorName;
  12.     
  13.     protected VideoSampleEntry(int format, int size, RandomAccessFile source, AtomFactory atomFactory) throws IOException, InvalidFormatException {
  14.         super(format, size, source, atomFactory);
  15.     }
  16.     int getWidth()                { return width;                }
  17.     int getHeight()               { return height;               }
  18.     int getHorizontalResolution() { return horizontalResolution; }
  19.     int getVerticalResolution()   { return verticalResolution;   }
  20.     int getFrameCount()           { return frameCount;           }
  21.     int getDepth()                { return depth;                }
  22.     String getCompressorName()    { return compressorName;       }
  23.     
  24.     protected void readFields(RandomAccessFile source) throws IOException {
  25.         super.readFields(source);
  26.         source.skipBytes(16);
  27.         width = source.readUnsignedShort();
  28.         height = source.readUnsignedShort();
  29.         horizontalResolution = source.readInt();
  30.         verticalResolution = source.readInt();
  31.         source.skipBytes(4);
  32.         frameCount = source.readUnsignedShort();
  33.         byte[] str = new byte[32];
  34.         source.readFully(str);
  35.         int str_size = 0;
  36.         while (str[str_size] != 0) str_size++;
  37.         compressorName = new String(str, 0, str_size);
  38.         depth = source.readUnsignedShort();
  39.         source.skipBytes(2);
  40.     }
  41.     
  42.     public String toString(String indentation) {
  43.         StringBuffer result = new StringBuffer();
  44.         result.append(indentation+"[" + typeString(type) + "] size=" + getHeaderSize() + "+" + getPayloadSize());
  45.         result.append("n" + indentation + "  width                 = " + width);
  46.         result.append("n" + indentation + "  height                = " + height);
  47.         result.append("n" + indentation + "  horizontal_resolution = " + horizontalResolution);
  48.         result.append("n" + indentation + "  vertical_resolution   = " + verticalResolution);
  49.         result.append("n" + indentation + "  frame_count           = " + frameCount);
  50.         result.append("n" + indentation + "  depth                 = " + depth);
  51.         result.append("n" + indentation + "  compressor_name       = " + compressorName);
  52.         for (int i=0; i<children.size(); i++) {
  53.             result.append("n");
  54.             result.append(((Atom)children.get(i)).toString(indentation+"  "));
  55.         }
  56.         
  57.         return result.toString();  
  58.     }
  59.     
  60.     public String toString() {
  61.         return toString("");
  62.     }
  63. }