Set codec string for webm contents correctly
The new codec strings may not be accepted by old versions of browsers. Change-Id: Ic1bdde80f204f56674fca1f959a3897146953bcf
This commit is contained in:
parent
2909a53568
commit
b4e9b5ac2b
|
@ -501,6 +501,73 @@ TEST_F(CommonMpdBuilderTest, CheckVideoInfoReflectedInXml) {
|
||||||
ExpectAttributeEqString("frameRate", "10/10", node_xml.get()));
|
ExpectAttributeEqString("frameRate", "10/10", node_xml.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(CommonMpdBuilderTest, CheckVideoInfoVp8CodecInMp4) {
|
||||||
|
const char kTestMediaInfoCodecVp8[] =
|
||||||
|
"video_info {\n"
|
||||||
|
" codec: 'vp08.00.00.08.01.01.00.00'\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";
|
||||||
|
auto representation =
|
||||||
|
CreateRepresentation(ConvertToMediaInfo(kTestMediaInfoCodecVp8),
|
||||||
|
MpdOptions(), kAnyRepresentationId, NoListener());
|
||||||
|
EXPECT_TRUE(representation->Init());
|
||||||
|
xml::scoped_xml_ptr<xmlNode> node_xml(representation->GetXml());
|
||||||
|
EXPECT_NO_FATAL_FAILURE(
|
||||||
|
ExpectAttributeEqString("codecs", "vp08.00.00.08.01.01.00.00", node_xml.get()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that vp8 codec string will be updated for backward compatibility
|
||||||
|
// support in webm.
|
||||||
|
TEST_F(CommonMpdBuilderTest, CheckVideoInfoVp8CodecInWebm) {
|
||||||
|
const char kTestMediaInfoCodecVp8[] =
|
||||||
|
"video_info {\n"
|
||||||
|
" codec: 'vp08.00.00.08.01.01.00.00'\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: 3\n";
|
||||||
|
auto representation =
|
||||||
|
CreateRepresentation(ConvertToMediaInfo(kTestMediaInfoCodecVp8),
|
||||||
|
MpdOptions(), kAnyRepresentationId, NoListener());
|
||||||
|
EXPECT_TRUE(representation->Init());
|
||||||
|
xml::scoped_xml_ptr<xmlNode> node_xml(representation->GetXml());
|
||||||
|
EXPECT_NO_FATAL_FAILURE(
|
||||||
|
ExpectAttributeEqString("codecs", "vp8", node_xml.get()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that vp9 codec string will be updated for backward compatibility
|
||||||
|
// support in webm.
|
||||||
|
TEST_F(CommonMpdBuilderTest, CheckVideoInfoVp9CodecInWebm) {
|
||||||
|
const char kTestMediaInfoCodecVp9[] =
|
||||||
|
"video_info {\n"
|
||||||
|
" codec: 'vp09.00.00.08.01.01.00.00'\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: 3\n";
|
||||||
|
auto representation =
|
||||||
|
CreateRepresentation(ConvertToMediaInfo(kTestMediaInfoCodecVp9),
|
||||||
|
MpdOptions(), kAnyRepresentationId, NoListener());
|
||||||
|
EXPECT_TRUE(representation->Init());
|
||||||
|
xml::scoped_xml_ptr<xmlNode> node_xml(representation->GetXml());
|
||||||
|
EXPECT_NO_FATAL_FAILURE(
|
||||||
|
ExpectAttributeEqString("codecs", "vp9", node_xml.get()));
|
||||||
|
}
|
||||||
|
|
||||||
// Make sure RepresentationStateChangeListener::OnNewSegmentForRepresentation()
|
// Make sure RepresentationStateChangeListener::OnNewSegmentForRepresentation()
|
||||||
// is called.
|
// is called.
|
||||||
TEST_F(CommonMpdBuilderTest,
|
TEST_F(CommonMpdBuilderTest,
|
||||||
|
|
|
@ -61,8 +61,20 @@ std::string GetCodecs(const MediaInfo& media_info) {
|
||||||
CHECK(OnlyOneTrue(media_info.has_video_info(), media_info.has_audio_info(),
|
CHECK(OnlyOneTrue(media_info.has_video_info(), media_info.has_audio_info(),
|
||||||
media_info.has_text_info()));
|
media_info.has_text_info()));
|
||||||
|
|
||||||
if (media_info.has_video_info())
|
if (media_info.has_video_info()) {
|
||||||
|
if (media_info.container_type() == MediaInfo::CONTAINER_WEBM) {
|
||||||
|
std::string codec = media_info.video_info().codec().substr(0, 4);
|
||||||
|
// media_info.video_info().codec() contains new revised codec string
|
||||||
|
// specified by "VPx in ISO BMFF" document, which is not compatible to
|
||||||
|
// old codec strings in WebM. Hack it here before all browsers support
|
||||||
|
// new codec strings.
|
||||||
|
if (codec == "vp08")
|
||||||
|
return "vp8";
|
||||||
|
if (codec == "vp09")
|
||||||
|
return "vp9";
|
||||||
|
}
|
||||||
return media_info.video_info().codec();
|
return media_info.video_info().codec();
|
||||||
|
}
|
||||||
|
|
||||||
if (media_info.has_audio_info())
|
if (media_info.has_audio_info())
|
||||||
return media_info.audio_info().codec();
|
return media_info.audio_info().codec();
|
||||||
|
|
Loading…
Reference in New Issue