summaryrefslogtreecommitdiff
path: root/isoparser/src/main/java/com/googlecode/mp4parser/boxes/apple/QuicktimeTextSampleEntry.java
diff options
context:
space:
mode:
Diffstat (limited to 'isoparser/src/main/java/com/googlecode/mp4parser/boxes/apple/QuicktimeTextSampleEntry.java')
-rw-r--r--isoparser/src/main/java/com/googlecode/mp4parser/boxes/apple/QuicktimeTextSampleEntry.java237
1 files changed, 237 insertions, 0 deletions
diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/boxes/apple/QuicktimeTextSampleEntry.java b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/apple/QuicktimeTextSampleEntry.java
new file mode 100644
index 0000000..8784fc6
--- /dev/null
+++ b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/apple/QuicktimeTextSampleEntry.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright 2012 Sebastian Annies, Hamburg
+ *
+ * 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.googlecode.mp4parser.boxes.apple;
+
+import com.coremedia.iso.IsoTypeReader;
+import com.coremedia.iso.IsoTypeWriter;
+import com.coremedia.iso.boxes.sampleentry.SampleEntry;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Entry type for timed text samples defined in the timed text specification (ISO/IEC 14496-17).
+ */
+public class QuicktimeTextSampleEntry extends SampleEntry {
+
+ public static final String TYPE = "text";
+
+ int displayFlags;
+ int textJustification;
+
+ int backgroundR;
+ int backgroundG;
+ int backgroundB;
+
+ long defaultTextBox;
+ long reserved1;
+
+ short fontNumber;
+ short fontFace;
+ byte reserved2;
+ short reserved3;
+
+ int foregroundR = 65535;
+ int foregroundG = 65535;
+ int foregroundB = 65535;
+
+ String fontName = "";
+
+ public QuicktimeTextSampleEntry() {
+ super(TYPE);
+ }
+
+ @Override
+ public void _parseDetails(ByteBuffer content) {
+ _parseReservedAndDataReferenceIndex(content);
+
+ displayFlags = content.getInt();
+ textJustification = content.getInt();
+ backgroundR = IsoTypeReader.readUInt16(content);
+ backgroundG = IsoTypeReader.readUInt16(content);
+ backgroundB = IsoTypeReader.readUInt16(content);
+ defaultTextBox = IsoTypeReader.readUInt64(content);
+ reserved1 = IsoTypeReader.readUInt64(content);
+ fontNumber = content.getShort();
+ fontFace = content.getShort();
+ reserved2 = content.get();
+ reserved3 = content.getShort();
+ foregroundR = IsoTypeReader.readUInt16(content);
+ foregroundG = IsoTypeReader.readUInt16(content);
+ foregroundB = IsoTypeReader.readUInt16(content);
+
+ if (content.remaining() > 0) {
+ int length = IsoTypeReader.readUInt8(content);
+ byte[] myFontName = new byte[length];
+ content.get(myFontName);
+ fontName = new String(myFontName);
+ } else {
+ fontName = null;
+ }
+ }
+
+
+ protected long getContentSize() {
+ return 52 + (fontName != null ? fontName.length() : 0);
+ }
+
+
+ public int getDisplayFlags() {
+ return displayFlags;
+ }
+
+ public void setDisplayFlags(int displayFlags) {
+ this.displayFlags = displayFlags;
+ }
+
+ public int getTextJustification() {
+ return textJustification;
+ }
+
+ public void setTextJustification(int textJustification) {
+ this.textJustification = textJustification;
+ }
+
+ public int getBackgroundR() {
+ return backgroundR;
+ }
+
+ public void setBackgroundR(int backgroundR) {
+ this.backgroundR = backgroundR;
+ }
+
+ public int getBackgroundG() {
+ return backgroundG;
+ }
+
+ public void setBackgroundG(int backgroundG) {
+ this.backgroundG = backgroundG;
+ }
+
+ public int getBackgroundB() {
+ return backgroundB;
+ }
+
+ public void setBackgroundB(int backgroundB) {
+ this.backgroundB = backgroundB;
+ }
+
+ public long getDefaultTextBox() {
+ return defaultTextBox;
+ }
+
+ public void setDefaultTextBox(long defaultTextBox) {
+ this.defaultTextBox = defaultTextBox;
+ }
+
+ public long getReserved1() {
+ return reserved1;
+ }
+
+ public void setReserved1(long reserved1) {
+ this.reserved1 = reserved1;
+ }
+
+ public short getFontNumber() {
+ return fontNumber;
+ }
+
+ public void setFontNumber(short fontNumber) {
+ this.fontNumber = fontNumber;
+ }
+
+ public short getFontFace() {
+ return fontFace;
+ }
+
+ public void setFontFace(short fontFace) {
+ this.fontFace = fontFace;
+ }
+
+ public byte getReserved2() {
+ return reserved2;
+ }
+
+ public void setReserved2(byte reserved2) {
+ this.reserved2 = reserved2;
+ }
+
+ public short getReserved3() {
+ return reserved3;
+ }
+
+ public void setReserved3(short reserved3) {
+ this.reserved3 = reserved3;
+ }
+
+ public int getForegroundR() {
+ return foregroundR;
+ }
+
+ public void setForegroundR(int foregroundR) {
+ this.foregroundR = foregroundR;
+ }
+
+ public int getForegroundG() {
+ return foregroundG;
+ }
+
+ public void setForegroundG(int foregroundG) {
+ this.foregroundG = foregroundG;
+ }
+
+ public int getForegroundB() {
+ return foregroundB;
+ }
+
+ public void setForegroundB(int foregroundB) {
+ this.foregroundB = foregroundB;
+ }
+
+ public String getFontName() {
+ return fontName;
+ }
+
+ public void setFontName(String fontName) {
+ this.fontName = fontName;
+ }
+
+ @Override
+ protected void getContent(ByteBuffer byteBuffer) {
+ _writeReservedAndDataReferenceIndex(byteBuffer);
+ byteBuffer.putInt(displayFlags);
+ byteBuffer.putInt(textJustification);
+ IsoTypeWriter.writeUInt16(byteBuffer, backgroundR);
+ IsoTypeWriter.writeUInt16(byteBuffer, backgroundG);
+ IsoTypeWriter.writeUInt16(byteBuffer, backgroundB);
+ IsoTypeWriter.writeUInt64(byteBuffer, defaultTextBox);
+ IsoTypeWriter.writeUInt64(byteBuffer, reserved1);
+ byteBuffer.putShort(fontNumber);
+ byteBuffer.putShort(fontFace);
+ byteBuffer.put(reserved2);
+ byteBuffer.putShort(reserved3);
+
+ IsoTypeWriter.writeUInt16(byteBuffer, foregroundR);
+ IsoTypeWriter.writeUInt16(byteBuffer, foregroundG);
+ IsoTypeWriter.writeUInt16(byteBuffer, foregroundB);
+ if (fontName != null) {
+ IsoTypeWriter.writeUInt8(byteBuffer, fontName.length());
+ byteBuffer.put(fontName.getBytes());
+ }
+
+ }
+
+
+}