mirror of
https://github.com/samsonjs/media.git
synced 2026-04-18 13:25:47 +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 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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue