mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
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
This commit is contained in:
parent
ed76882271
commit
67567ffa6c
1 changed files with 14 additions and 18 deletions
|
|
@ -263,20 +263,24 @@ public final class TsExtractor implements Extractor {
|
||||||
boolean adaptationFieldExists = (tsPacketHeader & 0x20) != 0;
|
boolean adaptationFieldExists = (tsPacketHeader & 0x20) != 0;
|
||||||
boolean payloadExists = (tsPacketHeader & 0x10) != 0;
|
boolean payloadExists = (tsPacketHeader & 0x10) != 0;
|
||||||
|
|
||||||
|
TsPayloadReader payloadReader = payloadExists ? tsPayloadReaders.get(pid) : null;
|
||||||
|
if (payloadReader == null) {
|
||||||
|
tsPacketBuffer.setPosition(endOfPacket);
|
||||||
|
return RESULT_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
// Discontinuity check.
|
// Discontinuity check.
|
||||||
boolean discontinuityFound = false;
|
|
||||||
if (mode != MODE_HLS) {
|
if (mode != MODE_HLS) {
|
||||||
int continuityCounter = tsPacketHeader & 0xF;
|
int continuityCounter = tsPacketHeader & 0xF;
|
||||||
int previousCounter = continuityCounters.get(pid, continuityCounter - 1);
|
int previousCounter = continuityCounters.get(pid, continuityCounter - 1);
|
||||||
continuityCounters.put(pid, continuityCounter);
|
continuityCounters.put(pid, continuityCounter);
|
||||||
if (previousCounter == continuityCounter) {
|
if (previousCounter == continuityCounter) {
|
||||||
if (payloadExists) {
|
// Duplicate packet found.
|
||||||
// Duplicate packet found.
|
tsPacketBuffer.setPosition(endOfPacket);
|
||||||
tsPacketBuffer.setPosition(endOfPacket);
|
return RESULT_CONTINUE;
|
||||||
return RESULT_CONTINUE;
|
|
||||||
}
|
|
||||||
} else if (continuityCounter != ((previousCounter + 1) & 0xF)) {
|
} 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.
|
// Read the payload.
|
||||||
if (payloadExists) {
|
tsPacketBuffer.setLimit(endOfPacket);
|
||||||
TsPayloadReader payloadReader = tsPayloadReaders.get(pid);
|
payloadReader.consume(tsPacketBuffer, payloadUnitStartIndicator);
|
||||||
if (payloadReader != null) {
|
tsPacketBuffer.setLimit(limit);
|
||||||
if (discontinuityFound) {
|
|
||||||
payloadReader.seek();
|
|
||||||
}
|
|
||||||
tsPacketBuffer.setLimit(endOfPacket);
|
|
||||||
payloadReader.consume(tsPacketBuffer, payloadUnitStartIndicator);
|
|
||||||
tsPacketBuffer.setLimit(limit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tsPacketBuffer.setPosition(endOfPacket);
|
tsPacketBuffer.setPosition(endOfPacket);
|
||||||
return RESULT_CONTINUE;
|
return RESULT_CONTINUE;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue