diff options
author | dalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-17 06:07:16 +0000 |
---|---|---|
committer | dalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-17 06:07:16 +0000 |
commit | 944925508d10a9ea98432a52c11d5a579b6f1e46 (patch) | |
tree | 1f3db0c4778d4c53f6978f8d59a33b3502de824e /media/formats/common | |
parent | 64e0e3b22059b006a2119a14887901f287c9f35e (diff) | |
download | chromium_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.cc | 29 | ||||
-rw-r--r-- | media/formats/common/stream_parser_test_base.h | 12 |
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); }; |