summaryrefslogtreecommitdiffstats
path: root/media/formats/common
diff options
context:
space:
mode:
authordalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-17 06:07:16 +0000
committerdalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-17 06:07:16 +0000
commit944925508d10a9ea98432a52c11d5a579b6f1e46 (patch)
tree1f3db0c4778d4c53f6978f8d59a33b3502de824e /media/formats/common
parent64e0e3b22059b006a2119a14887901f287c9f35e (diff)
downloadchromium_src-944925508d10a9ea98432a52c11d5a579b6f1e46.zip
chromium_src-944925508d10a9ea98432a52c11d5a579b6f1e46.tar.gz
chromium_src-944925508d10a9ea98432a52c11d5a579b6f1e46.tar.bz2
Skip XING frames inside the MP3StreamParser.
These frames result in the injection of silence when encountered by the decoder, so they must be skipped during demuxing. BUG=360961 TEST=Existing tests are correctly adjusted. NOTRY=true Review URL: https://codereview.chromium.org/236043002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/formats/common')
-rw-r--r--media/formats/common/stream_parser_test_base.cc29
-rw-r--r--media/formats/common/stream_parser_test_base.h12
2 files changed, 26 insertions, 15 deletions
diff --git a/media/formats/common/stream_parser_test_base.cc b/media/formats/common/stream_parser_test_base.cc
index 61e0f13..cf739a5 100644
--- a/media/formats/common/stream_parser_test_base.cc
+++ b/media/formats/common/stream_parser_test_base.cc
@@ -29,31 +29,33 @@ static std::string BufferQueueToString(
StreamParserTestBase::StreamParserTestBase(
scoped_ptr<StreamParser> stream_parser)
- : parser_(stream_parser.Pass()) {}
+ : parser_(stream_parser.Pass()) {
+ parser_->Init(
+ base::Bind(&StreamParserTestBase::OnInitDone, base::Unretained(this)),
+ base::Bind(&StreamParserTestBase::OnNewConfig, base::Unretained(this)),
+ base::Bind(&StreamParserTestBase::OnNewBuffers, base::Unretained(this)),
+ true,
+ base::Bind(&StreamParserTestBase::OnKeyNeeded, base::Unretained(this)),
+ base::Bind(&StreamParserTestBase::OnNewSegment, base::Unretained(this)),
+ base::Bind(&StreamParserTestBase::OnEndOfSegment, base::Unretained(this)),
+ LogCB());
+}
StreamParserTestBase::~StreamParserTestBase() {}
std::string StreamParserTestBase::ParseFile(const std::string& filename,
int append_bytes) {
results_stream_.clear();
- InitializeParser();
-
scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile(filename);
EXPECT_TRUE(
AppendDataInPieces(buffer->data(), buffer->data_size(), append_bytes));
return results_stream_.str();
}
-void StreamParserTestBase::InitializeParser() {
- parser_->Init(
- base::Bind(&StreamParserTestBase::OnInitDone, base::Unretained(this)),
- base::Bind(&StreamParserTestBase::OnNewConfig, base::Unretained(this)),
- base::Bind(&StreamParserTestBase::OnNewBuffers, base::Unretained(this)),
- true,
- base::Bind(&StreamParserTestBase::OnKeyNeeded, base::Unretained(this)),
- base::Bind(&StreamParserTestBase::OnNewSegment, base::Unretained(this)),
- base::Bind(&StreamParserTestBase::OnEndOfSegment, base::Unretained(this)),
- LogCB());
+std::string StreamParserTestBase::ParseData(const uint8* data, size_t length) {
+ results_stream_.clear();
+ EXPECT_TRUE(AppendDataInPieces(data, length, length));
+ return results_stream_.str();
}
bool StreamParserTestBase::AppendDataInPieces(const uint8* data,
@@ -88,6 +90,7 @@ bool StreamParserTestBase::OnNewConfig(
<< video_config.IsValidConfig() << ")";
EXPECT_TRUE(audio_config.IsValidConfig());
EXPECT_FALSE(video_config.IsValidConfig());
+ last_audio_config_ = audio_config;
return true;
}
diff --git a/media/formats/common/stream_parser_test_base.h b/media/formats/common/stream_parser_test_base.h
index 609dea3..f53c912 100644
--- a/media/formats/common/stream_parser_test_base.h
+++ b/media/formats/common/stream_parser_test_base.h
@@ -39,10 +39,17 @@ class StreamParserTestBase {
//
std::string ParseFile(const std::string& filename, int append_bytes);
+ // Similar to ParseFile() except parses the given |data| in a single append of
+ // size |length|.
+ std::string ParseData(const uint8* data, size_t length);
+
+ // The last AudioDecoderConfig handed to OnNewConfig().
+ const AudioDecoderConfig& last_audio_config() const {
+ return last_audio_config_;
+ }
+
private:
- void InitializeParser();
bool AppendDataInPieces(const uint8* data, size_t length, size_t piece_size);
-
void OnInitDone(bool success,
base::TimeDelta duration,
base::Time wallclock_timeline_offset,
@@ -60,6 +67,7 @@ class StreamParserTestBase {
scoped_ptr<StreamParser> parser_;
std::stringstream results_stream_;
+ AudioDecoderConfig last_audio_config_;
DISALLOW_COPY_AND_ASSIGN(StreamParserTestBase);
};