Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b041c59f
authored
Jul 23, 2020
by
bachinger
Committed by
Oliver Woodman
Jul 24, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Use manifest assets instead of building manifests with code
PiperOrigin-RevId: 322739943
parent
6d92eebe
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
216 additions
and
267 deletions
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaPeriodTest.java
testdata/src/test/assets/mpd/sample_mpd_cea_608_accessibility
testdata/src/test/assets/mpd/sample_mpd_cea_708_accessibility
testdata/src/test/assets/mpd/sample_mpd_stream_keys
testdata/src/test/assets/mpd/sample_mpd_switching_and_trick_play_property
testdata/src/test/assets/mpd/sample_mpd_switching_property
testdata/src/test/assets/mpd/sample_mpd_trick_play_property
library/dash/src/test/java/com/google/android/exoplayer2/source/dash/DashMediaPeriodTest.java
View file @
b041c59f
...
...
@@ -18,9 +18,8 @@ package com.google.android.exoplayer2.source.dash;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
android.net.Uri
;
import
androidx.
annotation.Nullable
;
import
androidx.
test.core.app.ApplicationProvider
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.Format
;
import
com.google.android.exoplayer2.drm.DrmSessionEventListener
;
import
com.google.android.exoplayer2.drm.DrmSessionManager
;
...
...
@@ -32,19 +31,16 @@ import com.google.android.exoplayer2.source.TrackGroupArray;
import
com.google.android.exoplayer2.source.dash.PlayerEmsgHandler.PlayerEmsgCallback
;
import
com.google.android.exoplayer2.source.dash.manifest.AdaptationSet
;
import
com.google.android.exoplayer2.source.dash.manifest.DashManifest
;
import
com.google.android.exoplayer2.source.dash.manifest.Descriptor
;
import
com.google.android.exoplayer2.source.dash.manifest.Period
;
import
com.google.android.exoplayer2.source.dash.manifest.Representation
;
import
com.google.android.exoplayer2.source.dash.manifest.SegmentBase.SingleSegmentBase
;
import
com.google.android.exoplayer2.source.dash.manifest.UtcTimingElement
;
import
com.google.android.exoplayer2.source.dash.manifest.DashManifestParser
;
import
com.google.android.exoplayer2.testutil.MediaPeriodAsserts
;
import
com.google.android.exoplayer2.testutil.TestUtil
;
import
com.google.android.exoplayer2.upstream.Allocator
;
import
com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy
;
import
com.google.android.exoplayer2.upstream.LoaderErrorThrower
;
import
com.google.android.exoplayer2.upstream.TransferListener
;
import
com.google.android.exoplayer2.util.MimeTypes
;
import
java.
util.Arrays
;
import
java.
util.Collections
;
import
java.
io.IOException
;
import
java.
io.InputStream
;
import
java.util.List
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -54,7 +50,7 @@ import org.junit.runner.RunWith;
public
final
class
DashMediaPeriodTest
{
@Test
public
void
getStreamKeys_isCompatibleWithDashManifestFilter
()
{
public
void
getStreamKeys_isCompatibleWithDashManifestFilter
()
throws
IOException
{
// Test manifest which covers various edge cases:
// - Multiple periods.
// - Single and multiple representations per adaptation set.
...
...
@@ -62,54 +58,7 @@ public final class DashMediaPeriodTest {
// - Embedded track groups.
// All cases are deliberately combined in one test to catch potential indexing problems which
// only occur in combination.
DashManifest
manifest
=
createDashManifest
(
createPeriod
(
createAdaptationSet
(
/* id= */
0
,
C
.
TRACK_TYPE_VIDEO
,
/* descriptor= */
null
,
createVideoRepresentation
(
/* bitrate= */
1000000
))),
createPeriod
(
createAdaptationSet
(
/* id= */
100
,
C
.
TRACK_TYPE_VIDEO
,
createSwitchDescriptor
(
/* ids...= */
103
,
104
),
createVideoRepresentationWithInbandEventStream
(
/* bitrate= */
200000
),
createVideoRepresentationWithInbandEventStream
(
/* bitrate= */
400000
),
createVideoRepresentationWithInbandEventStream
(
/* bitrate= */
600000
)),
createAdaptationSet
(
/* id= */
101
,
C
.
TRACK_TYPE_AUDIO
,
createSwitchDescriptor
(
/* ids...= */
102
),
createAudioRepresentation
(
/* bitrate= */
48000
),
createAudioRepresentation
(
/* bitrate= */
96000
)),
createAdaptationSet
(
/* id= */
102
,
C
.
TRACK_TYPE_AUDIO
,
createSwitchDescriptor
(
/* ids...= */
101
),
createAudioRepresentation
(
/* bitrate= */
256000
)),
createAdaptationSet
(
/* id= */
103
,
C
.
TRACK_TYPE_VIDEO
,
createSwitchDescriptor
(
/* ids...= */
100
,
104
),
createVideoRepresentationWithInbandEventStream
(
/* bitrate= */
800000
),
createVideoRepresentationWithInbandEventStream
(
/* bitrate= */
1000000
)),
createAdaptationSet
(
/* id= */
104
,
C
.
TRACK_TYPE_VIDEO
,
createSwitchDescriptor
(
/* ids...= */
100
,
103
),
createVideoRepresentationWithInbandEventStream
(
/* bitrate= */
2000000
)),
createAdaptationSet
(
/* id= */
105
,
C
.
TRACK_TYPE_TEXT
,
/* descriptor= */
null
,
createTextRepresentation
(
/* language= */
"eng"
)),
createAdaptationSet
(
/* id= */
105
,
C
.
TRACK_TYPE_TEXT
,
/* descriptor= */
null
,
createTextRepresentation
(
/* language= */
"ger"
))));
DashManifest
manifest
=
parseManifest
(
"mpd/sample_mpd_stream_keys"
);
// Ignore embedded metadata as we don't want to select primary group just to get embedded track.
MediaPeriodAsserts
.
assertGetStreamKeysAndManifestFilterIntegration
(
...
...
@@ -120,32 +69,8 @@ public final class DashMediaPeriodTest {
}
@Test
public
void
adaptationSetSwitchingProperty_mergesTrackGroups
()
{
DashManifest
manifest
=
createDashManifest
(
createPeriod
(
createAdaptationSet
(
/* id= */
0
,
C
.
TRACK_TYPE_VIDEO
,
createSwitchDescriptor
(
/* ids...= */
1
,
2
),
createVideoRepresentation
(
/* bitrate= */
0
),
createVideoRepresentation
(
/* bitrate= */
1
)),
createAdaptationSet
(
/* id= */
3
,
C
.
TRACK_TYPE_VIDEO
,
/* descriptor= */
null
,
createVideoRepresentation
(
/* bitrate= */
300
)),
createAdaptationSet
(
/* id= */
2
,
C
.
TRACK_TYPE_VIDEO
,
createSwitchDescriptor
(
/* ids...= */
0
,
1
),
createVideoRepresentation
(
/* bitrate= */
200
),
createVideoRepresentation
(
/* bitrate= */
201
)),
createAdaptationSet
(
/* id= */
1
,
C
.
TRACK_TYPE_VIDEO
,
createSwitchDescriptor
(
/* ids...= */
0
,
2
),
createVideoRepresentation
(
/* bitrate= */
100
))));
public
void
adaptationSetSwitchingProperty_mergesTrackGroups
()
throws
IOException
{
DashManifest
manifest
=
parseManifest
(
"mpd/sample_mpd_switching_property"
);
DashMediaPeriod
dashMediaPeriod
=
createDashMediaPeriod
(
manifest
,
0
);
List
<
AdaptationSet
>
adaptationSets
=
manifest
.
getPeriod
(
0
).
adaptationSets
;
...
...
@@ -165,32 +90,8 @@ public final class DashMediaPeriodTest {
}
@Test
public
void
trickPlayProperty_mergesTrackGroups
()
{
DashManifest
manifest
=
createDashManifest
(
createPeriod
(
createAdaptationSet
(
/* id= */
0
,
C
.
TRACK_TYPE_VIDEO
,
createTrickPlayDescriptor
(
/* mainAdaptationSetId= */
1
),
createVideoRepresentation
(
/* bitrate= */
0
),
createVideoRepresentation
(
/* bitrate= */
1
)),
createAdaptationSet
(
/* id= */
1
,
C
.
TRACK_TYPE_VIDEO
,
/* descriptor= */
null
,
createVideoRepresentation
(
/* bitrate= */
100
)),
createAdaptationSet
(
/* id= */
2
,
C
.
TRACK_TYPE_VIDEO
,
/* descriptor= */
null
,
createVideoRepresentation
(
/* bitrate= */
200
),
createVideoRepresentation
(
/* bitrate= */
201
)),
createAdaptationSet
(
/* id= */
3
,
C
.
TRACK_TYPE_VIDEO
,
createTrickPlayDescriptor
(
/* mainAdaptationSetId= */
2
),
createVideoRepresentation
(
/* bitrate= */
300
))));
public
void
trickPlayProperty_mergesTrackGroups
()
throws
IOException
{
DashManifest
manifest
=
parseManifest
(
"mpd/sample_mpd_trick_play_property"
);
DashMediaPeriod
dashMediaPeriod
=
createDashMediaPeriod
(
manifest
,
0
);
List
<
AdaptationSet
>
adaptationSets
=
manifest
.
getPeriod
(
0
).
adaptationSets
;
...
...
@@ -211,32 +112,9 @@ public final class DashMediaPeriodTest {
}
@Test
public
void
adaptationSetSwitchingProperty_andTrickPlayProperty_mergesTrackGroups
()
{
DashManifest
manifest
=
createDashManifest
(
createPeriod
(
createAdaptationSet
(
/* id= */
0
,
C
.
TRACK_TYPE_VIDEO
,
createTrickPlayDescriptor
(
/* mainAdaptationSetId= */
1
),
createVideoRepresentation
(
/* bitrate= */
0
),
createVideoRepresentation
(
/* bitrate= */
1
)),
createAdaptationSet
(
/* id= */
1
,
C
.
TRACK_TYPE_VIDEO
,
createSwitchDescriptor
(
/* ids...= */
2
),
createVideoRepresentation
(
/* bitrate= */
100
)),
createAdaptationSet
(
/* id= */
2
,
C
.
TRACK_TYPE_VIDEO
,
createSwitchDescriptor
(
/* ids...= */
1
),
createVideoRepresentation
(
/* bitrate= */
200
),
createVideoRepresentation
(
/* bitrate= */
201
)),
createAdaptationSet
(
/* id= */
3
,
C
.
TRACK_TYPE_VIDEO
,
createTrickPlayDescriptor
(
/* mainAdaptationSetId= */
2
),
createVideoRepresentation
(
/* bitrate= */
300
))));
public
void
adaptationSetSwitchingProperty_andTrickPlayProperty_mergesTrackGroups
()
throws
IOException
{
DashManifest
manifest
=
parseManifest
(
"mpd/sample_mpd_switching_and_trick_play_property"
);
DashMediaPeriod
dashMediaPeriod
=
createDashMediaPeriod
(
manifest
,
0
);
List
<
AdaptationSet
>
adaptationSets
=
manifest
.
getPeriod
(
0
).
adaptationSets
;
...
...
@@ -256,21 +134,8 @@ public final class DashMediaPeriodTest {
}
@Test
public
void
cea608AccessibilityDescriptor_createsCea608TrackGroup
()
{
Descriptor
descriptor
=
new
Descriptor
(
"urn:scte:dash:cc:cea-608:2015"
,
"CC1=eng;CC3=deu"
,
/* id= */
null
);
DashManifest
manifest
=
createDashManifest
(
createPeriod
(
new
AdaptationSet
(
/* id= */
123
,
C
.
TRACK_TYPE_VIDEO
,
Arrays
.
asList
(
createVideoRepresentation
(
/* bitrate= */
0
),
createVideoRepresentation
(
/* bitrate= */
1
)),
/* accessibilityDescriptors= */
Collections
.
singletonList
(
descriptor
),
/* essentialProperties= */
Collections
.
emptyList
(),
/* supplementalProperties= */
Collections
.
emptyList
())));
public
void
cea608AccessibilityDescriptor_createsCea608TrackGroup
()
throws
IOException
{
DashManifest
manifest
=
parseManifest
(
"mpd/sample_mpd_cea_608_accessibility"
);
DashMediaPeriod
dashMediaPeriod
=
createDashMediaPeriod
(
manifest
,
0
);
List
<
AdaptationSet
>
adaptationSets
=
manifest
.
getPeriod
(
0
).
adaptationSets
;
...
...
@@ -299,22 +164,8 @@ public final class DashMediaPeriodTest {
}
@Test
public
void
cea708AccessibilityDescriptor_createsCea708TrackGroup
()
{
Descriptor
descriptor
=
new
Descriptor
(
"urn:scte:dash:cc:cea-708:2015"
,
"1=lang:eng;2=lang:deu,war:1,er:1"
,
/* id= */
null
);
DashManifest
manifest
=
createDashManifest
(
createPeriod
(
new
AdaptationSet
(
/* id= */
123
,
C
.
TRACK_TYPE_VIDEO
,
Arrays
.
asList
(
createVideoRepresentation
(
/* bitrate= */
0
),
createVideoRepresentation
(
/* bitrate= */
1
)),
/* accessibilityDescriptors= */
Collections
.
singletonList
(
descriptor
),
/* essentialProperties= */
Collections
.
emptyList
(),
/* supplementalProperties= */
Collections
.
emptyList
())));
public
void
cea708AccessibilityDescriptor_createsCea708TrackGroup
()
throws
IOException
{
DashManifest
manifest
=
parseManifest
(
"mpd/sample_mpd_cea_708_accessibility"
);
DashMediaPeriod
dashMediaPeriod
=
createDashMediaPeriod
(
manifest
,
0
);
List
<
AdaptationSet
>
adaptationSets
=
manifest
.
getPeriod
(
0
).
adaptationSets
;
...
...
@@ -363,105 +214,9 @@ public final class DashMediaPeriodTest {
mock
(
PlayerEmsgCallback
.
class
));
}
private
static
DashManifest
createDashManifest
(
Period
...
periods
)
{
return
new
DashManifest
(
/* availabilityStartTimeMs= */
0
,
/* durationMs= */
5000
,
/* minBufferTimeMs= */
1
,
/* dynamic= */
false
,
/* minUpdatePeriodMs= */
2
,
/* timeShiftBufferDepthMs= */
3
,
/* suggestedPresentationDelayMs= */
4
,
/* publishTimeMs= */
12345
,
/* programInformation= */
null
,
new
UtcTimingElement
(
""
,
""
),
Uri
.
EMPTY
,
Arrays
.
asList
(
periods
));
}
private
static
Period
createPeriod
(
AdaptationSet
...
adaptationSets
)
{
return
new
Period
(
/* id= */
null
,
/* startMs= */
0
,
Arrays
.
asList
(
adaptationSets
));
}
private
static
AdaptationSet
createAdaptationSet
(
int
id
,
int
trackType
,
@Nullable
Descriptor
descriptor
,
Representation
...
representations
)
{
return
new
AdaptationSet
(
id
,
trackType
,
Arrays
.
asList
(
representations
),
/* accessibilityDescriptors= */
Collections
.
emptyList
(),
/* essentialProperties= */
Collections
.
emptyList
(),
descriptor
==
null
?
Collections
.
emptyList
()
:
Collections
.
singletonList
(
descriptor
));
}
private
static
Representation
createVideoRepresentation
(
int
bitrate
)
{
return
Representation
.
newInstance
(
/* revisionId= */
0
,
createVideoFormat
(
bitrate
),
/* baseUrl= */
""
,
new
SingleSegmentBase
());
}
private
static
Representation
createVideoRepresentationWithInbandEventStream
(
int
bitrate
)
{
return
Representation
.
newInstance
(
/* revisionId= */
0
,
createVideoFormat
(
bitrate
),
/* baseUrl= */
""
,
new
SingleSegmentBase
(),
Collections
.
singletonList
(
getInbandEventDescriptor
()));
}
private
static
Format
createVideoFormat
(
int
bitrate
)
{
return
new
Format
.
Builder
()
.
setContainerMimeType
(
MimeTypes
.
VIDEO_MP4
)
.
setSampleMimeType
(
MimeTypes
.
VIDEO_H264
)
.
setPeakBitrate
(
bitrate
)
.
build
();
}
private
static
Representation
createAudioRepresentation
(
int
bitrate
)
{
Format
format
=
new
Format
.
Builder
()
.
setContainerMimeType
(
MimeTypes
.
AUDIO_MP4
)
.
setSampleMimeType
(
MimeTypes
.
AUDIO_AAC
)
.
setPeakBitrate
(
bitrate
)
.
build
();
return
Representation
.
newInstance
(
/* revisionId= */
0
,
format
,
/* baseUrl= */
""
,
new
SingleSegmentBase
());
}
private
static
Representation
createTextRepresentation
(
String
language
)
{
Format
format
=
new
Format
.
Builder
()
.
setContainerMimeType
(
MimeTypes
.
APPLICATION_MP4
)
.
setSampleMimeType
(
MimeTypes
.
TEXT_VTT
)
.
setLanguage
(
language
)
.
build
();
return
Representation
.
newInstance
(
/* revisionId= */
0
,
format
,
/* baseUrl= */
""
,
new
SingleSegmentBase
());
}
private
static
Descriptor
createSwitchDescriptor
(
int
...
ids
)
{
StringBuilder
idString
=
new
StringBuilder
();
idString
.
append
(
ids
[
0
]);
for
(
int
i
=
1
;
i
<
ids
.
length
;
i
++)
{
idString
.
append
(
","
).
append
(
ids
[
i
]);
}
return
new
Descriptor
(
/* schemeIdUri= */
"urn:mpeg:dash:adaptation-set-switching:2016"
,
/* value= */
idString
.
toString
(),
/* id= */
null
);
}
private
static
Descriptor
createTrickPlayDescriptor
(
int
mainAdaptationSetId
)
{
return
new
Descriptor
(
/* schemeIdUri= */
"http://dashif.org/guidelines/trickmode"
,
/* value= */
Integer
.
toString
(
mainAdaptationSetId
),
/* id= */
null
);
}
private
static
Descriptor
getInbandEventDescriptor
()
{
return
new
Descriptor
(
/* schemeIdUri= */
"inBandSchemeIdUri"
,
/* value= */
"inBandValue"
,
/* id= */
"inBandId"
);
private
static
DashManifest
parseManifest
(
String
fileName
)
throws
IOException
{
InputStream
inputStream
=
TestUtil
.
getInputStream
(
ApplicationProvider
.
getApplicationContext
(),
fileName
);
return
new
DashManifestParser
().
parse
(
Uri
.
EMPTY
,
inputStream
);
}
}
testdata/src/test/assets/mpd/sample_mpd_cea_608_accessibility
0 → 100644
View file @
b041c59f
<?xml version="1.0" encoding="UTF-8"?>
<MPD
availabilityStartTime=
"2014-06-19T23:07:42"
type=
"dynamic"
>
<Period
start=
"PT7462826.784S"
id=
"0"
>
<AdaptationSet
id=
"123"
mimeType=
"video/mp4"
>
<Accessibility
schemeIdUri=
"urn:scte:dash:cc:cea-608:2015"
value=
"CC1=eng;CC3=deu"
/>
<Representation
id=
"1231"
bandwidth=
"0"
codecs=
"avc1.42c01f"
/>
<Representation
id=
"1232"
bandwidth=
"1"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
</Period>
</MPD>
testdata/src/test/assets/mpd/sample_mpd_cea_708_accessibility
0 → 100644
View file @
b041c59f
<?xml version="1.0" encoding="UTF-8"?>
<MPD
availabilityStartTime=
"2014-06-19T23:07:42"
type=
"dynamic"
>
<Period
start=
"PT7462826.784S"
id=
"0"
>
<AdaptationSet
id=
"123"
mimeType=
"video/mp4"
>
<Accessibility
schemeIdUri=
"urn:scte:dash:cc:cea-708:2015"
value=
"1=lang:eng;2=lang:deu,war:1,er:1"
/>
<Representation
id=
"1231"
bandwidth=
"0"
codecs=
"avc1.42c01f"
/>
<Representation
id=
"1232"
bandwidth=
"1"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
</Period>
</MPD>
testdata/src/test/assets/mpd/sample_mpd_stream_keys
0 → 100644
View file @
b041c59f
<?xml version="1.0" encoding="UTF-8"?>
<MPD
availabilityStartTime=
"2014-06-19T23:07:42"
type=
"dynamic"
>
<Period
start=
"PT6462826.784S"
id=
"0"
>
<AdaptationSet
id=
"0"
mimeType=
"video/mp4"
>
<Representation
id=
"135"
bandwidth=
"1000000"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
</Period>
<Period
start=
"PT7462826.784S"
id=
"1"
>
<AdaptationSet
id=
"100"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"103,104"
/>
<Representation
id=
"1001"
bandwidth=
"200000"
codecs=
"avc1.42c01f"
>
<InbandEventStream
id=
"inBandId"
schemeIdUri=
"urn:mpeg:dash:event:2012"
value=
"inBandValue"
/>
</Representation>
<Representation
id=
"1002"
bandwidth=
"400000"
codecs=
"avc1.42c01f"
>
<InbandEventStream
id=
"inBandId"
schemeIdUri=
"urn:mpeg:dash:event:2012"
value=
"inBandValue"
/>
</Representation>
<Representation
id=
"1003"
bandwidth=
"600000"
codecs=
"avc1.42c01f"
>
<InbandEventStream
id=
"inBandId"
schemeIdUri=
"urn:mpeg:dash:event:2012"
value=
"inBandValue"
/>
</Representation>
</AdaptationSet>
<AdaptationSet
id=
"101"
mimeType=
"audio/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"102"
/>
<Representation
id=
"1011"
bandwidth=
"48000"
codecs=
"mp4a.40.2"
/>
<Representation
id=
"1012"
bandwidth=
"96000"
codecs=
"mp4a.40.2"
/>
</AdaptationSet>
<AdaptationSet
id=
"102"
mimeType=
"audio/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"101"
/>
<Representation
id=
"1021"
bandwidth=
"256000"
codecs=
"mp4a.40.2"
/>
</AdaptationSet>
<AdaptationSet
id=
"103"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"100,104"
/>
<Representation
id=
"1031"
bandwidth=
"800000"
codecs=
"avc1.42c01f"
>
<InbandEventStream
id=
"inBandId"
schemeIdUri=
"urn:mpeg:dash:event:2012"
value=
"inBandValue"
/>
</Representation>
<Representation
id=
"1032"
bandwidth=
"1000000"
codecs=
"avc1.42c01f"
>
<InbandEventStream
id=
"inBandId"
schemeIdUri=
"urn:mpeg:dash:event:2012"
value=
"inBandValue"
/>
</Representation>
</AdaptationSet>
<AdaptationSet
id=
"104"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"100,103"
/>
<Representation
id=
"1041"
bandwidth=
"2000000"
codecs=
"avc1.42c01f"
>
<InbandEventStream
id=
"inBandId"
schemeIdUri=
"urn:mpeg:dash:event:2012"
value=
"inBandValue"
/>
</Representation>
</AdaptationSet>
<AdaptationSet
id=
"105"
lang=
"eng"
mimeType=
"application/mp4"
contentType=
"text"
codecs=
"wvtt"
>
<Representation
id=
"1051"
bandwidth=
"100"
/>
</AdaptationSet>
<AdaptationSet
id=
"106"
lang=
"ger"
mimeType=
"application/mp4"
contentType=
"text"
codecs=
"wvtt"
>
<Representation
id=
"1061"
bandwidth=
"100"
/>
</AdaptationSet>
</Period>
</MPD>
testdata/src/test/assets/mpd/sample_mpd_switching_and_trick_play_property
0 → 100644
View file @
b041c59f
<?xml version="1.0" encoding="UTF-8"?>
<MPD
availabilityStartTime=
"2014-06-19T23:07:42"
type=
"dynamic"
>
<Period
start=
"PT7462826.784S"
id=
"0"
>
<AdaptationSet
id=
"0"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"http://dashif.org/guidelines/trickmode"
value=
"1"
/>
<Representation
id=
"0"
bandwidth=
"0"
codecs=
"avc1.42c01f"
/>
<Representation
id=
"1"
bandwidth=
"1"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"1"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"2"
/>
<Representation
id=
"11"
bandwidth=
"100"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"2"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"1"
/>
<Representation
id=
"21"
bandwidth=
"200"
codecs=
"avc1.42c01f"
/>
<Representation
id=
"22"
bandwidth=
"201"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"3"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"http://dashif.org/guidelines/trickmode"
value=
"2"
/>
<Representation
id=
"31"
bandwidth=
"300"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
</Period>
</MPD>
testdata/src/test/assets/mpd/sample_mpd_switching_property
0 → 100644
View file @
b041c59f
<?xml version="1.0" encoding="UTF-8"?>
<MPD
availabilityStartTime=
"2014-06-19T23:07:42"
type=
"dynamic"
>
<Period
start=
"PT7462826.784S"
id=
"0"
>
<AdaptationSet
id=
"0"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"1,2"
/>
<Representation
id=
"1"
bandwidth=
"0"
codecs=
"avc1.42c01f"
/>
<Representation
id=
"2"
bandwidth=
"1"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"3"
mimeType=
"video/mp4"
>
<Representation
id=
"31"
bandwidth=
"300"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"2"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"0,1"
/>
<Representation
id=
"21"
bandwidth=
"200"
codecs=
"avc1.42c01f"
/>
<Representation
id=
"21"
bandwidth=
"201"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"1"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"urn:mpeg:dash:adaptation-set-switching:2016"
value=
"0,2"
/>
<Representation
id=
"11"
bandwidth=
"100"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
</Period>
</MPD>
testdata/src/test/assets/mpd/sample_mpd_trick_play_property
0 → 100644
View file @
b041c59f
<?xml version="1.0" encoding="UTF-8"?>
<MPD
availabilityStartTime=
"2014-06-19T23:07:42"
type=
"dynamic"
>
<Period
start=
"PT7462826.784S"
id=
"0"
>
<AdaptationSet
id=
"0"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"http://dashif.org/guidelines/trickmode"
value=
"1"
/>
<Representation
id=
"0"
bandwidth=
"0"
codecs=
"avc1.42c01f"
/>
<Representation
id=
"1"
bandwidth=
"1"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"1"
mimeType=
"video/mp4"
>
<Representation
id=
"11"
bandwidth=
"100"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"2"
mimeType=
"video/mp4"
>
<Representation
id=
"21"
bandwidth=
"200"
codecs=
"avc1.42c01f"
/>
<Representation
id=
"22"
bandwidth=
"201"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
<AdaptationSet
id=
"3"
mimeType=
"video/mp4"
>
<SupplementalProperty
schemeIdUri=
"http://dashif.org/guidelines/trickmode"
value=
"2"
/>
<Representation
id=
"31"
bandwidth=
"300"
codecs=
"avc1.42c01f"
/>
</AdaptationSet>
</Period>
</MPD>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment