Index: media/filters/pipeline_integration_test.cc |
diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc |
index e79f631b72b307e4ab1f2b1d90e731425b020185..a767b7f44057f2a39d2d6f0d7941a427c61595fd 100644 |
--- a/media/filters/pipeline_integration_test.cc |
+++ b/media/filters/pipeline_integration_test.cc |
@@ -11,6 +11,7 @@ |
#include "build/build_config.h" |
#include "media/base/decoder_buffer.h" |
#include "media/base/media_keys.h" |
+#include "media/base/media_switches.h" |
#include "media/base/test_data_util.h" |
#include "media/cdm/aes_decryptor.h" |
#include "media/filters/chunk_demuxer.h" |
@@ -33,6 +34,7 @@ static const char kMP4Video[] = "video/mp4; codecs=\"avc1.4D4041\""; |
static const char kMP4Audio[] = "audio/mp4; codecs=\"mp4a.40.2\""; |
static const char kMP4AudioType[] = "audio/mp4"; |
static const char kMP4VideoType[] = "video/mp4"; |
+static const char kMP3[] = "audio/mpeg"; |
// Key used to encrypt test files. |
static const uint8 kSecretKey[] = { |
@@ -284,13 +286,29 @@ class MockMediaSource { |
} |
void DemuxerOpenedTask() { |
+ // This code assumes that |mimetype_| is one of the following forms. |
scherkus (not reviewing)
2013/09/04 01:25:37
my bad ... didn't realize that this was:
a) test
acolwell GONE FROM CHROMIUM
2013/09/04 01:36:01
no problem. The code now makes it easier to catch
|
+ // 1. audio/mpeg |
+ // 2. video/webm;codec="vorbis,vp8". |
size_t semicolon = mimetype_.find(";"); |
- std::string type = mimetype_.substr(0, semicolon); |
- size_t quote1 = mimetype_.find("\""); |
- size_t quote2 = mimetype_.find("\"", quote1 + 1); |
- std::string codecStr = mimetype_.substr(quote1 + 1, quote2 - quote1 - 1); |
+ std::string type = mimetype_; |
std::vector<std::string> codecs; |
- Tokenize(codecStr, ",", &codecs); |
+ if (semicolon != std::string::npos) { |
+ type = mimetype_.substr(0, semicolon); |
+ size_t codecs_param_start = mimetype_.find("codecs=\"", semicolon); |
+ |
+ CHECK_NE(codecs_param_start, std::string::npos); |
+ |
+ codecs_param_start += 8; // Skip over the codecs=". |
+ |
+ size_t codecs_param_end = mimetype_.find("\"", codecs_param_start); |
+ |
+ CHECK_NE(codecs_param_end, std::string::npos); |
+ |
+ std::string codecs_param = |
+ mimetype_.substr(codecs_param_start, |
+ codecs_param_end - codecs_param_start); |
+ Tokenize(codecs_param, ",", &codecs); |
+ } |
CHECK_EQ(chunk_demuxer_->AddId(kSourceId, type, codecs), ChunkDemuxer::kOk); |
AppendData(initial_append_size_); |
@@ -627,6 +645,27 @@ TEST_F(PipelineIntegrationTest, |
} |
#if defined(USE_PROPRIETARY_CODECS) |
+TEST_F(PipelineIntegrationTest, MediaSource_MP3) { |
+ MockMediaSource source("sfx.mp3", kMP3, kAppendWholeFile); |
+ StartPipelineWithMediaSource(&source); |
+ source.EndOfStream(); |
+ |
+ Play(); |
+ |
+ EXPECT_TRUE(WaitUntilOnEnded()); |
+} |
+ |
+ |
+TEST_F(PipelineIntegrationTest, MediaSource_MP3_Icecast) { |
+ MockMediaSource source("icy_sfx.mp3", kMP3, kAppendWholeFile); |
+ StartPipelineWithMediaSource(&source); |
+ source.EndOfStream(); |
+ |
+ Play(); |
+ |
+ EXPECT_TRUE(WaitUntilOnEnded()); |
+} |
+ |
TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { |
MockMediaSource source("bear-640x360-av_frag.mp4", kMP4, kAppendWholeFile); |
StartPipelineWithMediaSource(&source); |