summaryrefslogtreecommitdiff
path: root/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base
diff options
context:
space:
mode:
Diffstat (limited to 'isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base')
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AbstractAppleMetaDataBox.java.svn-base164
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleAlbumArtistBox.java.svn-base16
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleAlbumBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleArtistBox.java.svn-base16
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCommentBox.java.svn-base16
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCompilationBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCopyrightBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCoverBox.java.svn-base44
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCustomGenreBox.java.svn-base28
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataBox.java.svn-base92
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataRateBox.java.svn-base53
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataReferenceBox.java.svn-base71
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDescriptionBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleEncoderBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGaplessPlaybackBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGenericBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGroupingBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleIdBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleItemListBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleLosslessSpecificBox.java.svn-base163
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleMeanBox.java.svn-base47
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleMediaTypeBox.java.svn-base39
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleNameBox.java.svn-base45
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleNetworkBox.java.svn-base16
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/ApplePurchaseDateBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleRatingBox.java.svn-base16
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleRecordingYearBox.java.svn-base16
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleReferenceMovieBox.java.svn-base28
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleReferenceMovieDescriptorBox.java.svn-base27
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleShowBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleSortAlbumBox.java.svn-base14
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStandardGenreBox.java.svn-base14
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStoreAccountTypeBox.java.svn-base27
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStoreCountryCodeBox.java.svn-base54
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleSynopsisBox.java.svn-base16
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTempBox.java.svn-base28
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackAuthorBox.java.svn-base16
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackNumberBox.java.svn-base48
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackTitleBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvEpisodeBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvEpisodeNumberBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvSeasonBox.java.svn-base15
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleWaveBox.java.svn-base16
43 files changed, 1370 insertions, 0 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
new file mode 100644
index 0000000..fdb7ac9
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AbstractAppleMetaDataBox.java.svn-base
@@ -0,0 +1,164 @@
+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;
+ }
+
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleAlbumArtistBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleAlbumArtistBox.java.svn-base
new file mode 100644
index 0000000..5c258b4
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleAlbumArtistBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * itunes MetaData comment box.
+ */
+public class AppleAlbumArtistBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "aART";
+
+
+ public AppleAlbumArtistBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleAlbumBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleAlbumBox.java.svn-base
new file mode 100644
index 0000000..9e3d5f7
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleAlbumBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleAlbumBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9alb";
+
+
+ public AppleAlbumBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleArtistBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleArtistBox.java.svn-base
new file mode 100644
index 0000000..627a603
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleArtistBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * iTunes Artist box.
+ */
+public final class AppleArtistBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9ART";
+
+
+ public AppleArtistBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCommentBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCommentBox.java.svn-base
new file mode 100644
index 0000000..b58899f
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCommentBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * itunes MetaData comment box.
+ */
+public final class AppleCommentBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9cmt";
+
+
+ public AppleCommentBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCompilationBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCompilationBox.java.svn-base
new file mode 100644
index 0000000..c8c9bf4
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCompilationBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * Compilation.
+ */
+public final class AppleCompilationBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "cpil";
+
+
+ public AppleCompilationBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint8AppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCopyrightBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCopyrightBox.java.svn-base
new file mode 100644
index 0000000..ae44285
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCopyrightBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * itunes MetaData comment box.
+ */
+public final class AppleCopyrightBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "cprt";
+
+
+ public AppleCopyrightBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCoverBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCoverBox.java.svn-base
new file mode 100644
index 0000000..946dd49
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCoverBox.java.svn-base
@@ -0,0 +1,44 @@
+package com.coremedia.iso.boxes.apple;
+
+import java.util.logging.Logger;
+
+/**
+ *
+ */
+public final class AppleCoverBox extends AbstractAppleMetaDataBox {
+ private static Logger LOG = Logger.getLogger(AppleCoverBox.class.getName());
+ public static final String TYPE = "covr";
+
+
+ public AppleCoverBox() {
+ super(TYPE);
+ }
+
+
+ public void setPng(byte[] pngData) {
+ appleDataBox = new AppleDataBox();
+ appleDataBox.setVersion(0);
+ appleDataBox.setFlags(0xe);
+ appleDataBox.setFourBytes(new byte[4]);
+ appleDataBox.setData(pngData);
+ }
+
+
+ public void setJpg(byte[] jpgData) {
+ appleDataBox = new AppleDataBox();
+ appleDataBox.setVersion(0);
+ appleDataBox.setFlags(0xd);
+ appleDataBox.setFourBytes(new byte[4]);
+ appleDataBox.setData(jpgData);
+ }
+
+ @Override
+ public void setValue(String value) {
+ LOG.warning("---");
+ }
+
+ @Override
+ public String getValue() {
+ return "---";
+ }
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCustomGenreBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCustomGenreBox.java.svn-base
new file mode 100644
index 0000000..0c67f97
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleCustomGenreBox.java.svn-base
@@ -0,0 +1,28 @@
+package com.coremedia.iso.boxes.apple;
+
+import com.coremedia.iso.Utf8;
+
+/**
+ *
+ */
+public final class AppleCustomGenreBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9gen";
+
+
+ public AppleCustomGenreBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+ public void setGenre(String genre) {
+ appleDataBox = new AppleDataBox();
+ appleDataBox.setVersion(0);
+ appleDataBox.setFlags(1);
+ appleDataBox.setFourBytes(new byte[4]);
+ appleDataBox.setData(Utf8.convert(genre));
+ }
+
+ public String getGenre() {
+ return Utf8.convert(appleDataBox.getData());
+ }
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataBox.java.svn-base
new file mode 100644
index 0000000..ba42629
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataBox.java.svn-base
@@ -0,0 +1,92 @@
+package com.coremedia.iso.boxes.apple;
+
+import com.googlecode.mp4parser.AbstractFullBox;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Most stupid box of the world. Encapsulates actual data within
+ */
+public final class AppleDataBox extends AbstractFullBox {
+ public static final String TYPE = "data";
+
+ private byte[] fourBytes = new byte[4];
+ private byte[] data;
+
+ private static AppleDataBox getEmpty() {
+ AppleDataBox appleDataBox = new AppleDataBox();
+ appleDataBox.setVersion(0);
+ appleDataBox.setFourBytes(new byte[4]);
+ return appleDataBox;
+ }
+
+ public static AppleDataBox getStringAppleDataBox() {
+ AppleDataBox appleDataBox = getEmpty();
+ appleDataBox.setFlags(1);
+ appleDataBox.setData(new byte[]{0});
+ return appleDataBox;
+ }
+
+ public static AppleDataBox getUint8AppleDataBox() {
+ AppleDataBox appleDataBox = new AppleDataBox();
+ appleDataBox.setFlags(21);
+ appleDataBox.setData(new byte[]{0});
+ return appleDataBox;
+ }
+
+ public static AppleDataBox getUint16AppleDataBox() {
+ AppleDataBox appleDataBox = new AppleDataBox();
+ appleDataBox.setFlags(21);
+ appleDataBox.setData(new byte[]{0, 0});
+ return appleDataBox;
+ }
+
+ public static AppleDataBox getUint32AppleDataBox() {
+ AppleDataBox appleDataBox = new AppleDataBox();
+ appleDataBox.setFlags(21);
+ appleDataBox.setData(new byte[]{0, 0, 0, 0});
+ return appleDataBox;
+ }
+
+ public AppleDataBox() {
+ super(TYPE);
+ }
+
+ protected long getContentSize() {
+ return data.length + 8;
+ }
+
+ public void setData(byte[] data) {
+ this.data = new byte[data.length];
+ System.arraycopy(data, 0, this.data, 0, data.length);
+ }
+
+ public void setFourBytes(byte[] fourBytes) {
+ System.arraycopy(fourBytes, 0, this.fourBytes, 0, 4);
+ }
+
+ @Override
+ public void _parseDetails(ByteBuffer content) {
+ parseVersionAndFlags(content);
+ fourBytes = new byte[4];
+ content.get(fourBytes);
+ data = new byte[content.remaining()];
+ content.get(data);
+ }
+
+
+ @Override
+ protected void getContent(ByteBuffer byteBuffer) {
+ writeVersionAndFlags(byteBuffer);
+ byteBuffer.put(fourBytes, 0, 4);
+ byteBuffer.put(data);
+ }
+
+ public byte[] getFourBytes() {
+ return fourBytes;
+ }
+
+ public byte[] getData() {
+ return data;
+ }
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataRateBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataRateBox.java.svn-base
new file mode 100644
index 0000000..e58e550
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataRateBox.java.svn-base
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2009 castLabs GmbH, Berlin
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.coremedia.iso.boxes.apple;
+
+import com.coremedia.iso.IsoTypeReader;
+import com.coremedia.iso.IsoTypeWriter;
+import com.googlecode.mp4parser.AbstractFullBox;
+
+import java.nio.ByteBuffer;
+
+public class AppleDataRateBox extends AbstractFullBox {
+ public static final String TYPE = "rmdr";
+ private long dataRate;
+
+ public AppleDataRateBox() {
+ super(TYPE);
+ }
+
+ protected long getContentSize() {
+ return 8;
+ }
+
+ @Override
+ public void _parseDetails(ByteBuffer content) {
+ parseVersionAndFlags(content);
+ dataRate = IsoTypeReader.readUInt32(content);
+ }
+
+ @Override
+ protected void getContent(ByteBuffer byteBuffer) {
+ writeVersionAndFlags(byteBuffer);
+ IsoTypeWriter.writeUInt32(byteBuffer, dataRate);
+ }
+
+
+ public long getDataRate() {
+ return dataRate;
+ }
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataReferenceBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataReferenceBox.java.svn-base
new file mode 100644
index 0000000..7370c10
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDataReferenceBox.java.svn-base
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2009 castLabs GmbH, Berlin
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.coremedia.iso.boxes.apple;
+
+import com.coremedia.iso.IsoFile;
+import com.coremedia.iso.IsoTypeReader;
+import com.coremedia.iso.IsoTypeWriter;
+import com.coremedia.iso.Utf8;
+import com.googlecode.mp4parser.AbstractFullBox;
+
+import java.nio.ByteBuffer;
+
+import static com.googlecode.mp4parser.util.CastUtils.l2i;
+
+public class AppleDataReferenceBox extends AbstractFullBox {
+ public static final String TYPE = "rdrf";
+ private int dataReferenceSize;
+ private String dataReferenceType;
+ private String dataReference;
+
+ public AppleDataReferenceBox() {
+ super(TYPE);
+ }
+
+
+ protected long getContentSize() {
+ return 12 + dataReferenceSize;
+ }
+
+ @Override
+ public void _parseDetails(ByteBuffer content) {
+ parseVersionAndFlags(content);
+ dataReferenceType = IsoTypeReader.read4cc(content);
+ dataReferenceSize = l2i(IsoTypeReader.readUInt32(content));
+ dataReference = IsoTypeReader.readString(content, dataReferenceSize);
+ }
+
+ @Override
+ protected void getContent(ByteBuffer byteBuffer) {
+ writeVersionAndFlags(byteBuffer);
+ byteBuffer.put(IsoFile.fourCCtoBytes(dataReferenceType));
+ IsoTypeWriter.writeUInt32(byteBuffer, dataReferenceSize);
+ byteBuffer.put(Utf8.convert(dataReference));
+ }
+
+ public long getDataReferenceSize() {
+ return dataReferenceSize;
+ }
+
+ public String getDataReferenceType() {
+ return dataReferenceType;
+ }
+
+ public String getDataReference() {
+ return dataReference;
+ }
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDescriptionBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDescriptionBox.java.svn-base
new file mode 100644
index 0000000..e20e0fc
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleDescriptionBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleDescriptionBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "desc";
+
+
+ public AppleDescriptionBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleEncoderBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleEncoderBox.java.svn-base
new file mode 100644
index 0000000..5a59e81
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleEncoderBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * itunes MetaData comment box.
+ */
+public final class AppleEncoderBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9too";
+
+
+ public AppleEncoderBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGaplessPlaybackBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGaplessPlaybackBox.java.svn-base
new file mode 100644
index 0000000..c617a54
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGaplessPlaybackBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * Gapless Playback.
+ */
+public final class AppleGaplessPlaybackBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "pgap";
+
+
+ public AppleGaplessPlaybackBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint8AppleDataBox();
+ }
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGenericBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGenericBox.java.svn-base
new file mode 100644
index 0000000..177a25b
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGenericBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+import com.googlecode.mp4parser.AbstractContainerBox;
+
+/**
+ *
+ */
+public final class AppleGenericBox extends AbstractContainerBox {
+ public static final String TYPE = "----";
+
+ public AppleGenericBox() {
+ super(TYPE);
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGroupingBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGroupingBox.java.svn-base
new file mode 100644
index 0000000..9884298
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleGroupingBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * itunes MetaData comment box.
+ */
+public final class AppleGroupingBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9grp";
+
+
+ public AppleGroupingBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleIdBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleIdBox.java.svn-base
new file mode 100644
index 0000000..08c697e
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleIdBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleIdBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "apID";
+
+
+ public AppleIdBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleItemListBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleItemListBox.java.svn-base
new file mode 100644
index 0000000..cd26e81
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleItemListBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+import com.googlecode.mp4parser.AbstractContainerBox;
+
+/**
+ * undocumented iTunes MetaData Box.
+ */
+public class AppleItemListBox extends AbstractContainerBox {
+ public static final String TYPE = "ilst";
+
+ public AppleItemListBox() {
+ super(TYPE);
+ }
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleLosslessSpecificBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleLosslessSpecificBox.java.svn-base
new file mode 100644
index 0000000..781af49
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleLosslessSpecificBox.java.svn-base
@@ -0,0 +1,163 @@
+package com.coremedia.iso.boxes.apple;
+
+import com.coremedia.iso.IsoTypeReader;
+import com.coremedia.iso.IsoTypeWriter;
+import com.googlecode.mp4parser.AbstractFullBox;
+
+import java.nio.ByteBuffer;
+
+/**
+ *
+ */
+public final class AppleLosslessSpecificBox extends AbstractFullBox {
+
+ public static final String TYPE = "alac";
+ /*
+ Extradata: 32bit size 32bit tag (=alac) 32bit zero?
+ 32bit max sample per frame 8bit ?? (zero?) 8bit sample
+ size 8bit history mult 8bit initial history 8bit kmodifier
+ 8bit channels? 16bit ?? 32bit max coded frame size 32bit
+ bitrate? 32bit samplerate
+ */
+ private long maxSamplePerFrame; // 32bi
+ private int unknown1; // 8bit
+ private int sampleSize; // 8bit
+ private int historyMult; // 8bit
+ private int initialHistory; // 8bit
+ private int kModifier; // 8bit
+ private int channels; // 8bit
+ private int unknown2; // 16bit
+ private long maxCodedFrameSize; // 32bit
+ private long bitRate; // 32bit
+ private long sampleRate; // 32bit
+
+ public long getMaxSamplePerFrame() {
+ return maxSamplePerFrame;
+ }
+
+ public void setMaxSamplePerFrame(int maxSamplePerFrame) {
+ this.maxSamplePerFrame = maxSamplePerFrame;
+ }
+
+ public int getUnknown1() {
+ return unknown1;
+ }
+
+ public void setUnknown1(int unknown1) {
+ this.unknown1 = unknown1;
+ }
+
+ public int getSampleSize() {
+ return sampleSize;
+ }
+
+ public void setSampleSize(int sampleSize) {
+ this.sampleSize = sampleSize;
+ }
+
+ public int getHistoryMult() {
+ return historyMult;
+ }
+
+ public void setHistoryMult(int historyMult) {
+ this.historyMult = historyMult;
+ }
+
+ public int getInitialHistory() {
+ return initialHistory;
+ }
+
+ public void setInitialHistory(int initialHistory) {
+ this.initialHistory = initialHistory;
+ }
+
+ public int getKModifier() {
+ return kModifier;
+ }
+
+ public void setKModifier(int kModifier) {
+ this.kModifier = kModifier;
+ }
+
+ public int getChannels() {
+ return channels;
+ }
+
+ public void setChannels(int channels) {
+ this.channels = channels;
+ }
+
+ public int getUnknown2() {
+ return unknown2;
+ }
+
+ public void setUnknown2(int unknown2) {
+ this.unknown2 = unknown2;
+ }
+
+ public long getMaxCodedFrameSize() {
+ return maxCodedFrameSize;
+ }
+
+ public void setMaxCodedFrameSize(int maxCodedFrameSize) {
+ this.maxCodedFrameSize = maxCodedFrameSize;
+ }
+
+ public long getBitRate() {
+ return bitRate;
+ }
+
+ public void setBitRate(int bitRate) {
+ this.bitRate = bitRate;
+ }
+
+ public long getSampleRate() {
+ return sampleRate;
+ }
+
+ public void setSampleRate(int sampleRate) {
+ this.sampleRate = sampleRate;
+ }
+
+
+ @Override
+ public void _parseDetails(ByteBuffer content) {
+ parseVersionAndFlags(content);
+ maxSamplePerFrame = IsoTypeReader.readUInt32(content);
+ unknown1 = IsoTypeReader.readUInt8(content);
+ sampleSize = IsoTypeReader.readUInt8(content);
+ historyMult = IsoTypeReader.readUInt8(content);
+ initialHistory = IsoTypeReader.readUInt8(content);
+ kModifier = IsoTypeReader.readUInt8(content);
+ channels = IsoTypeReader.readUInt8(content);
+ unknown2 = IsoTypeReader.readUInt16(content);
+ maxCodedFrameSize = IsoTypeReader.readUInt32(content);
+ bitRate = IsoTypeReader.readUInt32(content);
+ sampleRate = IsoTypeReader.readUInt32(content);
+ }
+
+ @Override
+ protected void getContent(ByteBuffer byteBuffer) {
+ writeVersionAndFlags(byteBuffer);
+ IsoTypeWriter.writeUInt32(byteBuffer, maxSamplePerFrame);
+ IsoTypeWriter.writeUInt8(byteBuffer, unknown1);
+ IsoTypeWriter.writeUInt8(byteBuffer, sampleSize);
+ IsoTypeWriter.writeUInt8(byteBuffer, historyMult);
+ IsoTypeWriter.writeUInt8(byteBuffer, initialHistory);
+ IsoTypeWriter.writeUInt8(byteBuffer, kModifier);
+ IsoTypeWriter.writeUInt8(byteBuffer, channels);
+ IsoTypeWriter.writeUInt16(byteBuffer, unknown2);
+ IsoTypeWriter.writeUInt32(byteBuffer, maxCodedFrameSize);
+ IsoTypeWriter.writeUInt32(byteBuffer, bitRate);
+ IsoTypeWriter.writeUInt32(byteBuffer, sampleRate);
+ }
+
+ public AppleLosslessSpecificBox() {
+ super("alac");
+ }
+
+ protected long getContentSize() {
+ return 28;
+ }
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleMeanBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleMeanBox.java.svn-base
new file mode 100644
index 0000000..3a26f96
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleMeanBox.java.svn-base
@@ -0,0 +1,47 @@
+package com.coremedia.iso.boxes.apple;
+
+import com.coremedia.iso.IsoTypeReader;
+import com.coremedia.iso.Utf8;
+import com.googlecode.mp4parser.AbstractFullBox;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Apple Meaning box. Allowed as subbox of "----" box.
+ *
+ * @see com.coremedia.iso.boxes.apple.AppleGenericBox
+ */
+public final class AppleMeanBox extends AbstractFullBox {
+ public static final String TYPE = "mean";
+ private String meaning;
+
+ public AppleMeanBox() {
+ super(TYPE);
+ }
+
+ protected long getContentSize() {
+ return 4 + Utf8.utf8StringLengthInBytes(meaning);
+ }
+
+ @Override
+ public void _parseDetails(ByteBuffer content) {
+ parseVersionAndFlags(content);
+ meaning = IsoTypeReader.readString(content, content.remaining());
+ }
+
+ @Override
+ protected void getContent(ByteBuffer byteBuffer) {
+ writeVersionAndFlags(byteBuffer);
+ byteBuffer.put(Utf8.convert(meaning));
+ }
+
+ public String getMeaning() {
+ return meaning;
+ }
+
+ public void setMeaning(String meaning) {
+ this.meaning = meaning;
+ }
+
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleMediaTypeBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleMediaTypeBox.java.svn-base
new file mode 100644
index 0000000..f4ca98d
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleMediaTypeBox.java.svn-base
@@ -0,0 +1,39 @@
+package com.coremedia.iso.boxes.apple;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * itunes MetaData comment box.
+ */
+public class AppleMediaTypeBox extends AbstractAppleMetaDataBox {
+ private static Map<String, String> mediaTypes = new HashMap<String, String>();
+
+ static {
+ mediaTypes.put("0", "Movie (is now 9)");
+ mediaTypes.put("1", "Normal (Music)");
+ mediaTypes.put("2", "Audiobook");
+ mediaTypes.put("6", "Music Video");
+ mediaTypes.put("9", "Movie");
+ mediaTypes.put("10", "TV Show");
+ mediaTypes.put("11", "Booklet");
+ mediaTypes.put("14", "Ringtone");
+ }
+
+ public static final String TYPE = "stik";
+
+
+ public AppleMediaTypeBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint8AppleDataBox();
+ }
+
+ public String getReadableValue() {
+ if (mediaTypes.containsKey(getValue())) {
+ return mediaTypes.get(getValue());
+ } else {
+ return "unknown media type " + getValue();
+ }
+
+ }
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleNameBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleNameBox.java.svn-base
new file mode 100644
index 0000000..5cad249
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleNameBox.java.svn-base
@@ -0,0 +1,45 @@
+package com.coremedia.iso.boxes.apple;
+
+import com.coremedia.iso.IsoTypeReader;
+import com.coremedia.iso.Utf8;
+import com.googlecode.mp4parser.AbstractFullBox;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Apple Name box. Allowed as subbox of "----" box.
+ *
+ * @see AppleGenericBox
+ */
+public final class AppleNameBox extends AbstractFullBox {
+ public static final String TYPE = "name";
+ private String name;
+
+ public AppleNameBox() {
+ super(TYPE);
+ }
+
+ protected long getContentSize() {
+ return 4 + Utf8.convert(name).length;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public void _parseDetails(ByteBuffer content) {
+ parseVersionAndFlags(content);
+ name = IsoTypeReader.readString(content, content.remaining());
+ }
+
+ @Override
+ protected void getContent(ByteBuffer byteBuffer) {
+ writeVersionAndFlags(byteBuffer);
+ byteBuffer.put(Utf8.convert(name));
+ }
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleNetworkBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleNetworkBox.java.svn-base
new file mode 100644
index 0000000..07691b3
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleNetworkBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleNetworkBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "tvnn";
+
+
+ public AppleNetworkBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/ApplePurchaseDateBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/ApplePurchaseDateBox.java.svn-base
new file mode 100644
index 0000000..eb9807f
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/ApplePurchaseDateBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class ApplePurchaseDateBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "purd";
+
+
+ public ApplePurchaseDateBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleRatingBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleRatingBox.java.svn-base
new file mode 100644
index 0000000..71671fc
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleRatingBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * iTunes Rating Box.
+ */
+public final class AppleRatingBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "rtng";
+
+
+ public AppleRatingBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint8AppleDataBox();
+ }
+
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleRecordingYearBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleRecordingYearBox.java.svn-base
new file mode 100644
index 0000000..da13300
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleRecordingYearBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public class AppleRecordingYearBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9day";
+
+
+ public AppleRecordingYearBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleReferenceMovieBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleReferenceMovieBox.java.svn-base
new file mode 100644
index 0000000..49c539f
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleReferenceMovieBox.java.svn-base
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2009 castLabs GmbH, Berlin
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.coremedia.iso.boxes.apple;
+
+import com.googlecode.mp4parser.AbstractContainerBox;
+
+public class AppleReferenceMovieBox extends AbstractContainerBox {
+ public static final String TYPE = "rmra";
+
+ public AppleReferenceMovieBox() {
+ super(TYPE);
+ }
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleReferenceMovieDescriptorBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleReferenceMovieDescriptorBox.java.svn-base
new file mode 100644
index 0000000..488f01b
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleReferenceMovieDescriptorBox.java.svn-base
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2009 castLabs GmbH, Berlin
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.coremedia.iso.boxes.apple;
+
+import com.googlecode.mp4parser.AbstractContainerBox;
+
+public class AppleReferenceMovieDescriptorBox extends AbstractContainerBox {
+ public static final String TYPE = "rmda";
+
+ public AppleReferenceMovieDescriptorBox() {
+ super(TYPE);
+ }
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleShowBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleShowBox.java.svn-base
new file mode 100644
index 0000000..66b0d59
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleShowBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleShowBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "tvsh";
+
+
+ public AppleShowBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleSortAlbumBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleSortAlbumBox.java.svn-base
new file mode 100644
index 0000000..cf74004
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleSortAlbumBox.java.svn-base
@@ -0,0 +1,14 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleSortAlbumBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "soal";
+
+
+ public AppleSortAlbumBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStandardGenreBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStandardGenreBox.java.svn-base
new file mode 100644
index 0000000..21932fa
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStandardGenreBox.java.svn-base
@@ -0,0 +1,14 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleStandardGenreBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "gnre";
+
+
+ public AppleStandardGenreBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint16AppleDataBox();
+ }
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStoreAccountTypeBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStoreAccountTypeBox.java.svn-base
new file mode 100644
index 0000000..36ecf4e
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStoreAccountTypeBox.java.svn-base
@@ -0,0 +1,27 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * itunes MetaData comment box.
+ */
+public class AppleStoreAccountTypeBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "akID";
+
+
+ public AppleStoreAccountTypeBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint8AppleDataBox();
+ }
+
+ public String getReadableValue() {
+ byte value = this.appleDataBox.getData()[0];
+ switch (value) {
+ case 0:
+ return "iTunes Account";
+ case 1:
+ return "AOL Account";
+ default:
+ return "unknown Account";
+ }
+
+ }
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStoreCountryCodeBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStoreCountryCodeBox.java.svn-base
new file mode 100644
index 0000000..2c4756a
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleStoreCountryCodeBox.java.svn-base
@@ -0,0 +1,54 @@
+package com.coremedia.iso.boxes.apple;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * itunes MetaData comment box.
+ */
+public class AppleStoreCountryCodeBox extends AbstractAppleMetaDataBox {
+ private static Map<String, String> countryCodes = new HashMap<String, String>();
+
+ static {
+ countryCodes.put("143460", "Australia");
+ countryCodes.put("143445", "Austria");
+ countryCodes.put("143446", "Belgium");
+ countryCodes.put("143455", "Canada");
+ countryCodes.put("143458", "Denmark");
+ countryCodes.put("143447", "Finland");
+ countryCodes.put("143442", "France");
+ countryCodes.put("143443", "Germany");
+ countryCodes.put("143448", "Greece");
+ countryCodes.put("143449", "Ireland");
+ countryCodes.put("143450", "Italy");
+ countryCodes.put("143462", "Japan");
+ countryCodes.put("143451", "Luxembourg");
+ countryCodes.put("143452", "Netherlands");
+ countryCodes.put("143461", "New Zealand");
+ countryCodes.put("143457", "Norway");
+ countryCodes.put("143453", "Portugal");
+ countryCodes.put("143454", "Spain");
+ countryCodes.put("143456", "Sweden");
+ countryCodes.put("143459", "Switzerland");
+ countryCodes.put("143444", "United Kingdom");
+ countryCodes.put("143441", "United States");
+ }
+
+ public static final String TYPE = "sfID";
+
+
+ public AppleStoreCountryCodeBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint32AppleDataBox();
+ }
+
+
+ public String getReadableValue() {
+ if (countryCodes.containsKey(getValue())) {
+ return countryCodes.get(getValue());
+ } else {
+ return "unknown country code " + getValue();
+ }
+
+ }
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleSynopsisBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleSynopsisBox.java.svn-base
new file mode 100644
index 0000000..cd5c2ab
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleSynopsisBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleSynopsisBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "ldes";
+
+
+ public AppleSynopsisBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTempBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTempBox.java.svn-base
new file mode 100644
index 0000000..ef57228
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTempBox.java.svn-base
@@ -0,0 +1,28 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * Beats per minute.
+ */
+public final class AppleTempBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "tmpo";
+
+
+ public AppleTempBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint16AppleDataBox();
+ }
+
+
+ public int getTempo() {
+ return appleDataBox.getData()[1];
+ }
+
+ public void setTempo(int tempo) {
+ appleDataBox = new AppleDataBox();
+ appleDataBox.setVersion(0);
+ appleDataBox.setFlags(21);
+ appleDataBox.setFourBytes(new byte[4]);
+ appleDataBox.setData(new byte[]{0, (byte) (tempo & 0xFF)});
+
+ }
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackAuthorBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackAuthorBox.java.svn-base
new file mode 100644
index 0000000..c5b3732
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackAuthorBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleTrackAuthorBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9wrt";
+
+
+ public AppleTrackAuthorBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackNumberBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackNumberBox.java.svn-base
new file mode 100644
index 0000000..c073c2f
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackNumberBox.java.svn-base
@@ -0,0 +1,48 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleTrackNumberBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "trkn";
+
+
+ public AppleTrackNumberBox() {
+ super(TYPE);
+ }
+
+
+ /**
+ * @param track the actual track number
+ * @param of number of tracks overall
+ */
+ public void setTrackNumber(byte track, byte of) {
+ appleDataBox = new AppleDataBox();
+ appleDataBox.setVersion(0);
+ appleDataBox.setFlags(0);
+ appleDataBox.setFourBytes(new byte[4]);
+ appleDataBox.setData(new byte[]{0, 0, 0, track, 0, of, 0, 0});
+ }
+
+ public byte getTrackNumber() {
+ return appleDataBox.getData()[3];
+ }
+
+ public byte getNumberOfTracks() {
+ return appleDataBox.getData()[5];
+ }
+
+ public void setNumberOfTracks(byte numberOfTracks) {
+ byte[] content = appleDataBox.getData();
+ content[5] = numberOfTracks;
+ appleDataBox.setData(content);
+ }
+
+ public void setTrackNumber(byte trackNumber) {
+ byte[] content = appleDataBox.getData();
+ content[3] = trackNumber;
+ appleDataBox.setData(content);
+ }
+
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackTitleBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackTitleBox.java.svn-base
new file mode 100644
index 0000000..3dd613c
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTrackTitleBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ *
+ */
+public final class AppleTrackTitleBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "\u00a9nam";
+
+
+ public AppleTrackTitleBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+}
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvEpisodeBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvEpisodeBox.java.svn-base
new file mode 100644
index 0000000..3b3817b
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvEpisodeBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * Tv Episode.
+ */
+public class AppleTvEpisodeBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "tves";
+
+
+ public AppleTvEpisodeBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint32AppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvEpisodeNumberBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvEpisodeNumberBox.java.svn-base
new file mode 100644
index 0000000..33cd4e3
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvEpisodeNumberBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * Tv Episode.
+ */
+public class AppleTvEpisodeNumberBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "tven";
+
+
+ public AppleTvEpisodeNumberBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getStringAppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvSeasonBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvSeasonBox.java.svn-base
new file mode 100644
index 0000000..9459ea3
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleTvSeasonBox.java.svn-base
@@ -0,0 +1,15 @@
+package com.coremedia.iso.boxes.apple;
+
+/**
+ * Tv Season.
+ */
+public final class AppleTvSeasonBox extends AbstractAppleMetaDataBox {
+ public static final String TYPE = "tvsn";
+
+
+ public AppleTvSeasonBox() {
+ super(TYPE);
+ appleDataBox = AppleDataBox.getUint32AppleDataBox();
+ }
+
+} \ No newline at end of file
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleWaveBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleWaveBox.java.svn-base
new file mode 100644
index 0000000..65edd38
--- /dev/null
+++ b/isoparser/src/main/java/com/coremedia/iso/boxes/apple/.svn/text-base/AppleWaveBox.java.svn-base
@@ -0,0 +1,16 @@
+package com.coremedia.iso.boxes.apple;
+
+import com.googlecode.mp4parser.AbstractContainerBox;
+
+/**
+ *
+ */
+public final class AppleWaveBox extends AbstractContainerBox {
+ public static final String TYPE = "wave";
+
+ public AppleWaveBox() {
+ super(TYPE);
+ }
+
+
+}