@Test
public void testStreamInputPacketIndexInvalidAppend() {
fFixture = new StreamInputPacketIndex();
- assertTrue(fFixture.append(new PacketStub(0, 0, -1)));
- assertFalse(fFixture.append(new PacketStub(0, 0, 0)));
- assertFalse(fFixture.append(new PacketStub(0, -1, 0)));
+ assertTrue(fFixture.append(new PacketStub(0, 0, 1)));
+ assertFalse("Same offset", fFixture.append(new PacketStub(0, 1, 2)));
+ assertFalse("Before", fFixture.append(new PacketStub(1, -1, 0)));
+ assertFalse("Empty", fFixture.append(new PacketStub(2, 3, 4) {
+ @Override
+ public long getContentSizeBits() {
+ return 0;
+ }
+
+ @Override
+ public long getPayloadStartBits() {
+ return 0;
+ }
+ }));
}
}
\ No newline at end of file
private final long fTsStart;
private final long fTsEnd;
- public PacketStub(long offset, long start, long end) {
- fOffsetBytes = offset;
+ public PacketStub(long packetNumber, long start, long end) {
+ fOffsetBytes = packetNumber * getPacketSizeBits();
fTsStart = start;
fTsEnd = end;
}
@Override
public long getPacketSizeBits() {
- return 0;
+ return 3;
}
@Override
public long getContentSizeBits() {
- return 0;
+ return 2;
}
@Override
@Override
public long getPayloadStartBits() {
- return 0;
+ return 1;
}
@Override
currentPosBits = pos.getOffsetBits() + pos.getPacketSizeBits();
}
if (currentPosBits < getStreamSizeBits()) {
- fIndex.append(createPacketIndexEntry(currentPosBits));
- return true;
+ return fIndex.append(createPacketIndexEntry(currentPosBits));
}
return false;
}
/*
* Change packet if needed
*/
- if (!fPacketReader.hasMoreEvents()) {
+ while (!fPacketReader.hasMoreEvents()) {
final ICTFPacketDescriptor prevPacket = fPacketReader.getCurrentPacket();
- if (prevPacket != null || fLive) {
- goToNextPacket();
+ if (prevPacket == null) {
+ if (fLive) {
+ goToNextPacket();
+ }
+ break;
}
-
+ goToNextPacket();
}
/*
}
private @Nullable ICTFPacketDescriptor getPacket() {
- if (getPacketIndex() >= fStreamInput.getIndex().size()) {
+ int packetIndex = getPacketIndex();
+ if (packetIndex >= fStreamInput.getIndex().size()) {
return null;
}
- return fStreamInput.getIndex().getElement(getPacketIndex());
+ return fStreamInput.getIndex().getElement(packetIndex);
}
/**
* Validate entries are inserted in monotonic increasing timestamp
* order.
*/
- if (!fEntries.isEmpty() &&
+ if (!fEntries.isEmpty() && ((entryToAdd.getContentSizeBits() <= entryToAdd.getPayloadStartBits()) ||
(entryToAdd.getTimestampBegin() < lastElement().getTimestampBegin() ||
- entryToAdd.getOffsetBytes() <= lastElement().getOffsetBytes())) {
+ entryToAdd.getOffsetBytes() <= lastElement().getOffsetBytes()))) {
return false;
}