org.mp4parser.boxes.microsoft.ProtectionSpecificHeader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of isoparser Show documentation
Show all versions of isoparser Show documentation
A generic parser and writer for all ISO 14496 based files (MP4, Quicktime, DCF, PDCF, ...)
package org.mp4parser.boxes.microsoft;
import org.mp4parser.boxes.microsoft.contentprotection.GenericHeader;
import org.mp4parser.tools.Hex;
import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public abstract class ProtectionSpecificHeader {
protected static Map> uuidRegistry = new HashMap>();
public static ProtectionSpecificHeader createFor(UUID systemId, ByteBuffer bufferWrapper) {
final Class extends ProtectionSpecificHeader> aClass = uuidRegistry.get(systemId);
ProtectionSpecificHeader protectionSpecificHeader = null;
if (aClass != null) {
try {
protectionSpecificHeader = aClass.newInstance();
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
if (protectionSpecificHeader == null) {
protectionSpecificHeader = new GenericHeader();
}
protectionSpecificHeader.parse(bufferWrapper);
return protectionSpecificHeader;
}
public abstract UUID getSystemId();
@Override
public boolean equals(Object obj) {
throw new RuntimeException("somebody called equals on me but that's not supposed to happen.");
}
public abstract void parse(ByteBuffer byteBuffer);
public abstract ByteBuffer getData();
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("ProtectionSpecificHeader");
sb.append("{data=");
ByteBuffer data = getData().duplicate();
data.rewind();
byte[] bytes = new byte[data.limit()];
data.get(bytes);
sb.append(Hex.encodeHex(bytes));
sb.append('}');
return sb.toString();
}
}