MatroskaExtractor naming cleanup II

- Remove "lacing" from member variables. They're used even if
  there is no lacing (and the fact that lacing is the way of
  getting multiple samples into a block isn't important).

Issue: #3026
PiperOrigin-RevId: 284152447
This commit is contained in:
olly 2019-12-06 11:09:44 +00:00 committed by Oliver Woodman
parent 5973b76481
commit 22f25c57bb

View File

@ -367,9 +367,9 @@ public class MatroskaExtractor implements Extractor {
private int blockState; private int blockState;
private long blockTimeUs; private long blockTimeUs;
private long blockDurationUs; private long blockDurationUs;
private int blockLacingSampleIndex; private int blockSampleIndex;
private int blockLacingSampleCount; private int blockSampleCount;
private int[] blockLacingSampleSizes; private int[] blockSampleSizes;
private int blockTrackNumber; private int blockTrackNumber;
private int blockTrackNumberLength; private int blockTrackNumberLength;
@C.BufferFlags @C.BufferFlags
@ -1093,9 +1093,9 @@ public class MatroskaExtractor implements Extractor {
readScratch(input, 3); readScratch(input, 3);
int lacing = (scratch.data[2] & 0x06) >> 1; int lacing = (scratch.data[2] & 0x06) >> 1;
if (lacing == LACING_NONE) { if (lacing == LACING_NONE) {
blockLacingSampleCount = 1; blockSampleCount = 1;
blockLacingSampleSizes = ensureArrayCapacity(blockLacingSampleSizes, 1); blockSampleSizes = ensureArrayCapacity(blockSampleSizes, 1);
blockLacingSampleSizes[0] = contentSize - blockTrackNumberLength - 3; blockSampleSizes[0] = contentSize - blockTrackNumberLength - 3;
} else { } else {
if (id != ID_SIMPLE_BLOCK) { if (id != ID_SIMPLE_BLOCK) {
throw new ParserException("Lacing only supported in SimpleBlocks."); throw new ParserException("Lacing only supported in SimpleBlocks.");
@ -1103,33 +1103,32 @@ public class MatroskaExtractor implements Extractor {
// Read the sample count (1 byte). // Read the sample count (1 byte).
readScratch(input, 4); readScratch(input, 4);
blockLacingSampleCount = (scratch.data[3] & 0xFF) + 1; blockSampleCount = (scratch.data[3] & 0xFF) + 1;
blockLacingSampleSizes = blockSampleSizes = ensureArrayCapacity(blockSampleSizes, blockSampleCount);
ensureArrayCapacity(blockLacingSampleSizes, blockLacingSampleCount);
if (lacing == LACING_FIXED_SIZE) { if (lacing == LACING_FIXED_SIZE) {
int blockLacingSampleSize = int blockLacingSampleSize =
(contentSize - blockTrackNumberLength - 4) / blockLacingSampleCount; (contentSize - blockTrackNumberLength - 4) / blockSampleCount;
Arrays.fill(blockLacingSampleSizes, 0, blockLacingSampleCount, blockLacingSampleSize); Arrays.fill(blockSampleSizes, 0, blockSampleCount, blockLacingSampleSize);
} else if (lacing == LACING_XIPH) { } else if (lacing == LACING_XIPH) {
int totalSamplesSize = 0; int totalSamplesSize = 0;
int headerSize = 4; int headerSize = 4;
for (int sampleIndex = 0; sampleIndex < blockLacingSampleCount - 1; sampleIndex++) { for (int sampleIndex = 0; sampleIndex < blockSampleCount - 1; sampleIndex++) {
blockLacingSampleSizes[sampleIndex] = 0; blockSampleSizes[sampleIndex] = 0;
int byteValue; int byteValue;
do { do {
readScratch(input, ++headerSize); readScratch(input, ++headerSize);
byteValue = scratch.data[headerSize - 1] & 0xFF; byteValue = scratch.data[headerSize - 1] & 0xFF;
blockLacingSampleSizes[sampleIndex] += byteValue; blockSampleSizes[sampleIndex] += byteValue;
} while (byteValue == 0xFF); } while (byteValue == 0xFF);
totalSamplesSize += blockLacingSampleSizes[sampleIndex]; totalSamplesSize += blockSampleSizes[sampleIndex];
} }
blockLacingSampleSizes[blockLacingSampleCount - 1] = blockSampleSizes[blockSampleCount - 1] =
contentSize - blockTrackNumberLength - headerSize - totalSamplesSize; contentSize - blockTrackNumberLength - headerSize - totalSamplesSize;
} else if (lacing == LACING_EBML) { } else if (lacing == LACING_EBML) {
int totalSamplesSize = 0; int totalSamplesSize = 0;
int headerSize = 4; int headerSize = 4;
for (int sampleIndex = 0; sampleIndex < blockLacingSampleCount - 1; sampleIndex++) { for (int sampleIndex = 0; sampleIndex < blockSampleCount - 1; sampleIndex++) {
blockLacingSampleSizes[sampleIndex] = 0; blockSampleSizes[sampleIndex] = 0;
readScratch(input, ++headerSize); readScratch(input, ++headerSize);
if (scratch.data[headerSize - 1] == 0) { if (scratch.data[headerSize - 1] == 0) {
throw new ParserException("No valid varint length mask found"); throw new ParserException("No valid varint length mask found");
@ -1157,11 +1156,13 @@ public class MatroskaExtractor implements Extractor {
throw new ParserException("EBML lacing sample size out of range."); throw new ParserException("EBML lacing sample size out of range.");
} }
int intReadValue = (int) readValue; int intReadValue = (int) readValue;
blockLacingSampleSizes[sampleIndex] = sampleIndex == 0 blockSampleSizes[sampleIndex] =
? intReadValue : blockLacingSampleSizes[sampleIndex - 1] + intReadValue; sampleIndex == 0
totalSamplesSize += blockLacingSampleSizes[sampleIndex]; ? intReadValue
: blockSampleSizes[sampleIndex - 1] + intReadValue;
totalSamplesSize += blockSampleSizes[sampleIndex];
} }
blockLacingSampleSizes[blockLacingSampleCount - 1] = blockSampleSizes[blockSampleCount - 1] =
contentSize - blockTrackNumberLength - headerSize - totalSamplesSize; contentSize - blockTrackNumberLength - headerSize - totalSamplesSize;
} else { } else {
// Lacing is always in the range 0--3. // Lacing is always in the range 0--3.
@ -1177,23 +1178,23 @@ public class MatroskaExtractor implements Extractor {
blockFlags = (isKeyframe ? C.BUFFER_FLAG_KEY_FRAME : 0) blockFlags = (isKeyframe ? C.BUFFER_FLAG_KEY_FRAME : 0)
| (isInvisible ? C.BUFFER_FLAG_DECODE_ONLY : 0); | (isInvisible ? C.BUFFER_FLAG_DECODE_ONLY : 0);
blockState = BLOCK_STATE_DATA; blockState = BLOCK_STATE_DATA;
blockLacingSampleIndex = 0; blockSampleIndex = 0;
} }
if (id == ID_SIMPLE_BLOCK) { if (id == ID_SIMPLE_BLOCK) {
// For SimpleBlock, we have metadata for each sample here. // For SimpleBlock, we have metadata for each sample here.
while (blockLacingSampleIndex < blockLacingSampleCount) { while (blockSampleIndex < blockSampleCount) {
writeSampleData(input, track, blockLacingSampleSizes[blockLacingSampleIndex]); writeSampleData(input, track, blockSampleSizes[blockSampleIndex]);
long sampleTimeUs = blockTimeUs long sampleTimeUs =
+ (blockLacingSampleIndex * track.defaultSampleDurationNs) / 1000; blockTimeUs + (blockSampleIndex * track.defaultSampleDurationNs) / 1000;
commitSampleToOutput(track, sampleTimeUs); commitSampleToOutput(track, sampleTimeUs);
blockLacingSampleIndex++; blockSampleIndex++;
} }
blockState = BLOCK_STATE_START; blockState = BLOCK_STATE_START;
} else { } else {
// For Block, we send the metadata at the end of the BlockGroup element since we'll know // For Block, we send the metadata at the end of the BlockGroup element since we'll know
// if the sample is a keyframe or not only at that point. // if the sample is a keyframe or not only at that point.
writeSampleData(input, track, blockLacingSampleSizes[0]); writeSampleData(input, track, blockSampleSizes[0]);
} }
break; break;