/** * Tests that {@link EventSampleStream#skipData(long)} will skip until the given position, and * the next {@link EventSampleStream#readData(FormatHolder, DecoderInputBuffer, boolean)} call * will return sample data from that position. */ @Test public void testSkipDataThenReadDataReturnDataFromSkippedPosition() { long presentationTimeUs1 = 1000000; long presentationTimeUs2 = 2000000; EventMessage eventMessage1 = newEventMessageWithIdAndTime(1, presentationTimeUs1); EventMessage eventMessage2 = newEventMessageWithIdAndTime(2, presentationTimeUs2); EventStream eventStream = new EventStream(SCHEME_ID, VALUE, TIME_SCALE, new long[] {presentationTimeUs1, presentationTimeUs2}, new EventMessage[] {eventMessage1, eventMessage2}); EventSampleStream sampleStream = new EventSampleStream(eventStream, FORMAT, false); // first read - read format readData(sampleStream); int skipped = sampleStream.skipData(presentationTimeUs2); int result = readData(sampleStream); assertThat(skipped).isEqualTo(1); assertThat(result).isEqualTo(C.RESULT_BUFFER_READ); assertThat(inputBuffer.data.array()) .isEqualTo(getEncodedMessage(eventMessage2)); }
/** * Tests that {@link EventSampleStream#updateEventStream(EventStream, boolean)} will update the * underlying event stream, but keep the timestamp the stream has skipped to, so the next * {@link EventSampleStream#readData(FormatHolder, DecoderInputBuffer, boolean)} call * will return sample data from the skipped position. */ @Test public void testSkipDataThenUpdateStreamContinueToReadFromSkippedPosition() { long presentationTimeUs1 = 1000000; long presentationTimeUs2 = 2000000; long presentationTimeUs3 = 3000000; EventMessage eventMessage1 = newEventMessageWithIdAndTime(1, presentationTimeUs1); EventMessage eventMessage2 = newEventMessageWithIdAndTime(2, presentationTimeUs2); EventMessage eventMessage3 = newEventMessageWithIdAndTime(3, presentationTimeUs3); EventStream eventStream1 = new EventStream(SCHEME_ID, VALUE, TIME_SCALE, new long[] {presentationTimeUs1, presentationTimeUs2}, new EventMessage[] {eventMessage1, eventMessage2}); EventStream eventStream2 = new EventStream(SCHEME_ID, VALUE, TIME_SCALE, new long[] {presentationTimeUs1, presentationTimeUs2, presentationTimeUs3}, new EventMessage[] {eventMessage1, eventMessage2, eventMessage3}); EventSampleStream sampleStream = new EventSampleStream(eventStream1, FORMAT, true); // first read - read format readData(sampleStream); sampleStream.skipData(presentationTimeUs2 + 1); sampleStream.updateEventStream(eventStream2, true); int result = readData(sampleStream); assertThat(result).isEqualTo(C.RESULT_BUFFER_READ); assertThat(inputBuffer.data.array()) .isEqualTo(getEncodedMessage(eventMessage3)); }
sampleStream.skipData(presentationTimeUs2 + 1);