summaryrefslogtreecommitdiff
path: root/tree/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/FlacFrameReaderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tree/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/FlacFrameReaderTest.java')
-rw-r--r--tree/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/FlacFrameReaderTest.java322
1 files changed, 0 insertions, 322 deletions
diff --git a/tree/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/FlacFrameReaderTest.java b/tree/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/FlacFrameReaderTest.java
deleted file mode 100644
index 9150493e..00000000
--- a/tree/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/FlacFrameReaderTest.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.google.android.exoplayer2.extractor;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import com.google.android.exoplayer2.extractor.FlacFrameReader.SampleNumberHolder;
-import com.google.android.exoplayer2.extractor.FlacMetadataReader.FlacStreamMetadataHolder;
-import com.google.android.exoplayer2.testutil.FakeExtractorInput;
-import com.google.android.exoplayer2.testutil.TestUtil;
-import com.google.android.exoplayer2.util.FlacConstants;
-import com.google.android.exoplayer2.util.ParsableByteArray;
-import java.io.IOException;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Unit tests for {@link FlacFrameReader}.
- *
- * <p>Some expected results in these tests have been retrieved using the <a
- * href="https://xiph.org/flac/documentation_tools_flac.html">flac</a> command.
- */
-@RunWith(AndroidJUnit4.class)
-public class FlacFrameReaderTest {
-
- @Test
- public void checkAndReadFrameHeader_validData_updatesPosition() throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
- int frameStartMarker = FlacMetadataReader.getFrameStartMarker(input);
- ParsableByteArray scratch = new ParsableByteArray(FlacConstants.MAX_FRAME_HEADER_SIZE);
- input.read(scratch.data, 0, FlacConstants.MAX_FRAME_HEADER_SIZE);
-
- FlacFrameReader.checkAndReadFrameHeader(
- scratch,
- streamMetadataHolder.flacStreamMetadata,
- frameStartMarker,
- new SampleNumberHolder());
-
- assertThat(scratch.getPosition()).isEqualTo(FlacConstants.MIN_FRAME_HEADER_SIZE);
- }
-
- @Test
- public void checkAndReadFrameHeader_validData_isTrue() throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
- int frameStartMarker = FlacMetadataReader.getFrameStartMarker(input);
- ParsableByteArray scratch = new ParsableByteArray(FlacConstants.MAX_FRAME_HEADER_SIZE);
- input.read(scratch.data, 0, FlacConstants.MAX_FRAME_HEADER_SIZE);
-
- boolean result =
- FlacFrameReader.checkAndReadFrameHeader(
- scratch,
- streamMetadataHolder.flacStreamMetadata,
- frameStartMarker,
- new SampleNumberHolder());
-
- assertThat(result).isTrue();
- }
-
- @Test
- public void checkAndReadFrameHeader_validData_writesSampleNumber() throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
- int frameStartMarker = FlacMetadataReader.getFrameStartMarker(input);
- // Skip first frame.
- input.skip(5030);
- ParsableByteArray scratch = new ParsableByteArray(FlacConstants.MAX_FRAME_HEADER_SIZE);
- input.read(scratch.data, 0, FlacConstants.MAX_FRAME_HEADER_SIZE);
- SampleNumberHolder sampleNumberHolder = new SampleNumberHolder();
-
- FlacFrameReader.checkAndReadFrameHeader(
- scratch, streamMetadataHolder.flacStreamMetadata, frameStartMarker, sampleNumberHolder);
-
- assertThat(sampleNumberHolder.sampleNumber).isEqualTo(4096);
- }
-
- @Test
- public void checkAndReadFrameHeader_invalidData_isFalse() throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
- ParsableByteArray scratch = new ParsableByteArray(FlacConstants.MAX_FRAME_HEADER_SIZE);
- input.read(scratch.data, 0, FlacConstants.MAX_FRAME_HEADER_SIZE);
-
- // The first bytes of the frame are not equal to the frame start marker.
- boolean result =
- FlacFrameReader.checkAndReadFrameHeader(
- scratch,
- streamMetadataHolder.flacStreamMetadata,
- /* frameStartMarker= */ -1,
- new SampleNumberHolder());
-
- assertThat(result).isFalse();
- }
-
- @Test
- public void checkFrameHeaderFromPeek_validData_doesNotUpdatePositions() throws Exception {
- String file = "flac/bear_one_metadata_block.flac";
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input = buildExtractorInputReadingFromFirstFrame(file, streamMetadataHolder);
- int frameStartMarker = FlacMetadataReader.getFrameStartMarker(input);
- long peekPosition = input.getPosition();
- // Set read position to 0.
- input = buildExtractorInput(file);
- input.advancePeekPosition((int) peekPosition);
-
- FlacFrameReader.checkFrameHeaderFromPeek(
- input, streamMetadataHolder.flacStreamMetadata, frameStartMarker, new SampleNumberHolder());
-
- assertThat(input.getPosition()).isEqualTo(0);
- assertThat(input.getPeekPosition()).isEqualTo(peekPosition);
- }
-
- @Test
- public void checkFrameHeaderFromPeek_validData_isTrue() throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
- int frameStartMarker = FlacMetadataReader.getFrameStartMarker(input);
-
- boolean result =
- FlacFrameReader.checkFrameHeaderFromPeek(
- input,
- streamMetadataHolder.flacStreamMetadata,
- frameStartMarker,
- new SampleNumberHolder());
-
- assertThat(result).isTrue();
- }
-
- @Test
- public void checkFrameHeaderFromPeek_validData_writesSampleNumber() throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
- int frameStartMarker = FlacMetadataReader.getFrameStartMarker(input);
- // Skip first frame.
- input.skip(5030);
- SampleNumberHolder sampleNumberHolder = new SampleNumberHolder();
-
- FlacFrameReader.checkFrameHeaderFromPeek(
- input, streamMetadataHolder.flacStreamMetadata, frameStartMarker, sampleNumberHolder);
-
- assertThat(sampleNumberHolder.sampleNumber).isEqualTo(4096);
- }
-
- @Test
- public void checkFrameHeaderFromPeek_invalidData_isFalse() throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
-
- // The first bytes of the frame are not equal to the frame start marker.
- boolean result =
- FlacFrameReader.checkFrameHeaderFromPeek(
- input,
- streamMetadataHolder.flacStreamMetadata,
- /* frameStartMarker= */ -1,
- new SampleNumberHolder());
-
- assertThat(result).isFalse();
- }
-
- @Test
- public void checkFrameHeaderFromPeek_invalidData_doesNotUpdatePositions() throws Exception {
- String file = "flac/bear_one_metadata_block.flac";
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input = buildExtractorInputReadingFromFirstFrame(file, streamMetadataHolder);
- long peekPosition = input.getPosition();
- // Set read position to 0.
- input = buildExtractorInput(file);
- input.advancePeekPosition((int) peekPosition);
-
- // The first bytes of the frame are not equal to the frame start marker.
- FlacFrameReader.checkFrameHeaderFromPeek(
- input,
- streamMetadataHolder.flacStreamMetadata,
- /* frameStartMarker= */ -1,
- new SampleNumberHolder());
-
- assertThat(input.getPosition()).isEqualTo(0);
- assertThat(input.getPeekPosition()).isEqualTo(peekPosition);
- }
-
- @Test
- public void getFirstSampleNumber_doesNotUpdateReadPositionAndAlignsPeekPosition()
- throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
- long initialReadPosition = input.getPosition();
- // Advance peek position after block size bits.
- input.advancePeekPosition(FlacConstants.MAX_FRAME_HEADER_SIZE);
-
- FlacFrameReader.getFirstSampleNumber(input, streamMetadataHolder.flacStreamMetadata);
-
- assertThat(input.getPosition()).isEqualTo(initialReadPosition);
- assertThat(input.getPeekPosition()).isEqualTo(input.getPosition());
- }
-
- @Test
- public void getFirstSampleNumber_returnsSampleNumber() throws Exception {
- FlacStreamMetadataHolder streamMetadataHolder =
- new FlacStreamMetadataHolder(/* flacStreamMetadata= */ null);
- ExtractorInput input =
- buildExtractorInputReadingFromFirstFrame(
- "flac/bear_one_metadata_block.flac", streamMetadataHolder);
- // Skip first frame.
- input.skip(5030);
-
- long result =
- FlacFrameReader.getFirstSampleNumber(input, streamMetadataHolder.flacStreamMetadata);
-
- assertThat(result).isEqualTo(4096);
- }
-
- @Test
- public void readFrameBlockSizeSamplesFromKey_keyIs1_returnsCorrectBlockSize() {
- int result =
- FlacFrameReader.readFrameBlockSizeSamplesFromKey(
- new ParsableByteArray(/* limit= */ 0), /* blockSizeKey= */ 1);
-
- assertThat(result).isEqualTo(192);
- }
-
- @Test
- public void readFrameBlockSizeSamplesFromKey_keyBetween2and5_returnsCorrectBlockSize() {
- int result =
- FlacFrameReader.readFrameBlockSizeSamplesFromKey(
- new ParsableByteArray(/* limit= */ 0), /* blockSizeKey= */ 3);
-
- assertThat(result).isEqualTo(1152);
- }
-
- @Test
- public void readFrameBlockSizeSamplesFromKey_keyBetween6And7_returnsCorrectBlockSize()
- throws Exception {
- ExtractorInput input = buildExtractorInput("flac/bear_one_metadata_block.flac");
- // Skip to block size bits of last frame.
- input.skipFully(164033);
- ParsableByteArray scratch = new ParsableByteArray(2);
- input.readFully(scratch.data, 0, 2);
-
- int result = FlacFrameReader.readFrameBlockSizeSamplesFromKey(scratch, /* blockSizeKey= */ 7);
-
- assertThat(result).isEqualTo(496);
- }
-
- @Test
- public void readFrameBlockSizeSamplesFromKey_keyBetween8and15_returnsCorrectBlockSize() {
- int result =
- FlacFrameReader.readFrameBlockSizeSamplesFromKey(
- new ParsableByteArray(/* limit= */ 0), /* blockSizeKey= */ 11);
-
- assertThat(result).isEqualTo(2048);
- }
-
- @Test
- public void readFrameBlockSizeSamplesFromKey_invalidKey_returnsCorrectBlockSize() {
- int result =
- FlacFrameReader.readFrameBlockSizeSamplesFromKey(
- new ParsableByteArray(/* limit= */ 0), /* blockSizeKey= */ 25);
-
- assertThat(result).isEqualTo(-1);
- }
-
- private static ExtractorInput buildExtractorInput(String file) throws IOException {
- byte[] fileData = TestUtil.getByteArray(ApplicationProvider.getApplicationContext(), file);
- return new FakeExtractorInput.Builder().setData(fileData).build();
- }
-
- private ExtractorInput buildExtractorInputReadingFromFirstFrame(
- String file, FlacStreamMetadataHolder streamMetadataHolder) throws IOException {
- ExtractorInput input = buildExtractorInput(file);
-
- input.skipFully(FlacConstants.STREAM_MARKER_SIZE);
-
- boolean lastMetadataBlock = false;
- while (!lastMetadataBlock) {
- lastMetadataBlock = FlacMetadataReader.readMetadataBlock(input, streamMetadataHolder);
- }
-
- return input;
- }
-}