@Override
  public void getBox(WritableByteChannel writableByteChannel) throws IOException {
    writableByteChannel.write(getHeader());

    ByteBuffer byteBuffer = ByteBuffer.allocate(52 + (fontName != null ? fontName.length() : 0));
    byteBuffer.position(6);
    IsoTypeWriter.writeUInt16(byteBuffer, dataReferenceIndex);
    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());
    }
    writableByteChannel.write((ByteBuffer) byteBuffer.rewind());
    // writeContainer(writableByteChannel); there are no child boxes!?
  }
 protected void getContent(ByteBuffer paramByteBuffer) {
   writeVersionAndFlags(paramByteBuffer);
   IsoTypeWriter.writeUInt32(paramByteBuffer, this.entries.size());
   Iterator localIterator = this.entries.iterator();
   while (localIterator.hasNext()) {
     Entry localEntry = (Entry) localIterator.next();
     IsoTypeWriter.writeUInt32(paramByteBuffer, localEntry.getCount());
     paramByteBuffer.putInt(localEntry.getOffset());
   }
 }
 public void getContent(ByteBuffer paramByteBuffer) {
   IsoTypeWriter.writeUInt16(paramByteBuffer, this.itemId);
   if (ItemLocationBox.this.getVersion() == 1)
     IsoTypeWriter.writeUInt16(paramByteBuffer, this.constructionMethod);
   IsoTypeWriter.writeUInt16(paramByteBuffer, this.dataReferenceIndex);
   if (ItemLocationBox.this.baseOffsetSize > 0)
     IsoTypeWriterVariable.write(
         this.baseOffset, paramByteBuffer, ItemLocationBox.this.baseOffsetSize);
   IsoTypeWriter.writeUInt16(paramByteBuffer, this.extents.size());
   Iterator localIterator = this.extents.iterator();
   while (localIterator.hasNext())
     ((ItemLocationBox.Extent) localIterator.next()).getContent(paramByteBuffer);
 }
Example #4
0
  @Override
  protected void getContent(ByteBuffer byteBuffer) {
    writeVersionAndFlags(byteBuffer);
    IsoTypeWriter.writeUInt32(byteBuffer, sampleSize);

    if (sampleSize == 0) {
      IsoTypeWriter.writeUInt32(byteBuffer, sampleSizes.length);
      for (long sampleSize1 : sampleSizes) {
        IsoTypeWriter.writeUInt32(byteBuffer, sampleSize1);
      }
    } else {
      IsoTypeWriter.writeUInt32(byteBuffer, sampleCount);
    }
  }
  @Override
  protected void getContent(ByteBuffer byteBuffer) {
    writeVersionAndFlags(byteBuffer);
    IsoTypeWriter.writeUInt8(byteBuffer, entries.size());

    for (Entry entry : entries) {
      if (getVersion() == 0x01) {
        IsoTypeWriter.writeUInt64(byteBuffer, entry.fragmentAbsoluteTime);
        IsoTypeWriter.writeUInt64(byteBuffer, entry.fragmentAbsoluteDuration);
      } else {
        IsoTypeWriter.writeUInt32(byteBuffer, entry.fragmentAbsoluteTime);
        IsoTypeWriter.writeUInt32(byteBuffer, entry.fragmentAbsoluteDuration);
      }
    }
  }
 protected void getContent(ByteBuffer paramByteBuffer) {
   writeVersionAndFlags(paramByteBuffer);
   IsoTypeWriter.writeUInt8(paramByteBuffer, this.offsetSize << 4 | this.lengthSize);
   if (getVersion() == 1)
     IsoTypeWriter.writeUInt8(paramByteBuffer, this.baseOffsetSize << 4 | this.indexSize);
   while (true) {
     IsoTypeWriter.writeUInt16(paramByteBuffer, this.items.size());
     Iterator localIterator = this.items.iterator();
     while (true) {
       if (!localIterator.hasNext()) return;
       ((Item) localIterator.next()).getContent(paramByteBuffer);
     }
     IsoTypeWriter.writeUInt8(paramByteBuffer, this.baseOffsetSize << 4);
   }
 }
