diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/filters/chunk_demuxer.cc | 11 | ||||
-rw-r--r-- | media/filters/chunk_demuxer_unittest.cc | 9 |
2 files changed, 14 insertions, 6 deletions
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc index fcb3625..2cc1bbc 100644 --- a/media/filters/chunk_demuxer.cc +++ b/media/filters/chunk_demuxer.cc @@ -7,6 +7,7 @@ #include "base/bind.h" #include "base/logging.h" #include "base/message_loop.h" +#include "base/string_util.h" #include "media/base/audio_decoder_config.h" #include "media/base/stream_parser_buffer.h" #include "media/base/video_decoder_config.h" @@ -17,7 +18,7 @@ namespace media { struct CodecInfo { - const char* name; + const char* pattern; DemuxerStream::Type type; }; @@ -32,10 +33,8 @@ struct SupportedTypeInfo { static const CodecInfo kVP8CodecInfo = { "vp8", DemuxerStream::VIDEO }; static const CodecInfo kVorbisCodecInfo = { "vorbis", DemuxerStream::AUDIO }; -// TODO(strobe): Perform matching against supported profiles and levels, or -// simply accept codecs that match a prefix. -static const CodecInfo kH264CodecInfo = { "avc1.4D4041", DemuxerStream::VIDEO }; -static const CodecInfo kAACCodecInfo = { "mp4a.40.2", DemuxerStream::AUDIO }; +static const CodecInfo kH264CodecInfo = { "avc1.*", DemuxerStream::VIDEO }; +static const CodecInfo kAACCodecInfo = { "mp4a.40.*", DemuxerStream::AUDIO }; static const CodecInfo* kVideoWebMCodecs[] = { &kVP8CodecInfo, @@ -103,7 +102,7 @@ static bool IsSupported(const std::string& type, DemuxerStream::Type codec_type = DemuxerStream::UNKNOWN; for (int k = 0; type_info.codecs[k]; ++k) { - if (codecs[j] == type_info.codecs[k]->name) { + if (MatchPattern(codecs[j], type_info.codecs[k]->pattern)) { found_codec = true; codec_type = type_info.codecs[k]->type; break; diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc index d242aae..941bbcb 100644 --- a/media/filters/chunk_demuxer_unittest.cc +++ b/media/filters/chunk_demuxer_unittest.cc @@ -1622,4 +1622,13 @@ TEST_F(ChunkDemuxerTest, TestDifferentStreamTimecodes) { GenerateExpectedReads(5025, 5000, 8, audio, video); } +TEST_F(ChunkDemuxerTest, TestCodecPrefixMatching) { + std::vector<std::string> codecs; + codecs.push_back("avc1.4D4041"); + codecs.push_back("mp4a.40.2"); + + EXPECT_EQ(ChunkDemuxer::kOk, + demuxer_->AddId("source_id", "video/mp4", codecs)); +} + } // namespace media |