Skip to content

Commit

Permalink
Roll FFmpeg for security fixes.
Browse files Browse the repository at this point in the history
Pulls in the following fixes:
70e76e2 mpegprobe: fix misdetection of mp3
a9511ce dsputil: make add_hfyu_left_prediction_sse4() support unaligned src.
12ba355 matroskadec: check element size against stream limit in ebml_parse_elem()
9c06b7f oggdec: Initialize stream index to -1 in ogg_packet.
fd73a17 oggdec: simplify start time calculation code.
6b063c8 oggdec: check stream index before using it in ogg_get_length()
7274a3f mov: dont clip timestamps at 0

Also adds the test case for 140165 which I forgot to add when fixing
that issue.  Test case exposes an issue with a recent CHECK in the audio
decoder when we recieve a buffer without timestamps.  I've changed this
into an if check + decoder error.

The AUDIO_GAMING* hashes have changed since acolwell landed a change
which strips frames with negative timestamps.

BUG=140647
TEST=valgrind+ffmpeg_regression_tests

Review URL: https://chromiumcodereview.appspot.com/10829204

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150239 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
dalecurtis@google.com committed Aug 7, 2012
1 parent 53fb556 commit ab1fe99
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 25 deletions.
4 changes: 2 additions & 2 deletions DEPS
Expand Up @@ -25,8 +25,8 @@ vars = {

# These two FFmpeg variables must be updated together. One is used for SVN
# checkouts and the other for Git checkouts.
"ffmpeg_revision": "149654",
"ffmpeg_hash": "f5a6dc3ba5038dca504545164bff477bb75a9a0e",
"ffmpeg_revision": "150165",
"ffmpeg_hash": "2079ffae30f8da6c6eed985cce00e04c31b40888",

"sfntly_revision": "134",
"skia_revision": "4959",
Expand Down
42 changes: 24 additions & 18 deletions media/ffmpeg/ffmpeg_regression_tests.cc
Expand Up @@ -97,7 +97,7 @@ FFMPEG_TEST_CASE(Cr47325, "security/47325.mp4", PIPELINE_OK, PIPELINE_OK,
"511bbbfd42f5bedc1a11670a5b3299c7");
FFMPEG_TEST_CASE(Cr47761, "content/crbug47761.ogg", PIPELINE_OK, PIPELINE_OK,
kNullHash,
"f281adf4c7531d1664e92eb05bf10aa8");
"7790097fe63d2e95bcc8d4f1ac92168d");
FFMPEG_TEST_CASE(Cr50045, "content/crbug50045.mp4", PIPELINE_OK, PIPELINE_OK,
"c345e9ef9ebfc6bfbcbe3f0ddc3125ba",
"d429bc20b7f1eafd0d8179fd128a94ed");
Expand All @@ -106,7 +106,7 @@ FFMPEG_TEST_CASE(Cr62127, "content/crbug62127.webm",
"a064b2776fc5aef3e9cba47967a75db9", kNullHash);
FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK,
kNullHash,
"a12b7a96d02f3ab68532995464275682");
"a9a6d483666f3dc029a58a0fd1544002");
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,
Expand Down Expand Up @@ -139,6 +139,12 @@ FFMPEG_TEST_CASE(Cr123481, "security/123481.ogv", PIPELINE_OK,
FFMPEG_TEST_CASE(Cr132779, "security/132779.webm",
DEMUXER_ERROR_COULD_NOT_PARSE, DEMUXER_ERROR_COULD_NOT_PARSE,
kNullHash, kNullHash);
FFMPEG_TEST_CASE(Cr140165, "security/140165.ogg", PIPELINE_ERROR_DECODE,
PIPELINE_ERROR_DECODE, kNullHash,
"bd42757e42bdada18cb9441ee4ef8313");
FFMPEG_TEST_CASE(Cr140647, "security/140647.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
kNullHash, kNullHash);

// General MKV test cases.
FFMPEG_TEST_CASE(MKV_0, "security/nested_tags_lang.mka.627.628", PIPELINE_OK,
Expand Down Expand Up @@ -246,38 +252,38 @@ FFMPEG_TEST_CASE(AUDIO_GAMING_0, "content/gaming/a_220_00.mp3", PIPELINE_OK,
FFMPEG_TEST_CASE(AUDIO_GAMING_1, "content/gaming/a_220_00_v2.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "6a79b3c593609f3bdfbea3727c658c73");
FFMPEG_TEST_CASE(AUDIO_GAMING_2, "content/gaming/ai_laser1.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "0d1e07b4374f54e3ae18dc15d7497183");
PIPELINE_OK, kNullHash, "f587bfce23072efaec3d78316a5f2af1");
FFMPEG_TEST_CASE(AUDIO_GAMING_3, "content/gaming/ai_laser2.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "46dfe271f7e7b72225e754dd7ab8ad1c");
PIPELINE_OK, kNullHash, "5dc6dab55a2f80cb17be519d62bd2781");
FFMPEG_TEST_CASE(AUDIO_GAMING_4, "content/gaming/ai_laser3.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "ef018d911c9941b778e13e1af5bec449");
PIPELINE_OK, kNullHash, "5f913060d01365e9999f81f550f4823f");
FFMPEG_TEST_CASE(AUDIO_GAMING_5, "content/gaming/ai_laser4.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "14ff475a7355826077ffad191cc09665");
PIPELINE_OK, kNullHash, "43be1bdfaa73d0f2cfecca0f4664fe1d");
FFMPEG_TEST_CASE(AUDIO_GAMING_6, "content/gaming/ai_laser5.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "351cd543f0a001b2eb5ca5fad6e384b9");
PIPELINE_OK, kNullHash, "786af83e7ad2de3c1c31270e7d401a58");
FFMPEG_TEST_CASE(AUDIO_GAMING_7, "content/gaming/footstep1.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "6edde5a895c900cf7dcd68e56abf0b0b");
PIPELINE_OK, kNullHash, "2a4a41794b2e0330eb89ac2dce39db41");
FFMPEG_TEST_CASE(AUDIO_GAMING_8, "content/gaming/footstep3.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "59c29eb093a3a6b4bbe5b269837914b9");
PIPELINE_OK, kNullHash, "294d37789cd48c2c043362742f67efd3");
FFMPEG_TEST_CASE(AUDIO_GAMING_9, "content/gaming/footstep4.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "3bd5c2b4618f189bc49f7cfd5dae91a9");
PIPELINE_OK, kNullHash, "45cbcc62aff633ef3b5b504db8a6f57c");
FFMPEG_TEST_CASE(AUDIO_GAMING_10, "content/gaming/laser1.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "199f2ccd92c278c4203665dba752b6ef");
PIPELINE_OK, kNullHash, "7c85c120e78c1b4688517191d368123f");
FFMPEG_TEST_CASE(AUDIO_GAMING_11, "content/gaming/laser2.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "a1cdedcda4edabded9c4197a374b53dd");
PIPELINE_OK, kNullHash, "a2a5af1fd64b4451a2a8ae50d94466c2");
FFMPEG_TEST_CASE(AUDIO_GAMING_12, "content/gaming/laser3.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "6ce272b185e3e6309b9878b543d1b83b");
PIPELINE_OK, kNullHash, "7d268f3271670e274b0bed923af4de58");
FFMPEG_TEST_CASE(AUDIO_GAMING_13, "content/gaming/leg1.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "7a426c86203cf6073e8c08b23f5ee57d");
PIPELINE_OK, kNullHash, "c2b9710bc58eb0d3d48558bbf60cecce");
FFMPEG_TEST_CASE(AUDIO_GAMING_14, "content/gaming/leg2.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "d2f81558cea012adbc4cc8aafdbbfa55");
PIPELINE_OK, kNullHash, "d9e28366eec434b6198acd4b6ab8854e");
FFMPEG_TEST_CASE(AUDIO_GAMING_15, "content/gaming/leg3.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "9665107f7be378111b9e1928f6ac6dce");
PIPELINE_OK, kNullHash, "80e5314b9bda1a3d83d09cc1d89127b1");
FFMPEG_TEST_CASE(AUDIO_GAMING_16, "content/gaming/lock_on.ogg", PIPELINE_OK,
PIPELINE_OK, kNullHash, "2193dc2c9c811f96950a8615f7bf47e9");
PIPELINE_OK, kNullHash, "1d64e8b2642c5e39c40c3a40f7f28dcc");
FFMPEG_TEST_CASE(AUDIO_GAMING_17, "content/gaming/enemy_lock_on.ogg",
PIPELINE_OK, PIPELINE_OK, kNullHash,
"d9d2d8b26335efc8e5589c5c44d2a979");
"937fd55ea90cfecea945b3b44ca314bf");
FFMPEG_TEST_CASE(AUDIO_GAMING_18, "content/gaming/rocket_launcher.mp3",
PIPELINE_OK, PIPELINE_OK, kNullHash,
"05289a50acd15fa1357fe6234f82c3fe");
Expand Down
13 changes: 8 additions & 5 deletions media/filters/ffmpeg_audio_decoder.cc
Expand Up @@ -178,11 +178,14 @@ void FFmpegAudioDecoder::DoDecodeBuffer(
return;
}

// Make sure we are notified if http://crbug.com/49709 returns.
CHECK(input->GetTimestamp() != kNoTimestamp() ||
output_timestamp_base_ != kNoTimestamp() ||
input->IsEndOfStream())
<< "First buffers received don't have timestamps!";
// Make sure we are notified if http://crbug.com/49709 returns. Issue also
// occurs with some damaged files.
if (!input->IsEndOfStream() && input->GetTimestamp() == kNoTimestamp() &&
output_timestamp_base_ == kNoTimestamp()) {
DVLOG(1) << "Received a buffer without timestamps!";
base::ResetAndReturn(&read_cb_).Run(kDecodeError, NULL);
return;
}

bool is_vorbis = codec_context_->codec_id == CODEC_ID_VORBIS;
if (!input->IsEndOfStream()) {
Expand Down

0 comments on commit ab1fe99

Please sign in to comment.