Search in sources :

Example 11 with DashManifestParser

use of androidx.media3.exoplayer.dash.manifest.DashManifestParser in project media by androidx.

the class DashManifestParserTest method parseMediaPresentationDescription_eventStream.

@Test
public void parseMediaPresentationDescription_eventStream() throws IOException {
    DashManifestParser parser = new DashManifestParser();
    DashManifest manifest = parser.parse(Uri.parse("https://example.com/test.mpd"), TestUtil.getInputStream(ApplicationProvider.getApplicationContext(), SAMPLE_MPD_EVENT_STREAM));
    Period period = manifest.getPeriod(0);
    assertThat(period.eventStreams).hasSize(3);
    // assert text-only event stream
    EventStream eventStream1 = period.eventStreams.get(0);
    assertThat(eventStream1.events.length).isEqualTo(1);
    EventMessage expectedEvent1 = new EventMessage("urn:uuid:XYZY", "call", 10000, 0, "+ 1 800 10101010".getBytes(Charsets.UTF_8));
    assertThat(eventStream1.events[0]).isEqualTo(expectedEvent1);
    assertThat(eventStream1.presentationTimesUs[0]).isEqualTo(0);
    // assert CData-structured event stream
    EventStream eventStream2 = period.eventStreams.get(1);
    assertThat(eventStream2.events.length).isEqualTo(1);
    EventMessage expectedEvent2 = new EventMessage("urn:dvb:iptv:cpm:2014", "", 1500000, 1, Util.getUtf8Bytes("<![CDATA[<BroadcastEvent>\n" + "      <Program crid=\"crid://broadcaster.example.com/ABCDEF\"/>\n" + "      <InstanceDescription>\n" + "      <Title xml:lang=\"en\">The title</Title>\n" + "      <Synopsis xml:lang=\"en\" length=\"medium\">" + "The description</Synopsis>\n" + "      <ParentalGuidance>\n" + "      <mpeg7:ParentalRating href=\"urn:dvb:iptv:rating:2014:15\"/>\n" + "      <mpeg7:Region>GB</mpeg7:Region>\n" + "      </ParentalGuidance>\n" + "      </InstanceDescription>\n" + "      </BroadcastEvent>]]>"));
    assertThat(eventStream2.events[0]).isEqualTo(expectedEvent2);
    assertThat(eventStream2.presentationTimesUs[0]).isEqualTo(300000000);
    // assert xml-structured event stream
    EventStream eventStream3 = period.eventStreams.get(2);
    assertThat(eventStream3.events.length).isEqualTo(1);
    EventMessage expectedEvent3 = new EventMessage("urn:scte:scte35:2014:xml+bin", "", 1000000, 2, Util.getUtf8Bytes("<scte35:Signal>\n" + "         <scte35:Binary>\n" + "         /DAIAAAAAAAAAAAQAAZ/I0VniQAQAgBDVUVJQAAAAH+cAAAAAA==\n" + "         </scte35:Binary>\n" + "       </scte35:Signal>"));
    assertThat(eventStream3.events[0]).isEqualTo(expectedEvent3);
    assertThat(eventStream3.presentationTimesUs[0]).isEqualTo(1000000000);
}
Also used : EventMessage(androidx.media3.extractor.metadata.emsg.EventMessage) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)10 Format (androidx.media3.common.Format)3 TrackGroup (androidx.media3.common.TrackGroup)3 DashManifest (androidx.media3.exoplayer.dash.manifest.DashManifest)3 DashManifestParser (androidx.media3.exoplayer.dash.manifest.DashManifestParser)3 SegmentTimelineElement (androidx.media3.exoplayer.dash.manifest.SegmentBase.SegmentTimelineElement)3 LoaderErrorThrower (androidx.media3.exoplayer.upstream.LoaderErrorThrower)3 FakeDataSource (androidx.media3.test.utils.FakeDataSource)3 StringReader (java.io.StringReader)3 XmlPullParser (org.xmlpull.v1.XmlPullParser)3 MultiSegmentRepresentation (androidx.media3.exoplayer.dash.manifest.Representation.MultiSegmentRepresentation)2 SingleSegmentRepresentation (androidx.media3.exoplayer.dash.manifest.Representation.SingleSegmentRepresentation)2 ChunkHolder (androidx.media3.exoplayer.source.chunk.ChunkHolder)2 FixedTrackSelection (androidx.media3.exoplayer.trackselection.FixedTrackSelection)2 AdaptiveTrackSelection (androidx.media3.exoplayer.trackselection.AdaptiveTrackSelection)1 EventMessage (androidx.media3.extractor.metadata.emsg.EventMessage)1 Random (java.util.Random)1