Set AdaptationSet contentType
- "video" and "audio" content type are set. No "text" support yet. Change-Id: I15a9aae1aab15022627ca737668e6c97069a2e95
This commit is contained in:
parent
c3c971ebd9
commit
5f7a55b1db
|
@ -538,6 +538,12 @@ Representation* AdaptationSet::AddRepresentation(const MediaInfo& media_info) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (media_info.has_video_info()) {
|
||||||
|
content_type_ = "video";
|
||||||
|
} else if (media_info.has_audio_info()) {
|
||||||
|
content_type_ = "audio";
|
||||||
|
}
|
||||||
|
|
||||||
representations_.push_back(representation.get());
|
representations_.push_back(representation.get());
|
||||||
return representation.release();
|
return representation.release();
|
||||||
}
|
}
|
||||||
|
@ -570,6 +576,7 @@ xml::ScopedXmlPtr<xmlNode>::type AdaptationSet::GetXml() {
|
||||||
}
|
}
|
||||||
|
|
||||||
adaptation_set.SetId(id_);
|
adaptation_set.SetId(id_);
|
||||||
|
adaptation_set.SetStringAttribute("contentType", content_type_);
|
||||||
if (!lang_.empty() && lang_ != "und") {
|
if (!lang_.empty() && lang_ != "und") {
|
||||||
adaptation_set.SetStringAttribute("lang", LanguageToShortestForm(lang_));
|
adaptation_set.SetStringAttribute("lang", LanguageToShortestForm(lang_));
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,6 +181,12 @@ class AdaptationSet {
|
||||||
private:
|
private:
|
||||||
friend class MpdBuilder;
|
friend class MpdBuilder;
|
||||||
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest, CheckAdaptationSetId);
|
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest, CheckAdaptationSetId);
|
||||||
|
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest,
|
||||||
|
CheckAdaptationSetVideoContentType);
|
||||||
|
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest,
|
||||||
|
CheckAdaptationSetAudioContentType);
|
||||||
|
FRIEND_TEST_ALL_PREFIXES(CommonMpdBuilderTest,
|
||||||
|
CheckAdaptationSetTextContentType);
|
||||||
|
|
||||||
/// @param adaptation_set_id is an ID number for this AdaptationSet.
|
/// @param adaptation_set_id is an ID number for this AdaptationSet.
|
||||||
/// @param representation_counter is a Counter for assigning ID numbers to
|
/// @param representation_counter is a Counter for assigning ID numbers to
|
||||||
|
@ -220,6 +226,10 @@ class AdaptationSet {
|
||||||
// So, key == CalculatedValue(value)
|
// So, key == CalculatedValue(value)
|
||||||
std::map<double, std::string> video_frame_rates_;
|
std::map<double, std::string> video_frame_rates_;
|
||||||
|
|
||||||
|
// contentType attribute of AdaptationSet.
|
||||||
|
// Determined by examining the MediaInfo passed to AddRepresentation().
|
||||||
|
std::string content_type_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(AdaptationSet);
|
DISALLOW_COPY_AND_ASSIGN(AdaptationSet);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -25,9 +25,10 @@ namespace edash_packager {
|
||||||
using base::FilePath;
|
using base::FilePath;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
// Any number for RepresentationId. Required to create a Representation but
|
// Any number for {AdaptationSet,Representation} ID. Required to create
|
||||||
// not checked in test.
|
// either objects. Not checked in test.
|
||||||
const uint32_t kAnyRepresentationId = 1;
|
const uint32_t kAnyRepresentationId = 1;
|
||||||
|
const uint32_t kAnyAdaptationSetId = 1;
|
||||||
const char kSElementTemplate[] =
|
const char kSElementTemplate[] =
|
||||||
"<S t=\"%" PRIu64 "\" d=\"%" PRIu64 "\" r=\"%" PRIu64 "\"/>\n";
|
"<S t=\"%" PRIu64 "\" d=\"%" PRIu64 "\" r=\"%" PRIu64 "\"/>\n";
|
||||||
const char kSElementTemplateWithoutR[] =
|
const char kSElementTemplateWithoutR[] =
|
||||||
|
@ -135,7 +136,7 @@ class DynamicMpdBuilderTest : public MpdBuilderTest<MpdBuilder::kDynamic> {
|
||||||
std::string GetDefaultMediaInfo() {
|
std::string GetDefaultMediaInfo() {
|
||||||
const char kMediaInfo[] =
|
const char kMediaInfo[] =
|
||||||
"video_info {\n"
|
"video_info {\n"
|
||||||
" codec: \"avc1.010101\"\n"
|
" codec: 'avc1.010101'\n"
|
||||||
" width: 720\n"
|
" width: 720\n"
|
||||||
" height: 480\n"
|
" height: 480\n"
|
||||||
" time_scale: 10\n"
|
" time_scale: 10\n"
|
||||||
|
@ -145,8 +146,8 @@ class DynamicMpdBuilderTest : public MpdBuilderTest<MpdBuilder::kDynamic> {
|
||||||
"}\n"
|
"}\n"
|
||||||
"reference_time_scale: %u\n"
|
"reference_time_scale: %u\n"
|
||||||
"container_type: 1\n"
|
"container_type: 1\n"
|
||||||
"init_segment_name: \"init.mp4\"\n"
|
"init_segment_name: 'init.mp4'\n"
|
||||||
"segment_template: \"$Time$.mp4\"\n";
|
"segment_template: '$Time$.mp4'\n";
|
||||||
|
|
||||||
return base::StringPrintf(kMediaInfo, DefaultTimeScale());
|
return base::StringPrintf(kMediaInfo, DefaultTimeScale());
|
||||||
}
|
}
|
||||||
|
@ -208,7 +209,7 @@ class SegmentTemplateTest : public DynamicMpdBuilderTest {
|
||||||
"type=\"dynamic\" profiles=\"urn:mpeg:dash:profile:isoff-live:2011\">\n"
|
"type=\"dynamic\" profiles=\"urn:mpeg:dash:profile:isoff-live:2011\">\n"
|
||||||
" <Period start=\"PT0S\">\n"
|
" <Period start=\"PT0S\">\n"
|
||||||
" <AdaptationSet id=\"0\" width=\"720\" height=\"480\""
|
" <AdaptationSet id=\"0\" width=\"720\" height=\"480\""
|
||||||
" frameRate=\"10/5\">\n"
|
" frameRate=\"10/5\" contentType=\"video\">\n"
|
||||||
" <Representation id=\"0\" bandwidth=\"%" PRIu64 "\" "
|
" <Representation id=\"0\" bandwidth=\"%" PRIu64 "\" "
|
||||||
"codecs=\"avc1.010101\" mimeType=\"video/mp4\" width=\"720\" "
|
"codecs=\"avc1.010101\" mimeType=\"video/mp4\" width=\"720\" "
|
||||||
"height=\"480\" frameRate=\"10/5\" sar=\"1:1\">\n"
|
"height=\"480\" frameRate=\"10/5\" sar=\"1:1\">\n"
|
||||||
|
@ -258,7 +259,7 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
|
||||||
// $Number$ for segment template.
|
// $Number$ for segment template.
|
||||||
const char kMediaInfo[] =
|
const char kMediaInfo[] =
|
||||||
"video_info {\n"
|
"video_info {\n"
|
||||||
" codec: \"avc1.010101\"\n"
|
" codec: 'avc1.010101'\n"
|
||||||
" width: 720\n"
|
" width: 720\n"
|
||||||
" height: 480\n"
|
" height: 480\n"
|
||||||
" time_scale: 10\n"
|
" time_scale: 10\n"
|
||||||
|
@ -268,8 +269,8 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
|
||||||
"}\n"
|
"}\n"
|
||||||
"reference_time_scale: %u\n"
|
"reference_time_scale: %u\n"
|
||||||
"container_type: 1\n"
|
"container_type: 1\n"
|
||||||
"init_segment_name: \"init.mp4\"\n"
|
"init_segment_name: 'init.mp4'\n"
|
||||||
"segment_template: \"$Number$.mp4\"\n";
|
"segment_template: '$Number$.mp4'\n";
|
||||||
|
|
||||||
const std::string& number_template_media_info =
|
const std::string& number_template_media_info =
|
||||||
base::StringPrintf(kMediaInfo, DefaultTimeScale());
|
base::StringPrintf(kMediaInfo, DefaultTimeScale());
|
||||||
|
@ -291,7 +292,7 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
|
||||||
"timeShiftBufferDepth=\"PT%dS\">\n"
|
"timeShiftBufferDepth=\"PT%dS\">\n"
|
||||||
" <Period start=\"PT0S\">\n"
|
" <Period start=\"PT0S\">\n"
|
||||||
" <AdaptationSet id=\"0\" width=\"720\" height=\"480\""
|
" <AdaptationSet id=\"0\" width=\"720\" height=\"480\""
|
||||||
" frameRate=\"10/2\">\n"
|
" frameRate=\"10/2\" contentType=\"video\">\n"
|
||||||
" <Representation id=\"0\" bandwidth=\"%" PRIu64 "\" "
|
" <Representation id=\"0\" bandwidth=\"%" PRIu64 "\" "
|
||||||
"codecs=\"avc1.010101\" mimeType=\"video/mp4\" width=\"720\" "
|
"codecs=\"avc1.010101\" mimeType=\"video/mp4\" width=\"720\" "
|
||||||
"height=\"480\" frameRate=\"10/2\" sar=\"1:1\">\n"
|
"height=\"480\" frameRate=\"10/2\" sar=\"1:1\">\n"
|
||||||
|
@ -327,7 +328,7 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
|
||||||
TEST_F(CommonMpdBuilderTest, ValidMediaInfo) {
|
TEST_F(CommonMpdBuilderTest, ValidMediaInfo) {
|
||||||
const char kTestMediaInfo[] =
|
const char kTestMediaInfo[] =
|
||||||
"video_info {\n"
|
"video_info {\n"
|
||||||
" codec: \"avc1\"\n"
|
" codec: 'avc1'\n"
|
||||||
" width: 720\n"
|
" width: 720\n"
|
||||||
" height: 480\n"
|
" height: 480\n"
|
||||||
" time_scale: 10\n"
|
" time_scale: 10\n"
|
||||||
|
@ -346,7 +347,7 @@ TEST_F(CommonMpdBuilderTest, InvalidMediaInfo) {
|
||||||
// Missing width.
|
// Missing width.
|
||||||
const char kTestMediaInfo[] =
|
const char kTestMediaInfo[] =
|
||||||
"video_info {\n"
|
"video_info {\n"
|
||||||
" codec: \"avc1\"\n"
|
" codec: 'avc1'\n"
|
||||||
" height: 480\n"
|
" height: 480\n"
|
||||||
" time_scale: 10\n"
|
" time_scale: 10\n"
|
||||||
" frame_duration: 10\n"
|
" frame_duration: 10\n"
|
||||||
|
@ -363,7 +364,7 @@ TEST_F(CommonMpdBuilderTest, InvalidMediaInfo) {
|
||||||
TEST_F(CommonMpdBuilderTest, CheckVideoInfoReflectedInXml) {
|
TEST_F(CommonMpdBuilderTest, CheckVideoInfoReflectedInXml) {
|
||||||
const char kTestMediaInfo[] =
|
const char kTestMediaInfo[] =
|
||||||
"video_info {\n"
|
"video_info {\n"
|
||||||
" codec: \"avc1\"\n"
|
" codec: 'avc1'\n"
|
||||||
" width: 1280\n"
|
" width: 1280\n"
|
||||||
" height: 720\n"
|
" height: 720\n"
|
||||||
" time_scale: 10\n"
|
" time_scale: 10\n"
|
||||||
|
@ -388,6 +389,76 @@ TEST_F(CommonMpdBuilderTest, CheckVideoInfoReflectedInXml) {
|
||||||
ExpectAttributeEqString("frameRate", "10/10", node_xml.get()));
|
ExpectAttributeEqString("frameRate", "10/10", node_xml.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Verify that content type is set correctly if video info is present in
|
||||||
|
// MediaInfo.
|
||||||
|
TEST_F(CommonMpdBuilderTest, CheckAdaptationSetVideoContentType) {
|
||||||
|
base::AtomicSequenceNumber sequence_counter;
|
||||||
|
const char kVideoMediaInfo[] =
|
||||||
|
"video_info {\n"
|
||||||
|
" codec: 'avc1'\n"
|
||||||
|
" width: 1280\n"
|
||||||
|
" height: 720\n"
|
||||||
|
" time_scale: 10\n"
|
||||||
|
" frame_duration: 10\n"
|
||||||
|
" pixel_width: 1\n"
|
||||||
|
" pixel_height: 1\n"
|
||||||
|
"}\n"
|
||||||
|
"container_type: 1\n";
|
||||||
|
|
||||||
|
AdaptationSet adaptation_set(
|
||||||
|
kAnyAdaptationSetId, "", MpdOptions(), &sequence_counter);
|
||||||
|
adaptation_set.AddRepresentation(ConvertToMediaInfo(kVideoMediaInfo));
|
||||||
|
|
||||||
|
xml::ScopedXmlPtr<xmlNode>::type node_xml(adaptation_set.GetXml());
|
||||||
|
EXPECT_NO_FATAL_FAILURE(
|
||||||
|
ExpectAttributeEqString("contentType", "video", node_xml.get()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify that content type is set correctly if audio info is present in
|
||||||
|
// MediaInfo.
|
||||||
|
TEST_F(CommonMpdBuilderTest, CheckAdaptationSetAudioContentType) {
|
||||||
|
base::AtomicSequenceNumber sequence_counter;
|
||||||
|
const char kAudioMediaInfo[] =
|
||||||
|
"audio_info {\n"
|
||||||
|
" codec: 'mp4a.40.2'\n"
|
||||||
|
" sampling_frequency: 44100\n"
|
||||||
|
" time_scale: 1200\n"
|
||||||
|
" num_channels: 2\n"
|
||||||
|
"}\n"
|
||||||
|
"container_type: 1\n";
|
||||||
|
|
||||||
|
AdaptationSet adaptation_set(
|
||||||
|
kAnyAdaptationSetId, "", MpdOptions(), &sequence_counter);
|
||||||
|
adaptation_set.AddRepresentation(ConvertToMediaInfo(kAudioMediaInfo));
|
||||||
|
|
||||||
|
xml::ScopedXmlPtr<xmlNode>::type node_xml(adaptation_set.GetXml());
|
||||||
|
EXPECT_NO_FATAL_FAILURE(
|
||||||
|
ExpectAttributeEqString("contentType", "audio", node_xml.get()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify that content type is set correctly if text info is present in
|
||||||
|
// MediaInfo.
|
||||||
|
// TODO(rkuroiwa): Enable this once text support is implemented.
|
||||||
|
// This fails because it fails to get the codec, therefore Representation
|
||||||
|
// creation fails.
|
||||||
|
TEST_F(CommonMpdBuilderTest, DISABLED_CheckAdaptationSetTextContentType) {
|
||||||
|
base::AtomicSequenceNumber sequence_counter;
|
||||||
|
const char kTextMediaInfo[] =
|
||||||
|
"text_info {\n"
|
||||||
|
" format: 'ttml'\n"
|
||||||
|
" language: 'en'\n"
|
||||||
|
"}\n"
|
||||||
|
"container_type: 1\n";
|
||||||
|
|
||||||
|
AdaptationSet adaptation_set(
|
||||||
|
kAnyAdaptationSetId, "", MpdOptions(), &sequence_counter);
|
||||||
|
adaptation_set.AddRepresentation(ConvertToMediaInfo(kTextMediaInfo));
|
||||||
|
|
||||||
|
xml::ScopedXmlPtr<xmlNode>::type node_xml(adaptation_set.GetXml());
|
||||||
|
EXPECT_NO_FATAL_FAILURE(
|
||||||
|
ExpectAttributeEqString("contentType", "text", node_xml.get()));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(CommonMpdBuilderTest, CheckAdaptationSetId) {
|
TEST_F(CommonMpdBuilderTest, CheckAdaptationSetId) {
|
||||||
base::AtomicSequenceNumber sequence_counter;
|
base::AtomicSequenceNumber sequence_counter;
|
||||||
const uint32_t kAdaptationSetId = 42;
|
const uint32_t kAdaptationSetId = 42;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
||||||
<Period>
|
<Period>
|
||||||
<AdaptationSet id="0">
|
<AdaptationSet id="0" contentType="audio">
|
||||||
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||||
<BaseURL>test_output_file_name_audio1.mp4</BaseURL>
|
<BaseURL>test_output_file_name_audio1.mp4</BaseURL>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
||||||
<Period>
|
<Period>
|
||||||
<AdaptationSet id="0" width="720" height="480" frameRate="10/1">
|
<AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video">
|
||||||
<Representation id="1" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
|
<Representation id="1" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
|
||||||
<BaseURL>test_output_file_name1.mp4</BaseURL>
|
<BaseURL>test_output_file_name1.mp4</BaseURL>
|
||||||
<SegmentBase indexRange="121-221" timescale="1000">
|
<SegmentBase indexRange="121-221" timescale="1000">
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
</SegmentBase>
|
</SegmentBase>
|
||||||
</Representation>
|
</Representation>
|
||||||
</AdaptationSet>
|
</AdaptationSet>
|
||||||
<AdaptationSet id="1">
|
<AdaptationSet id="1" contentType="audio">
|
||||||
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||||
<BaseURL>test_output_file_name_audio1.mp4</BaseURL>
|
<BaseURL>test_output_file_name_audio1.mp4</BaseURL>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" availabilityStartTime="2011-12-25T12:30:00" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011">
|
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" availabilityStartTime="2011-12-25T12:30:00" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011">
|
||||||
<Period start="PT0S">
|
<Period start="PT0S">
|
||||||
<AdaptationSet id="0" width="720" height="480" frameRate="10/5">
|
<AdaptationSet id="0" width="720" height="480" frameRate="10/5" contentType="video">
|
||||||
<Representation id="0" bandwidth="102400" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/5" sar="1:1">
|
<Representation id="0" bandwidth="102400" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/5" sar="1:1">
|
||||||
<SegmentTemplate timescale="1000" initialization="init.mp4" media="$Time$.mp4">
|
<SegmentTemplate timescale="1000" initialization="init.mp4" media="$Time$.mp4">
|
||||||
<SegmentTimeline>
|
<SegmentTimeline>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT24.00943374633789S">
|
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT24.00943374633789S">
|
||||||
<Period>
|
<Period>
|
||||||
<AdaptationSet id="0">
|
<AdaptationSet id="0" contentType="audio">
|
||||||
<Representation id="0" bandwidth="195857" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
<Representation id="0" bandwidth="195857" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||||
<ContentProtection schemeIdUri="http://foo.com/"/>
|
<ContentProtection schemeIdUri="http://foo.com/"/>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
||||||
<Period>
|
<Period>
|
||||||
<AdaptationSet id="0" width="720" height="480" frameRate="10/1">
|
<AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video">
|
||||||
<Representation id="3" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
|
<Representation id="3" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
|
||||||
<BaseURL>test_output_file_name1.mp4</BaseURL>
|
<BaseURL>test_output_file_name1.mp4</BaseURL>
|
||||||
<SegmentBase indexRange="121-221" timescale="1000">
|
<SegmentBase indexRange="121-221" timescale="1000">
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
</SegmentBase>
|
</SegmentBase>
|
||||||
</Representation>
|
</Representation>
|
||||||
</AdaptationSet>
|
</AdaptationSet>
|
||||||
<AdaptationSet id="1" lang="en">
|
<AdaptationSet id="1" lang="en" contentType="audio">
|
||||||
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||||
<BaseURL>test_output_file_name_audio_eng1.mp4</BaseURL>
|
<BaseURL>test_output_file_name_audio_eng1.mp4</BaseURL>
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
</SegmentBase>
|
</SegmentBase>
|
||||||
</Representation>
|
</Representation>
|
||||||
</AdaptationSet>
|
</AdaptationSet>
|
||||||
<AdaptationSet id="2" lang="de">
|
<AdaptationSet id="2" lang="de" contentType="audio">
|
||||||
<Representation id="2" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
<Representation id="2" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
|
||||||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
||||||
<BaseURL>test_output_file_name_audio_ger1.mp4</BaseURL>
|
<BaseURL>test_output_file_name_audio_ger1.mp4</BaseURL>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
||||||
<Period>
|
<Period>
|
||||||
<AdaptationSet id="0" width="720" height="480" frameRate="10/1">
|
<AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video">
|
||||||
<Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
|
<Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
|
||||||
<BaseURL>test_output_file_name1.mp4</BaseURL>
|
<BaseURL>test_output_file_name1.mp4</BaseURL>
|
||||||
<SegmentBase indexRange="121-221" timescale="1000">
|
<SegmentBase indexRange="121-221" timescale="1000">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
|
||||||
<Period>
|
<Period>
|
||||||
<AdaptationSet id="0" maxWidth="720" maxHeight="480" maxFrameRate="10/1">
|
<AdaptationSet id="0" maxWidth="720" maxHeight="480" maxFrameRate="10/1" contentType="video">
|
||||||
<Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
|
<Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">
|
||||||
<BaseURL>test_output_file_name1.mp4</BaseURL>
|
<BaseURL>test_output_file_name1.mp4</BaseURL>
|
||||||
<SegmentBase indexRange="121-221" timescale="1000">
|
<SegmentBase indexRange="121-221" timescale="1000">
|
||||||
|
|
Loading…
Reference in New Issue