package mp4.util.atom; public class RdrfAtom extends LeafAtom { private final int ATOM_SIZE = 4; // atom size is always 4 bytes private final int ATOM_TYPE = 4; // atom type is always 4 bytes. private final int hdroffset = 8; private final int ATOM_FLAGS_START = 8;// atom flags size is 4 bytes. private final int ATOM_FLAGS_SZ = 4;// atom flags size is 4 bytes. private final int ATOM_FLAGS_END = 12;// atom flags size is 4 bytes. private final int ATOM_DATAREFERENCE_TYPE_START = 12; // according to qtff specs atom data reference type is 4 bytes. private final int ATOM_DATAREFERENCE_TYPE_SZ = 4; // according to qtff specs atom data reference type is 4 bytes. private final int ATOM_DATAREFERENCE_TYPE_END = 12 +4; // according to qtff specs atom data reference type is 4 bytes. private final int ATOM_DATAREFERENCE_SIZE_START = 16; // according to qtff specs atom data reference size is 4 bytes. private final int ATOM_DATAREFERENCE_SIZE_SZ = 4; // 32bit according to qtff specs atom data reference size is 4 bytes. private final int ATOM_DATAREFERENCE_SIZE_END = 16+4; // private int data_reference_value = 0; // it depends on the value mentioned in data reference size private long data_ref_size =0; public RdrfAtom() { super(new byte[]{'r','d','r','f'}); // TODO Auto-generated constructor stub } /** * Copy constructor. Performs a deep copy * @param old the version to copy */ public RdrfAtom(RdrfAtom old) { super(old); } @Override public void accept(AtomVisitor v) throws AtomException { // TODO Auto-generated method stub v.visit(this); } public String getAtomFlags() { String s = new String(data.getData(ATOM_FLAGS_START-hdroffset,ATOM_FLAGS_END-hdroffset)); System.out.println("getAtomFlags() ->s = "+s); return s; } public String getDataRefType() { String s = new String(data.getData(ATOM_DATAREFERENCE_TYPE_START-hdroffset,ATOM_DATAREFERENCE_TYPE_END-hdroffset)); System.out.println("getDataRefType() ->s = "+s); return s; } public String getDataRefSize() { data_ref_size = data.getUnsignedInt(ATOM_DATAREFERENCE_SIZE_START-hdroffset); String subbarao = ""+data_ref_size; return subbarao; /* String ret = new String(data.getData(ATOM_DATAREFERENCE_SIZE_START-hdroffset,ATOM_DATAREFERENCE_SIZE_END-hdroffset)); System.out.println("getDataRefSize()->ret = "+ret); data_ref_size = Long.parseLong(ret); return ret;*/ } public String getDataRef() { String s = new String(data.getData(ATOM_DATAREFERENCE_SIZE_END-hdroffset,ATOM_DATAREFERENCE_SIZE_END+(int)data_ref_size-hdroffset)); return s; } }