Example #7
0
 @Override
 protected void getContent(ByteBuffer byteBuffer) {
   writeVersionAndFlags(byteBuffer);
   IsoTypeWriter.writeIso639(byteBuffer, language);
   byteBuffer.put(Utf8.convert(description));
   byteBuffer.put((byte) 0);
 }
 @Override
 public ByteBuffer serialize() {
   ByteBuffer out = ByteBuffer.allocate(getSize());
   IsoTypeWriter.writeUInt8(out, tag);
   writeSize(out, getContentSize());
   out.put(data.duplicate());
   return out;
 }
 protected ByteBuffer getHeader() {
   ByteBuffer header;
   if (largeBox || getSize() >= (1L << 32)) {
     header =
         ByteBuffer.wrap(
             new byte[] {
               0,
               0,
               0,
               1,
               type.getBytes()[0],
               type.getBytes()[1],
               type.getBytes()[2],
               type.getBytes()[3],
               0,
               0,
               0,
               0,
               0,
               0,
               0,
               0
             });
     header.position(8);
     IsoTypeWriter.writeUInt64(header, getSize());
   } else {
     header =
         ByteBuffer.wrap(
             new byte[] {
               0,
               0,
               0,
               0,
               type.getBytes()[0],
               type.getBytes()[1],
               type.getBytes()[2],
               type.getBytes()[3]
             });
     IsoTypeWriter.writeUInt32(header, getSize());
   }
   header.rewind();
   return header;
 }
    public void getBox(WritableByteChannel writableByteChannel) throws IOException {
      ByteBuffer bb = ByteBuffer.allocate(16);
      long size = getSize();
      if (isSmallBox(size)) {
        IsoTypeWriter.writeUInt32(bb, size);
      } else {
        IsoTypeWriter.writeUInt32(bb, 1);
      }
      bb.put(IsoFile.fourCCtoBytes("mdat"));
      if (isSmallBox(size)) {
        bb.put(new byte[8]);
      } else {
        IsoTypeWriter.writeUInt64(bb, size);
      }
      bb.rewind();
      writableByteChannel.write(bb);
      if (writableByteChannel instanceof GatheringByteChannel) {
        List<ByteBuffer> nuSamples = unifyAdjacentBuffers(samples);

        int STEPSIZE = 1024;
        for (int i = 0; i < Math.ceil((double) nuSamples.size() / STEPSIZE); i++) {
          List<ByteBuffer> sublist =
              nuSamples.subList(
                  i * STEPSIZE, // start
                  (i + 1) * STEPSIZE < nuSamples.size()
                      ? (i + 1) * STEPSIZE
                      : nuSamples.size()); // end
          ByteBuffer sampleArray[] = sublist.toArray(new ByteBuffer[sublist.size()]);
          do {
            ((GatheringByteChannel) writableByteChannel).write(sampleArray);
          } while (sampleArray[sampleArray.length - 1].remaining() > 0);
        }
        // System.err.println(bytesWritten);
      } else {
        for (ByteBuffer sample : samples) {
          sample.rewind();
          writableByteChannel.write(sample);
        }
      }
    }
Example #11
0
 public void getBox(WritableByteChannel writableByteChannel) throws IOException {
   ByteBuffer bb = ByteBuffer.allocate(16);
   long size = getSize();
   if (isSmallBox(size)) {
     IsoTypeWriter.writeUInt32(bb, size);
   } else {
     IsoTypeWriter.writeUInt32(bb, 1);
   }
   bb.put(IsoFile.fourCCtoBytes("mdat"));
   if (isSmallBox(size)) {
     bb.put(new byte[8]);
   } else {
     IsoTypeWriter.writeUInt64(bb, size);
   }
   bb.rewind();
   writableByteChannel.write(bb);
   for (List<Sample> samples : chunkList) {
     for (Sample sample : samples) {
       sample.writeTo(writableByteChannel);
     }
   }
 }
 @Override
 protected void getContent(ByteBuffer byteBuffer) {
   writeVersionAndFlags(byteBuffer);
   IsoTypeWriter.writeUInt32(byteBuffer, entries.size());
   for (SampleEntry sampleEntry : entries) {
     IsoTypeWriter.writeUInt32(byteBuffer, sampleEntry.getSampleDelta());
     IsoTypeWriter.writeUInt16(byteBuffer, sampleEntry.getSubsampleCount());
     List<SampleEntry.SubsampleEntry> subsampleEntries = sampleEntry.getSubsampleEntries();
     for (SampleEntry.SubsampleEntry subsampleEntry : subsampleEntries) {
       if (getVersion() == 1) {
         IsoTypeWriter.writeUInt32(byteBuffer, subsampleEntry.getSubsampleSize());
       } else {
         IsoTypeWriter.writeUInt16(byteBuffer, l2i(subsampleEntry.getSubsampleSize()));
       }
       IsoTypeWriter.writeUInt8(byteBuffer, subsampleEntry.getSubsamplePriority());
       IsoTypeWriter.writeUInt8(byteBuffer, subsampleEntry.getDiscardable());
       IsoTypeWriter.writeUInt32(byteBuffer, subsampleEntry.getReserved());
     }
   }
 }
Example #13
0
  @Override
  protected void getContent(ByteBuffer byteBuffer) {
    writeVersionAndFlags(byteBuffer);
    if (getVersion() == 1) {
      IsoTypeWriter.writeUInt64(byteBuffer, creationTime);
      IsoTypeWriter.writeUInt64(byteBuffer, modificationTime);
      IsoTypeWriter.writeUInt32(byteBuffer, timescale);
      IsoTypeWriter.writeUInt64(byteBuffer, duration);
    } else {
      IsoTypeWriter.writeUInt32(byteBuffer, creationTime);
      IsoTypeWriter.writeUInt32(byteBuffer, modificationTime);
      IsoTypeWriter.writeUInt32(byteBuffer, timescale);
      IsoTypeWriter.writeUInt32(byteBuffer, duration);
    }
    IsoTypeWriter.writeFixedPoint1616(byteBuffer, rate);
    IsoTypeWriter.writeFixedPoint88(byteBuffer, volume);
    IsoTypeWriter.writeUInt16(byteBuffer, 0);
    IsoTypeWriter.writeUInt32(byteBuffer, 0);
    IsoTypeWriter.writeUInt32(byteBuffer, 0);

    for (int i = 0; i < 9; i++) {
      IsoTypeWriter.writeUInt32(byteBuffer, matrix[i]);
    }

    byteBuffer.putInt(previewTime);
    byteBuffer.putInt(previewDuration);
    byteBuffer.putInt(posterTime);
    byteBuffer.putInt(selectionTime);
    byteBuffer.putInt(selectionDuration);
    byteBuffer.putInt(currentTime);

    IsoTypeWriter.writeUInt32(byteBuffer, nextTrackId);
  }
 @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);
 }