Commit 67567ffa by olly Committed by Oliver Woodman

TsExtractor: Do less work if payload reader does not exist

There's no reason to perform the discontinuity check or skip
the adaptation field if we don't have a payload reader for
the packet.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=169374609
parent ed768822
......@@ -263,20 +263,24 @@ public final class TsExtractor implements Extractor {
boolean adaptationFieldExists = (tsPacketHeader & 0x20) != 0;
boolean payloadExists = (tsPacketHeader & 0x10) != 0;
TsPayloadReader payloadReader = payloadExists ? tsPayloadReaders.get(pid) : null;
if (payloadReader == null) {
tsPacketBuffer.setPosition(endOfPacket);
return RESULT_CONTINUE;
}
// Discontinuity check.
boolean discontinuityFound = false;
if (mode != MODE_HLS) {
int continuityCounter = tsPacketHeader & 0xF;
int previousCounter = continuityCounters.get(pid, continuityCounter - 1);
continuityCounters.put(pid, continuityCounter);
if (previousCounter == continuityCounter) {
if (payloadExists) {
// Duplicate packet found.
tsPacketBuffer.setPosition(endOfPacket);
return RESULT_CONTINUE;
}
// Duplicate packet found.
tsPacketBuffer.setPosition(endOfPacket);
return RESULT_CONTINUE;
} else if (continuityCounter != ((previousCounter + 1) & 0xF)) {
discontinuityFound = true;
// Discontinuity found.
payloadReader.seek();
}
}
......@@ -287,17 +291,9 @@ public final class TsExtractor implements Extractor {
}
// Read the payload.
if (payloadExists) {
TsPayloadReader payloadReader = tsPayloadReaders.get(pid);
if (payloadReader != null) {
if (discontinuityFound) {
payloadReader.seek();
}
tsPacketBuffer.setLimit(endOfPacket);
payloadReader.consume(tsPacketBuffer, payloadUnitStartIndicator);
tsPacketBuffer.setLimit(limit);
}
}
tsPacketBuffer.setLimit(endOfPacket);
payloadReader.consume(tsPacketBuffer, payloadUnitStartIndicator);
tsPacketBuffer.setLimit(limit);
tsPacketBuffer.setPosition(endOfPacket);
return RESULT_CONTINUE;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment