| package com.googlecode.mp4parser.boxes; |
| |
| import com.coremedia.iso.IsoTypeReader; |
| import com.coremedia.iso.IsoTypeWriter; |
| import com.googlecode.mp4parser.AbstractFullBox; |
| |
| import java.nio.ByteBuffer; |
| import java.nio.ByteOrder; |
| import java.util.Arrays; |
| import java.util.UUID; |
| |
| /** |
| * |
| */ |
| public abstract class AbstractTrackEncryptionBox extends AbstractFullBox { |
| int defaultAlgorithmId; |
| int defaultIvSize; |
| byte[] default_KID; |
| |
| protected AbstractTrackEncryptionBox(String type) { |
| super(type); |
| } |
| |
| public int getDefaultAlgorithmId() { |
| return defaultAlgorithmId; |
| } |
| |
| public void setDefaultAlgorithmId(int defaultAlgorithmId) { |
| this.defaultAlgorithmId = defaultAlgorithmId; |
| } |
| |
| public int getDefaultIvSize() { |
| return defaultIvSize; |
| } |
| |
| public void setDefaultIvSize(int defaultIvSize) { |
| this.defaultIvSize = defaultIvSize; |
| } |
| |
| public String getDefault_KID() { |
| ByteBuffer b = ByteBuffer.wrap(default_KID); |
| b.order(ByteOrder.BIG_ENDIAN); |
| return new UUID(b.getLong(), b.getLong()).toString(); |
| } |
| |
| public void setDefault_KID(byte[] default_KID) { |
| this.default_KID = default_KID; |
| } |
| |
| @Override |
| public void _parseDetails(ByteBuffer content) { |
| parseVersionAndFlags(content); |
| defaultAlgorithmId = IsoTypeReader.readUInt24(content); |
| defaultIvSize = IsoTypeReader.readUInt8(content); |
| default_KID = new byte[16]; |
| content.get(default_KID); |
| } |
| |
| @Override |
| protected void getContent(ByteBuffer byteBuffer) { |
| writeVersionAndFlags(byteBuffer); |
| IsoTypeWriter.writeUInt24(byteBuffer, defaultAlgorithmId); |
| IsoTypeWriter.writeUInt8(byteBuffer, defaultIvSize); |
| byteBuffer.put(default_KID); |
| } |
| |
| @Override |
| protected long getContentSize() { |
| return 24; |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (this == o) return true; |
| if (o == null || getClass() != o.getClass()) return false; |
| |
| AbstractTrackEncryptionBox that = (AbstractTrackEncryptionBox) o; |
| |
| if (defaultAlgorithmId != that.defaultAlgorithmId) return false; |
| if (defaultIvSize != that.defaultIvSize) return false; |
| if (!Arrays.equals(default_KID, that.default_KID)) return false; |
| |
| return true; |
| } |
| |
| @Override |
| public int hashCode() { |
| int result = defaultAlgorithmId; |
| result = 31 * result + defaultIvSize; |
| result = 31 * result + (default_KID != null ? Arrays.hashCode(default_KID) : 0); |
| return result; |
| } |
| } |