summaryrefslogtreecommitdiff
path: root/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AbstractAppleMetaDataBox.java.svn-base
diff options
context:
space:
mode:
Diffstat (limited to 'isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AbstractAppleMetaDataBox.java.svn-base')
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AbstractAppleMetaDataBox.java.svn-base164
1 files changed, 0 insertions, 164 deletions
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AbstractAppleMetaDataBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AbstractAppleMetaDataBox.java.svn-base
deleted file mode 100644
index fdb7ac9..0000000
--- a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AbstractAppleMetaDataBox.java.svn-base
+++ /dev/null
@@ -1,164 +0,0 @@
-package com.coremedia.iso.boxes.apple;
-
-import com.coremedia.iso.IsoTypeReader;
-import com.coremedia.iso.IsoTypeWriter;
-import com.coremedia.iso.Utf8;
-import com.googlecode.mp4parser.AbstractBox;
-import com.coremedia.iso.boxes.Box;
-import com.coremedia.iso.boxes.ContainerBox;
-import com.googlecode.mp4parser.util.ByteBufferByteChannel;
-
-import java.io.IOException;
-import java.math.BigInteger;
-import java.nio.ByteBuffer;
-import java.util.Collections;
-import java.util.List;
-import java.util.logging.Logger;
-
-/**
- *
- */
-public abstract class AbstractAppleMetaDataBox extends AbstractBox implements ContainerBox {
- private static Logger LOG = Logger.getLogger(AbstractAppleMetaDataBox.class.getName());
- AppleDataBox appleDataBox = new AppleDataBox();
-
- public List<Box> getBoxes() {
- return Collections.singletonList((Box) appleDataBox);
- }
-
- public void setBoxes(List<Box> boxes) {
- if (boxes.size() == 1 && boxes.get(0) instanceof AppleDataBox) {
- appleDataBox = (AppleDataBox) boxes.get(0);
- } else {
- throw new IllegalArgumentException("This box only accepts one AppleDataBox child");
- }
- }
-
- public <T extends Box> List<T> getBoxes(Class<T> clazz) {
- return getBoxes(clazz, false);
- }
-
- public <T extends Box> List<T> getBoxes(Class<T> clazz, boolean recursive) {
- //todo recursive?
- if (clazz.isAssignableFrom(appleDataBox.getClass())) {
- return (List<T>) Collections.singletonList(appleDataBox);
- }
- return null;
- }
-
- public AbstractAppleMetaDataBox(String type) {
- super(type);
- }
-
- @Override
- public void _parseDetails(ByteBuffer content) {
- long dataBoxSize = IsoTypeReader.readUInt32(content);
- String thisShouldBeData = IsoTypeReader.read4cc(content);
- assert "data".equals(thisShouldBeData);
- appleDataBox = new AppleDataBox();
- try {
- appleDataBox.parse(new ByteBufferByteChannel(content), null, content.remaining(), null);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- appleDataBox.setParent(this);
- }
-
-
- protected long getContentSize() {
- return appleDataBox.getSize();
- }
-
- protected void getContent(ByteBuffer byteBuffer) {
- try {
- appleDataBox.getBox(new ByteBufferByteChannel(byteBuffer));
- } catch (IOException e) {
- throw new RuntimeException("The Channel is based on a ByteBuffer and therefore it shouldn't throw any exception");
- }
- }
-
- public long getNumOfBytesToFirstChild() {
- return getSize() - appleDataBox.getSize();
- }
-
- @Override
- public String toString() {
- return this.getClass().getSimpleName() + "{" +
- "appleDataBox=" + getValue() +
- '}';
- }
-
- static long toLong(byte b) {
- return b < 0 ? b + 256 : b;
- }
-
- public void setValue(String value) {
- if (appleDataBox.getFlags() == 1) {
- appleDataBox = new AppleDataBox();
- appleDataBox.setVersion(0);
- appleDataBox.setFlags(1);
- appleDataBox.setFourBytes(new byte[4]);
- appleDataBox.setData(Utf8.convert(value));
- } else if (appleDataBox.getFlags() == 21) {
- byte[] content = appleDataBox.getData();
- appleDataBox = new AppleDataBox();
- appleDataBox.setVersion(0);
- appleDataBox.setFlags(21);
- appleDataBox.setFourBytes(new byte[4]);
-
- ByteBuffer bb = ByteBuffer.allocate(content.length);
- if (content.length == 1) {
- IsoTypeWriter.writeUInt8(bb, (Byte.parseByte(value) & 0xFF));
- } else if (content.length == 2) {
- IsoTypeWriter.writeUInt16(bb, Integer.parseInt(value));
- } else if (content.length == 4) {
- IsoTypeWriter.writeUInt32(bb, Long.parseLong(value));
- } else if (content.length == 8) {
- IsoTypeWriter.writeUInt64(bb, Long.parseLong(value));
- } else {
- throw new Error("The content length within the appleDataBox is neither 1, 2, 4 or 8. I can't handle that!");
- }
- appleDataBox.setData(bb.array());
- } else if (appleDataBox.getFlags() == 0) {
- appleDataBox = new AppleDataBox();
- appleDataBox.setVersion(0);
- appleDataBox.setFlags(0);
- appleDataBox.setFourBytes(new byte[4]);
- appleDataBox.setData(hexStringToByteArray(value));
-
- } else {
- LOG.warning("Don't know how to handle appleDataBox with flag=" + appleDataBox.getFlags());
- }
- }
-
- public String getValue() {
- if (appleDataBox.getFlags() == 1) {
- return Utf8.convert(appleDataBox.getData());
- } else if (appleDataBox.getFlags() == 21) {
- byte[] content = appleDataBox.getData();
- long l = 0;
- int current = 1;
- int length = content.length;
- for (byte b : content) {
- l += toLong(b) << (8 * (length - current++));
- }
- return "" + l;
- } else if (appleDataBox.getFlags() == 0) {
- return String.format("%x", new BigInteger(appleDataBox.getData()));
- } else {
- return "unknown";
- }
- }
-
- public static byte[] hexStringToByteArray(String s) {
- int len = s.length();
- byte[] data = new byte[len / 2];
- for (int i = 0; i < len; i += 2) {
- data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
- + Character.digit(s.charAt(i + 1), 16));
- }
- return data;
- }
-
-
-}