diff options
author | dalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-28 22:28:18 +0000 |
---|---|---|
committer | dalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-28 22:28:18 +0000 |
commit | c01203ed96d3e8b4d3f5b50328c047e88ff379b6 (patch) | |
tree | 037cc2c832016eccc425dc0202bf018abf6dc0a0 /media | |
parent | 387c9317683b07c3c64abf2319fcc4367a2b183b (diff) | |
download | chromium_src-c01203ed96d3e8b4d3f5b50328c047e88ff379b6.zip chromium_src-c01203ed96d3e8b4d3f5b50328c047e88ff379b6.tar.gz chromium_src-c01203ed96d3e8b4d3f5b50328c047e88ff379b6.tar.bz2 |
Roll FFmpeg DEPS + Fixup FFmpeg tests.
Pulls in the security fix for issue 152691 and adds a test for the
problematic file. Additionally fixes a few issues which have led
to rusting:
- Updates hashes after AudioBus::ToInterleaved() changes.
- Fixes a bunch of EXPECT_CALL failures and log spam since not all
tests will satisfy these expectations due to invalid files.
- Fixes a bug in the hashing code when NullAudioSink is never
initialized.
BUG=152691
TEST=unit tests.
Review URL: https://codereview.chromium.org/10989089
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159352 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/audio/null_audio_sink.cc | 5 | ||||
-rw-r--r-- | media/ffmpeg/ffmpeg_regression_tests.cc | 71 | ||||
-rw-r--r-- | media/filters/pipeline_integration_test.cc | 14 | ||||
-rw-r--r-- | media/filters/pipeline_integration_test_base.cc | 13 |
4 files changed, 60 insertions, 43 deletions
diff --git a/media/audio/null_audio_sink.cc b/media/audio/null_audio_sink.cc index eab0479..c93ceb1 100644 --- a/media/audio/null_audio_sink.cc +++ b/media/audio/null_audio_sink.cc @@ -121,14 +121,17 @@ std::string NullAudioSink::GetAudioHashForTesting() { DCHECK(hash_audio_for_testing_); // If initialize failed or was never called, ensure we return an empty hash. + int channels = 1; if (!initialized_) { md5_channel_contexts_.reset(new base::MD5Context[1]); base::MD5Init(&md5_channel_contexts_[0]); + } else { + channels = audio_bus_->channels(); } // Hash all channels into the first channel. base::MD5Digest digest; - for (int i = 1; i < audio_bus_->channels(); i++) { + for (int i = 1; i < channels; i++) { base::MD5Final(&digest, &md5_channel_contexts_[i]); base::MD5Update(&md5_channel_contexts_[0], base::StringPiece( reinterpret_cast<char*>(&digest), sizeof(base::MD5Digest))); diff --git a/media/ffmpeg/ffmpeg_regression_tests.cc b/media/ffmpeg/ffmpeg_regression_tests.cc index 33b4b1f..8fce919 100644 --- a/media/ffmpeg/ffmpeg_regression_tests.cc +++ b/media/ffmpeg/ffmpeg_regression_tests.cc @@ -93,29 +93,29 @@ class FlakyFFmpegRegressionTest // Test cases from issues. FFMPEG_TEST_CASE(Cr47325, "security/47325.mp4", PIPELINE_OK, PIPELINE_OK, "2a7a938c6b5979621cec998f02d9bbb6", - "511bbbfd42f5bedc1a11670a5b3299c7"); + "efbc63a850c9f8f51942f6a6029eb00f"); FFMPEG_TEST_CASE(Cr47761, "content/crbug47761.ogg", PIPELINE_OK, PIPELINE_OK, kNullHash, - "7790097fe63d2e95bcc8d4f1ac92168d"); + "f45b9d7556f39dd811700ec72cb71483"); FFMPEG_TEST_CASE(Cr50045, "content/crbug50045.mp4", PIPELINE_OK, PIPELINE_OK, "c345e9ef9ebfc6bfbcbe3f0ddc3125ba", - "d429bc20b7f1eafd0d8179fd128a94ed"); + "39cc70f744944eb01da947b8cf6fcd58"); FFMPEG_TEST_CASE(Cr62127, "content/crbug62127.webm", PIPELINE_OK, PIPELINE_OK, "a064b2776fc5aef3e9cba47967a75db9", kNullHash); FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK, kNullHash, - "a9a6d483666f3dc029a58a0fd1544002"); + "0cff252cd46867d26c42a96e6a2e2376"); FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash); FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK, "c16691cc9178db3adbf7e562cadcd6e6", - "51347b4b4ce86562a833df3ff6af0fff"); + "816d9a772a449bc29f65f58244ee04c9"); FFMPEG_TEST_CASE(Cr101458, "security/101458.webm", DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash); FFMPEG_TEST_CASE(Cr108416, "security/108416.webm", PIPELINE_OK, PIPELINE_OK, "5cb3a934795cd552753dec7687928291", - "5ad0c25fb915022824dc65e4fe15bffc"); + "3e576c21f83f3c00719dbe62998d71cb"); FFMPEG_TEST_CASE(Cr110849, "security/110849.mkv", DEMUXER_ERROR_NO_SUPPORTED_STREAMS, DEMUXER_ERROR_NO_SUPPORTED_STREAMS, kNullHash, kNullHash); @@ -125,16 +125,16 @@ FFMPEG_TEST_CASE(Cr112384, "security/112384.webm", FFMPEG_TEST_CASE(Cr112670, "security/112670.mp4", PIPELINE_ERROR_DECODE, PIPELINE_ERROR_DECODE, kNullHash, "59adb24ef3cdbe0297f05b395827453f"); -FFMPEG_TEST_CASE(Cr112976, "security/112976.ogg", PIPELINE_OK, PIPELINE_OK, - kNullHash, - "d23bacec582c94b8a6dc53b0971bf67e"); +FFMPEG_TEST_CASE(Cr112976, "security/112976.ogg", PIPELINE_OK, + PIPELINE_ERROR_DECODE, kNullHash, + "ef79f7c5805561908805eb0bb7097bb4"); FFMPEG_TEST_CASE(Cr116927, "security/116927.ogv", PIPELINE_ERROR_DECODE, PIPELINE_ERROR_DECODE, kNullHash, kNullHash); FFMPEG_TEST_CASE(Cr117912, "security/117912.webm", DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN, kNullHash, kNullHash); FFMPEG_TEST_CASE(Cr123481, "security/123481.ogv", PIPELINE_OK, PIPELINE_OK, "e6dd853fcbd746c8bb2ab2b8fc376fc7", - "da909399f17e8f8ad7f1fcb3c4ccc33a"); + "c96a166a09061ca94202903d7824cf04"); FFMPEG_TEST_CASE(Cr132779, "security/132779.webm", DEMUXER_ERROR_COULD_NOT_PARSE, DEMUXER_ERROR_COULD_NOT_PARSE, kNullHash, kNullHash); @@ -146,15 +146,18 @@ FFMPEG_TEST_CASE(Cr140647, "security/140647.ogv", kNullHash, kNullHash); FFMPEG_TEST_CASE(Cr142738, "content/crbug142738.ogg", PIPELINE_OK, PIPELINE_OK, kNullHash, - "70deafc85a38a6711a3441c8a75414c2"); + "03a9591e5b596eb848feeafd7693f371"); +FFMPEG_TEST_CASE(Cr152691, "security/152691.mp3", PIPELINE_ERROR_DECODE, + PIPELINE_ERROR_DECODE, kNullHash, + "59adb24ef3cdbe0297f05b395827453f"); // General MKV test cases. FFMPEG_TEST_CASE(MKV_0, "security/nested_tags_lang.mka.627.628", PIPELINE_OK, PIPELINE_ERROR_DECODE, kNullHash, - "abc9702fc46f49d6f26da5c62d118cf7"); + "7d1d74b9801002d983e7df3d52dd6db6"); FFMPEG_TEST_CASE(MKV_1, "security/nested_tags_lang.mka.667.628", PIPELINE_OK, PIPELINE_ERROR_DECODE, kNullHash, - "414669ce405e681bda578f90c6c08951"); + "7d04ad131b4b07e04406159a17537a54"); // General MP4 test cases. FFMPEG_TEST_CASE(MP4_0, "security/aac.10419.mp4", PIPELINE_OK, PIPELINE_OK, @@ -163,7 +166,7 @@ FFMPEG_TEST_CASE(MP4_1, "security/clockh264aac_200021889.mp4", DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN, kNullHash, kNullHash); FFMPEG_TEST_CASE(MP4_2, "security/clockh264aac_200701257.mp4", PIPELINE_OK, - PIPELINE_OK, kNullHash, "d8bee104916f9f10db767d13400296b6"); + PIPELINE_OK, kNullHash, "d4fea8297ca1c5ad7bbcd858864f66d9"); FFMPEG_TEST_CASE(MP4_5, "security/clockh264aac_3022500.mp4", DEMUXER_ERROR_NO_SUPPORTED_STREAMS, DEMUXER_ERROR_NO_SUPPORTED_STREAMS, kNullHash, kNullHash); @@ -180,7 +183,7 @@ FFMPEG_TEST_CASE(MP4_9, "security/smclockmp4aac_1_0.mp4", DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN, kNullHash, kNullHash); FFMPEG_TEST_CASE(MP4_11, "security/null1.mp4", PIPELINE_OK, PIPELINE_OK, - kNullHash, "f20676c5de9b3c7c174c141762afb957"); + kNullHash, "d30daffed220266a133b27e00b892558"); FFMPEG_TEST_CASE(MP4_16, "security/looping2.mov", DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN, kNullHash, kNullHash); @@ -250,45 +253,45 @@ FFMPEG_TEST_CASE(WEBM_5, "content/frame_size_change.webm", PIPELINE_OK, // Audio Functional Tests FFMPEG_TEST_CASE(AUDIO_GAMING_0, "content/gaming/a_220_00.mp3", PIPELINE_OK, - PIPELINE_OK, kNullHash, "5e60018ab1b30a82d53dccb759ab25b2"); + PIPELINE_OK, kNullHash, "1693d9a1e498b13c2a7fb8e7e62db880"); FFMPEG_TEST_CASE(AUDIO_GAMING_1, "content/gaming/a_220_00_v2.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "6a79b3c593609f3bdfbea3727c658c73"); + PIPELINE_OK, kNullHash, "2fa0e9fca48759a7de1c22418fba7ea0"); FFMPEG_TEST_CASE(AUDIO_GAMING_2, "content/gaming/ai_laser1.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "f587bfce23072efaec3d78316a5f2af1"); + PIPELINE_OK, kNullHash, "d4f331b0f7f04e94cd70f037a1091c2b"); FFMPEG_TEST_CASE(AUDIO_GAMING_3, "content/gaming/ai_laser2.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "5dc6dab55a2f80cb17be519d62bd2781"); + PIPELINE_OK, kNullHash, "7b0eccb651e5572711f9c8826cc14c3c"); FFMPEG_TEST_CASE(AUDIO_GAMING_4, "content/gaming/ai_laser3.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "5f913060d01365e9999f81f550f4823f"); + PIPELINE_OK, kNullHash, "cd977a2dd4fa570f1a7392fc9948f184"); FFMPEG_TEST_CASE(AUDIO_GAMING_5, "content/gaming/ai_laser4.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "43be1bdfaa73d0f2cfecca0f4664fe1d"); + PIPELINE_OK, kNullHash, "155caa85c878abae43428f424cdc8848"); FFMPEG_TEST_CASE(AUDIO_GAMING_6, "content/gaming/ai_laser5.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "786af83e7ad2de3c1c31270e7d401a58"); + PIPELINE_OK, kNullHash, "c0f7768ac3c72aaf26ac7b6070d2392a"); FFMPEG_TEST_CASE(AUDIO_GAMING_7, "content/gaming/footstep1.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "2a4a41794b2e0330eb89ac2dce39db41"); + PIPELINE_OK, kNullHash, "46fab3db625f0f9b655b9affbb1fff25"); FFMPEG_TEST_CASE(AUDIO_GAMING_8, "content/gaming/footstep3.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "294d37789cd48c2c043362742f67efd3"); + PIPELINE_OK, kNullHash, "38b84b04eb3f1993eb97b5d46fa2a444"); FFMPEG_TEST_CASE(AUDIO_GAMING_9, "content/gaming/footstep4.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "45cbcc62aff633ef3b5b504db8a6f57c"); + PIPELINE_OK, kNullHash, "7a3927c3026fa96562b6c19950df0be0"); FFMPEG_TEST_CASE(AUDIO_GAMING_10, "content/gaming/laser1.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "7c85c120e78c1b4688517191d368123f"); + PIPELINE_OK, kNullHash, "d2750f18ffce52f3763daba52117b66b"); FFMPEG_TEST_CASE(AUDIO_GAMING_11, "content/gaming/laser2.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "a2a5af1fd64b4451a2a8ae50d94466c2"); + PIPELINE_OK, kNullHash, "bb398db9b2873e03a06d486d0a6f6d3a"); FFMPEG_TEST_CASE(AUDIO_GAMING_12, "content/gaming/laser3.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "7d268f3271670e274b0bed923af4de58"); + PIPELINE_OK, kNullHash, "deb996d817e155ecd56766749d856e74"); FFMPEG_TEST_CASE(AUDIO_GAMING_13, "content/gaming/leg1.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "c2b9710bc58eb0d3d48558bbf60cecce"); + PIPELINE_OK, kNullHash, "556e339fd0d1bdcb2d98f69063614067"); FFMPEG_TEST_CASE(AUDIO_GAMING_14, "content/gaming/leg2.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "d9e28366eec434b6198acd4b6ab8854e"); + PIPELINE_OK, kNullHash, "313344cc2c02db5b23e336a9523b0c4a"); FFMPEG_TEST_CASE(AUDIO_GAMING_15, "content/gaming/leg3.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "80e5314b9bda1a3d83d09cc1d89127b1"); + PIPELINE_OK, kNullHash, "25730f36ed51ba07eacca9c2b6235e6c"); FFMPEG_TEST_CASE(AUDIO_GAMING_16, "content/gaming/lock_on.ogg", PIPELINE_OK, - PIPELINE_OK, kNullHash, "1d64e8b2642c5e39c40c3a40f7f28dcc"); + PIPELINE_OK, kNullHash, "92a3af2fc3597e7aaf5b06748daf5d6a"); FFMPEG_TEST_CASE(AUDIO_GAMING_17, "content/gaming/enemy_lock_on.ogg", PIPELINE_OK, PIPELINE_OK, kNullHash, - "937fd55ea90cfecea945b3b44ca314bf"); + "9670d8f5a668cf85f8ae8d6f8e0fdcdc"); FFMPEG_TEST_CASE(AUDIO_GAMING_18, "content/gaming/rocket_launcher.mp3", PIPELINE_OK, PIPELINE_OK, kNullHash, - "05289a50acd15fa1357fe6234f82c3fe"); + "bd8b70f6452360db7cca5c34b6e72844"); // Allocate gigabytes of memory, likely can't be run on 32bit machines. FFMPEG_TEST_CASE(BIG_MEM_1, "security/bigmem1.mov", diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc index 019f28a..ffafb0e 100644 --- a/media/filters/pipeline_integration_test.cc +++ b/media/filters/pipeline_integration_test.cc @@ -11,6 +11,8 @@ #include "media/base/test_data_util.h" #include "media/crypto/aes_decryptor.h" +using testing::AtMost; + namespace media { static const char kSourceId[] = "SourceId"; @@ -204,8 +206,10 @@ class PipelineIntegrationTest public PipelineIntegrationTestBase { public: void StartPipelineWithMediaSource(MockMediaSource* source) { - EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata)); - EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted)); + EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata)) + .Times(AtMost(1)); + EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted)) + .Times(AtMost(1)); pipeline_->Start( CreateFilterCollection(source->demuxer(), NULL), base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), @@ -220,8 +224,10 @@ class PipelineIntegrationTest void StartPipelineWithEncryptedMedia( MockMediaSource* source, FakeDecryptorClient* encrypted_media) { - EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata)); - EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted)); + EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata)) + .Times(AtMost(1)); + EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted)) + .Times(AtMost(1)); pipeline_->Start( CreateFilterCollection(source->demuxer(), encrypted_media->decryptor()), base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), diff --git a/media/filters/pipeline_integration_test_base.cc b/media/filters/pipeline_integration_test_base.cc index 6aae526..7c1cc5d 100644 --- a/media/filters/pipeline_integration_test_base.cc +++ b/media/filters/pipeline_integration_test_base.cc @@ -14,6 +14,7 @@ #include "media/filters/file_data_source.h" using ::testing::AnyNumber; +using ::testing::AtMost; namespace media { @@ -88,8 +89,10 @@ void PipelineIntegrationTestBase::OnError(PipelineStatus status) { bool PipelineIntegrationTestBase::Start(const std::string& url, PipelineStatus expected_status) { - EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata)); - EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted)); + EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata)) + .Times(AtMost(1)); + EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted)) + .Times(AtMost(1)); pipeline_->Start( CreateFilterCollection(url), base::Bind(&PipelineIntegrationTestBase::OnEnded, base::Unretained(this)), @@ -109,8 +112,10 @@ bool PipelineIntegrationTestBase::Start(const std::string& url, } bool PipelineIntegrationTestBase::Start(const std::string& url) { - EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata)); - EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted)); + EXPECT_CALL(*this, OnBufferingState(Pipeline::kHaveMetadata)) + .Times(AtMost(1)); + EXPECT_CALL(*this, OnBufferingState(Pipeline::kPrerollCompleted)) + .Times(AtMost(1)); pipeline_->Start( CreateFilterCollection(url), base::Bind(&PipelineIntegrationTestBase::OnEnded, base::Unretained(this)), |