| package com.googlecode.mp4parser.boxes.piff; |
| |
| |
| import com.coremedia.iso.Hex; |
| |
| import java.lang.Class; |
| import java.lang.IllegalAccessException; |
| import java.lang.InstantiationException; |
| import java.lang.Object; |
| import java.lang.Override; |
| import java.lang.RuntimeException; |
| import java.lang.String; |
| import java.lang.StringBuilder; |
| import java.nio.ByteBuffer; |
| import java.util.HashMap; |
| import java.util.Map; |
| import java.util.UUID; |
| |
| |
| public class ProtectionSpecificHeader { |
| protected static Map<UUID, Class<? extends ProtectionSpecificHeader>> uuidRegistry = new HashMap<UUID, Class<? extends ProtectionSpecificHeader>>(); |
| ByteBuffer data; |
| |
| static { |
| uuidRegistry.put(UUID.fromString("9A04F079-9840-4286-AB92-E65BE0885F95"), PlayReadyHeader.class); |
| } |
| |
| @Override |
| public boolean equals(Object obj) { |
| if (obj instanceof ProtectionSpecificHeader) { |
| if (this.getClass().equals(obj.getClass())) { |
| return data.equals(((ProtectionSpecificHeader) obj).data); |
| } |
| } |
| return false; |
| } |
| |
| public static ProtectionSpecificHeader createFor(UUID systemId, ByteBuffer bufferWrapper) { |
| final Class<? extends ProtectionSpecificHeader> aClass = uuidRegistry.get(systemId); |
| |
| ProtectionSpecificHeader protectionSpecificHeader = new ProtectionSpecificHeader(); |
| if (aClass != null) { |
| try { |
| protectionSpecificHeader = aClass.newInstance(); |
| |
| } catch (InstantiationException e) { |
| throw new RuntimeException(e); |
| } catch (IllegalAccessException e) { |
| throw new RuntimeException(e); |
| } |
| } |
| protectionSpecificHeader.parse(bufferWrapper); |
| return protectionSpecificHeader; |
| |
| } |
| |
| public void parse(ByteBuffer buffer) { |
| data = buffer; |
| |
| } |
| |
| public ByteBuffer getData() { |
| return data; |
| } |
| |
| @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(); |
| } |
| } |