/*
* myLib - https://github.com/taktod/myLib
* Copyright (c) 2014 ttProject. All rights reserved.
*
* Licensed under The MIT license.
*/
package com.ttProject.media.mp4.atom;
import java.nio.ByteBuffer;
import com.ttProject.util.BufferUtil;
import com.ttProject.util.IntUtil;
import com.ttProject.media.mp4.Atom;
import com.ttProject.media.mp4.IAtomAnalyzer;
import com.ttProject.nio.channels.IReadChannel;
public class Ftyp extends Atom {
private int majorBrand = -1;
private int minorVersion = -1;
private int[] compatibleBrands;
public Ftyp(int position, int size) {
super(Ftyp.class.getSimpleName().toLowerCase(), position, size);
int counter = (size - 16) / 4;
compatibleBrands = new int[counter];
}
@Override
public void analyze(IReadChannel ch, IAtomAnalyzer analyzer) throws Exception {
int size = getSize() - 8;
ch.position(getPosition() + 8);
ByteBuffer data = BufferUtil.safeRead(ch, size);
majorBrand = data.getInt();
minorVersion = data.getInt();
for(int i = 0;i < compatibleBrands.length;i ++) {
compatibleBrands[i] = data.getInt();
}
}
@Override
public String toString() {
StringBuilder data = new StringBuilder();
data.append("ftyp");
if(majorBrand != -1) {
data.append("[majorBrand:").append(IntUtil.makeHexString(majorBrand)).append("]");
data.append("[minorVersion:").append(minorVersion).append("]");
data.append("[compatibleBrand:");
for(int i = 0;i < compatibleBrands.length; i ++) {
data.append(IntUtil.makeHexString(compatibleBrands[i]));
if(i != compatibleBrands.length - 1) {
data.append(" ");
}
}
}
data.append("]");
return data.toString();
}
}