@Override public String toString() { return "Sample(index: " + index + " size: " + ssb.getSampleSizeAtIndex(index) + ")"; }
public long getSize() { return ssb.getSampleSizeAtIndex(index); }
public synchronized ByteBuffer asByteBuffer() { ByteBuffer b; final int chunkNumber = getChunkForSample(index); SoftReference<ByteBuffer> chunkBufferSr = cache[chunkNumber]; final int chunkStartSample = chunkNumsStartSampleNum[chunkNumber] - 1; int sampleInChunk = index - chunkStartSample; long[] sampleOffsetsWithinChunk = sampleOffsetsWithinChunks[l2i(chunkNumber)]; long offsetWithInChunk = sampleOffsetsWithinChunk[sampleInChunk]; ByteBuffer chunkBuffer; if (chunkBufferSr == null || (chunkBuffer = chunkBufferSr.get()) == null) { try { chunkBuffer = randomAccess.get( chunkOffsets[l2i(chunkNumber)], sampleOffsetsWithinChunk[sampleOffsetsWithinChunk.length - 1] + ssb.getSampleSizeAtIndex(chunkStartSample + sampleOffsetsWithinChunk.length - 1)); cache[chunkNumber] = new SoftReference<ByteBuffer>(chunkBuffer); } catch (IOException e) { LOG.error("", e); throw new IndexOutOfBoundsException(e.getMessage()); } } b = (ByteBuffer) ((ByteBuffer) chunkBuffer.duplicate().position(l2i(offsetWithInChunk))).slice().limit(l2i(ssb.getSampleSizeAtIndex(index))); return b; }
sampleSum = 0; chunkSizes[currentChunkNo - 1] += ssb.getSampleSizeAtIndex(i - 1); long[] sampleOffsetsWithinChunkscurrentChunkNo = sampleOffsetsWithinChunks[currentChunkNo - 1]; int chunkNumsStartSampleNumcurrentChunkNo = chunkNumsStartSampleNum[currentChunkNo - 1]; sampleOffsetsWithinChunkscurrentChunkNo[i - chunkNumsStartSampleNumcurrentChunkNo] = sampleSum; sampleSum += ssb.getSampleSizeAtIndex(i - 1);
int sampleSize = l2i(stsz.getSampleSizeAtIndex(l2i(index - 1))); long avail = baos.available();
@Override public String toString() { return "Sample(index: " + index + " size: " + ssb.getSampleSizeAtIndex(index) + ")"; }
public long getSize() { return ssb.getSampleSizeAtIndex(index); }
public synchronized ByteBuffer asByteBuffer() { ByteBuffer b; final int chunkNumber = getChunkForSample(index); SoftReference<ByteBuffer> chunkBufferSr = cache[chunkNumber]; final int chunkStartSample = chunkNumsStartSampleNum[chunkNumber] - 1; int sampleInChunk = index - chunkStartSample; long[] sampleOffsetsWithinChunk = sampleOffsetsWithinChunks[l2i(chunkNumber)]; long offsetWithInChunk = sampleOffsetsWithinChunk[sampleInChunk]; ByteBuffer chunkBuffer; if (chunkBufferSr == null || (chunkBuffer = chunkBufferSr.get()) == null) { try { chunkBuffer = randomAccess.get( chunkOffsets[l2i(chunkNumber)], sampleOffsetsWithinChunk[sampleOffsetsWithinChunk.length - 1] + ssb.getSampleSizeAtIndex(chunkStartSample + sampleOffsetsWithinChunk.length - 1)); cache[chunkNumber] = new SoftReference<ByteBuffer>(chunkBuffer); } catch (IOException e) { LOG.error("", e); throw new IndexOutOfBoundsException(e.getMessage()); } } b = (ByteBuffer) ((ByteBuffer) chunkBuffer.duplicate().position(l2i(offsetWithInChunk))).slice().limit(l2i(ssb.getSampleSizeAtIndex(index))); return b; }
sampleSum = 0; chunkSizes[currentChunkNo - 1] += ssb.getSampleSizeAtIndex(i - 1); long[] sampleOffsetsWithinChunkscurrentChunkNo = sampleOffsetsWithinChunks[currentChunkNo - 1]; int chunkNumsStartSampleNumcurrentChunkNo = chunkNumsStartSampleNum[currentChunkNo - 1]; sampleOffsetsWithinChunkscurrentChunkNo[i - chunkNumsStartSampleNumcurrentChunkNo] = sampleSum; sampleSum += ssb.getSampleSizeAtIndex(i - 1);