use of androidx.media3.exoplayer.dash.manifest.DashManifest in project media by androidx.
the class DashMediaPeriodTest method cea608AccessibilityDescriptor_createsCea608TrackGroup.
@Test
public void cea608AccessibilityDescriptor_createsCea608TrackGroup() throws IOException {
DashManifest manifest = parseManifest("media/mpd/sample_mpd_cea_608_accessibility");
DashMediaPeriod dashMediaPeriod = createDashMediaPeriod(manifest, 0);
List<AdaptationSet> adaptationSets = manifest.getPeriod(0).adaptationSets;
// We expect two adaptation sets. The first containing the video representations, and the second
// containing the embedded CEA-608 tracks.
Format.Builder cea608FormatBuilder = new Format.Builder().setSampleMimeType(MimeTypes.APPLICATION_CEA608);
TrackGroupArray expectedTrackGroups = new TrackGroupArray(new TrackGroup(/* id= */
"123", adaptationSets.get(0).representations.get(0).format, adaptationSets.get(0).representations.get(1).format), new TrackGroup(/* id= */
"123:cc", cea608FormatBuilder.setId("123:cea608:1").setLanguage("eng").setAccessibilityChannel(1).build(), cea608FormatBuilder.setId("123:cea608:3").setLanguage("deu").setAccessibilityChannel(3).build()));
MediaPeriodAsserts.assertTrackGroups(dashMediaPeriod, expectedTrackGroups);
}
use of androidx.media3.exoplayer.dash.manifest.DashManifest in project media by androidx.
the class DashManifestParserTest method parseMediaPresentationDescription_images.
@Test
public void parseMediaPresentationDescription_images() throws IOException {
DashManifestParser parser = new DashManifestParser();
DashManifest manifest = parser.parse(Uri.parse("https://example.com/test.mpd"), TestUtil.getInputStream(ApplicationProvider.getApplicationContext(), SAMPLE_MPD_IMAGES));
AdaptationSet adaptationSet = manifest.getPeriod(0).adaptationSets.get(0);
Format format = adaptationSet.representations.get(0).format;
assertThat(format.sampleMimeType).isEqualTo("image/jpeg");
assertThat(format.width).isEqualTo(320);
assertThat(format.height).isEqualTo(180);
}
use of androidx.media3.exoplayer.dash.manifest.DashManifest 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);
}
use of androidx.media3.exoplayer.dash.manifest.DashManifest in project media by androidx.
the class DashWidevineOfflineTest method downloadLicense.
private void downloadLicense() throws IOException {
DataSource dataSource = httpDataSourceFactory.createDataSource();
DashManifest dashManifest = DashUtil.loadManifest(dataSource, Uri.parse(DashTestData.WIDEVINE_H264_MANIFEST));
Format format = DashUtil.loadFormatWithDrmInitData(dataSource, dashManifest.getPeriod(0));
offlineLicenseKeySetId = offlineLicenseHelper.downloadLicense(format);
assertThat(offlineLicenseKeySetId).isNotNull();
assertThat(offlineLicenseKeySetId.length).isGreaterThan(0);
testRunner.setOfflineLicenseKeySetId(offlineLicenseKeySetId);
}
Aggregations