mirror of
https://github.com/androidx/media.git
synced 2025-05-15 11:39:56 +08:00
Trim zero padding from EBML string values
Issue #4010 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=190442962
This commit is contained in:
parent
da6ec9cafe
commit
febe604ca1
@ -6,6 +6,8 @@
|
||||
([#3779](https://github.com/google/ExoPlayer/issues/3779)).
|
||||
* Fix ANR issue on Redmi 4X and Redmi Note 4
|
||||
([#4006](https://github.com/google/ExoPlayer/issues/4006)).
|
||||
* Fix handling of zero padded strings when parsing Matroska streams
|
||||
([#4010](https://github.com/google/ExoPlayer/issues/4010)).
|
||||
* MediaSession extension: Omit fast forward and rewind actions when media is not
|
||||
seekable ([#4001](https://github.com/google/ExoPlayer/issues/4001)).
|
||||
|
||||
|
@ -202,10 +202,11 @@ import java.util.Stack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads and returns a string of length {@code byteLength} from the {@link ExtractorInput}.
|
||||
* Reads a string of length {@code byteLength} from the {@link ExtractorInput}. Zero padding is
|
||||
* removed, so the returned string may be shorter than {@code byteLength}.
|
||||
*
|
||||
* @param input The {@link ExtractorInput} from which to read.
|
||||
* @param byteLength The length of the float being read.
|
||||
* @param byteLength The length of the string being read, including zero padding.
|
||||
* @return The read string value.
|
||||
* @throws IOException If an error occurs reading from the input.
|
||||
* @throws InterruptedException If the thread is interrupted.
|
||||
@ -217,7 +218,12 @@ import java.util.Stack;
|
||||
}
|
||||
byte[] stringBytes = new byte[byteLength];
|
||||
input.readFully(stringBytes, 0, byteLength);
|
||||
return new String(stringBytes);
|
||||
// Remove zero padding.
|
||||
int trimmedLength = byteLength;
|
||||
while (trimmedLength > 0 && stringBytes[trimmedLength - 1] == 0) {
|
||||
trimmedLength--;
|
||||
}
|
||||
return new String(stringBytes, 0, trimmedLength);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -89,6 +89,14 @@ public class DefaultEbmlReaderTest {
|
||||
assertEvents(input, expected.events);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringElementWithZeroPadding() throws IOException, InterruptedException {
|
||||
ExtractorInput input = createTestInput(0x42, 0x82, 0x86, 0x41, 0x62, 0x63, 0x00, 0x00, 0x00);
|
||||
TestOutput expected = new TestOutput();
|
||||
expected.stringElement(TestOutput.ID_DOC_TYPE, "Abc");
|
||||
assertEvents(input, expected.events);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStringElementEmpty() throws IOException, InterruptedException {
|
||||
ExtractorInput input = createTestInput(0x42, 0x82, 0x80);
|
||||
|
Loading…
x
Reference in New Issue
Block a user