summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DEPS4
-rw-r--r--media/ffmpeg/ffmpeg_regression_tests.cc267
-rw-r--r--media/filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc28
-rw-r--r--media/filters/pipeline_integration_test_base.cc3
-rw-r--r--media/filters/pipeline_integration_test_base.h7
-rw-r--r--tools/valgrind/tsan/suppressions.txt9
-rw-r--r--tools/valgrind/tsan/suppressions_win32.txt11
-rw-r--r--webkit/media/crypto/ppapi/ffmpeg_cdm_audio_decoder.cc2
-rw-r--r--webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.cc8
9 files changed, 187 insertions, 152 deletions
diff --git a/DEPS b/DEPS
index a403dc4..1f4e600 100644
--- a/DEPS
+++ b/DEPS
@@ -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": "198257",
- "ffmpeg_hash": "04db474e52bae0eef2cd22341aca1caf427411de",
+ "ffmpeg_revision": "200366",
+ "ffmpeg_hash": "c5c56fa61a9bf2916cbd734c201e099a6500845f",
"sfntly_revision": "134",
"skia_revision": "9130",
diff --git a/media/ffmpeg/ffmpeg_regression_tests.cc b/media/ffmpeg/ffmpeg_regression_tests.cc
index 7b66813..0d27ac8 100644
--- a/media/ffmpeg/ffmpeg_regression_tests.cc
+++ b/media/ffmpeg/ffmpeg_regression_tests.cc
@@ -86,254 +86,273 @@ class FlakyFFmpegRegressionTest
video_md5, \
audio_md5)));
-#define DISABLED_FFMPEG_TEST_CASE(name, fn) \
- INSTANTIATE_TEST_CASE_P(DISABLED_##name, FlakyFFmpegRegressionTest, \
+#define FLAKY_FFMPEG_TEST_CASE(name, fn) \
+ INSTANTIATE_TEST_CASE_P(FLAKY_##name, FlakyFFmpegRegressionTest, \
testing::Values(FlakyRegressionTestData(fn)));
// Test cases from issues.
FFMPEG_TEST_CASE(Cr47325, "security/47325.mp4", PIPELINE_OK, PIPELINE_OK,
"2a7a938c6b5979621cec998f02d9bbb6",
- "efbc63a850c9f8f51942f6a6029eb00f");
+ "3.61,1.64,-3.24,0.12,1.50,-0.86,");
FFMPEG_TEST_CASE(Cr47761, "content/crbug47761.ogg", PIPELINE_OK, PIPELINE_OK,
- kNullHash,
- "f45b9d7556f39dd811700ec72cb71483");
+ kNullVideoHash,
+ "8.89,8.55,8.88,8.01,8.23,7.69,");
FFMPEG_TEST_CASE(Cr50045, "content/crbug50045.mp4", PIPELINE_OK, PIPELINE_OK,
"c345e9ef9ebfc6bfbcbe3f0ddc3125ba",
- "73d65d9cc6ce25060b7510bd74678c26");
-FFMPEG_TEST_CASE(Cr62127, "content/crbug62127.webm", PIPELINE_ERROR_DECODE,
- PIPELINE_ERROR_DECODE, "d41d8cd98f00b204e9800998ecf8427e",
- kNullHash);
+ "2.72,-6.27,-6.11,-3.17,-5.58,1.26,");
+FFMPEG_TEST_CASE(Cr62127, "content/crbug62127.webm", PIPELINE_OK,
+ PIPELINE_OK, "a064b2776fc5aef3e9cba47967a75db9",
+ kNullAudioHash);
FFMPEG_TEST_CASE(Cr93620, "security/93620.ogg", PIPELINE_OK, PIPELINE_OK,
- kNullHash,
- "0cff252cd46867d26c42a96e6a2e2376");
+ kNullVideoHash,
+ "-10.55,-10.10,-10.42,-10.35,-10.29,-10.72,");
FFMPEG_TEST_CASE(Cr100492, "security/100492.webm", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(Cr100543, "security/100543.webm", PIPELINE_OK, PIPELINE_OK,
"c16691cc9178db3adbf7e562cadcd6e6",
- "816d9a772a449bc29f65f58244ee04c9");
+ "1211.73,304.89,1311.54,371.34,1283.06,299.63,");
FFMPEG_TEST_CASE(Cr101458, "security/101458.webm", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(Cr108416, "security/108416.webm", PIPELINE_OK, PIPELINE_OK,
"5cb3a934795cd552753dec7687928291",
- "3e576c21f83f3c00719dbe62998d71cb");
+ "-17.87,-37.20,-23.33,45.57,8.13,-9.92,");
FFMPEG_TEST_CASE(Cr110849, "security/110849.mkv",
DEMUXER_ERROR_COULD_NOT_OPEN,
- DEMUXER_ERROR_NO_SUPPORTED_STREAMS, kNullHash, kNullHash);
+ DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(Cr112384, "security/112384.webm",
DEMUXER_ERROR_COULD_NOT_PARSE, DEMUXER_ERROR_COULD_NOT_PARSE,
- kNullHash, kNullHash);
-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_ERROR_DECODE, kNullHash,
- "ef79f7c5805561908805eb0bb7097bb4");
-FFMPEG_TEST_CASE(Cr116927, "security/116927.ogv", DEMUXER_ERROR_COULD_NOT_OPEN,
- DEMUXER_ERROR_COULD_NOT_OPEN, kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
+
FFMPEG_TEST_CASE(Cr117912, "security/117912.webm", DEMUXER_ERROR_COULD_NOT_OPEN,
- DEMUXER_ERROR_COULD_NOT_OPEN, kNullHash, kNullHash);
+ DEMUXER_ERROR_COULD_NOT_OPEN, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(Cr123481, "security/123481.ogv", PIPELINE_OK,
PIPELINE_OK, "e6dd853fcbd746c8bb2ab2b8fc376fc7",
- "c96a166a09061ca94202903d7824cf04");
+ "1.28,-0.32,-0.81,0.08,1.66,0.89,");
FFMPEG_TEST_CASE(Cr132779, "security/132779.webm",
DEMUXER_ERROR_COULD_NOT_PARSE, DEMUXER_ERROR_COULD_NOT_PARSE,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(Cr140165, "security/140165.ogg", PIPELINE_ERROR_DECODE,
- PIPELINE_ERROR_DECODE, kNullHash,
- "bd42757e42bdada18cb9441ee4ef8313");
+ PIPELINE_ERROR_DECODE, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(Cr140647, "security/140647.ogv", DEMUXER_ERROR_COULD_NOT_OPEN,
- DEMUXER_ERROR_COULD_NOT_OPEN, kNullHash, kNullHash);
+ DEMUXER_ERROR_COULD_NOT_OPEN, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(Cr142738, "content/crbug142738.ogg", PIPELINE_OK, PIPELINE_OK,
- kNullHash,
- "03a9591e5b596eb848feeafd7693f371");
+ kNullVideoHash,
+ "-1.22,0.45,1.79,1.80,-0.30,-1.21,");
FFMPEG_TEST_CASE(Cr152691, "security/152691.mp3", PIPELINE_ERROR_DECODE,
- PIPELINE_ERROR_DECODE, kNullHash,
- "59adb24ef3cdbe0297f05b395827453f");
-FFMPEG_TEST_CASE(Cr161639, "security/161639.m4a", PIPELINE_OK, PIPELINE_OK,
- kNullHash, "97ae2fa2a2e9ff3c2cf17be96b08bbe8");
+ PIPELINE_ERROR_DECODE, kNullVideoHash, kNullAudioHash);
+FFMPEG_TEST_CASE(Cr161639, "security/161639.m4a", PIPELINE_ERROR_DECODE,
+ PIPELINE_ERROR_DECODE, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(Cr222754, "security/222754.mp4", PIPELINE_ERROR_DECODE,
- PIPELINE_ERROR_DECODE, kNullHash, kNullHash);
-
-// General MKV test cases.
-FFMPEG_TEST_CASE(MKV_0, "security/nested_tags_lang.mka.627.628", PIPELINE_OK,
- PIPELINE_ERROR_DECODE, kNullHash,
- "3fc4e8ef212df08c61acce3db34b2d09");
-FFMPEG_TEST_CASE(MKV_1, "security/nested_tags_lang.mka.667.628", PIPELINE_OK,
- PIPELINE_ERROR_DECODE, kNullHash,
- "2f5ad3e7dd25fa5c0e8f26879953ef0f");
+ PIPELINE_ERROR_DECODE, kNullVideoHash, kNullAudioHash);
+FFMPEG_TEST_CASE(Cr234630a, "security/234630a.mov", PIPELINE_OK,
+ PIPELINE_OK, kNullVideoHash,
+ "-15.52,-18.90,-15.33,-16.68,-14.41,-15.89,");
+FFMPEG_TEST_CASE(Cr234630b, "security/234630b.mov", PIPELINE_ERROR_DECODE,
+ PIPELINE_ERROR_DECODE, kNullVideoHash, kNullAudioHash);
// General MP4 test cases.
FFMPEG_TEST_CASE(MP4_0, "security/aac.10419.mp4", DEMUXER_ERROR_COULD_NOT_OPEN,
- DEMUXER_ERROR_COULD_NOT_OPEN, kNullHash, kNullHash);
+ DEMUXER_ERROR_COULD_NOT_OPEN, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(MP4_1, "security/clockh264aac_200021889.mp4",
DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(MP4_2, "security/clockh264aac_200701257.mp4", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "d41d8cd98f00b204e9800998ecf8427e");
+ PIPELINE_OK, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(MP4_5, "security/clockh264aac_3022500.mp4",
DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
- DEMUXER_ERROR_NO_SUPPORTED_STREAMS, kNullHash, kNullHash);
+ DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(MP4_6, "security/clockh264aac_344289.mp4", PIPELINE_OK,
- PIPELINE_OK, kNullHash, kNullHash);
+ PIPELINE_OK, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(MP4_7, "security/clockh264mp3_187697.mp4",
DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
DEMUXER_ERROR_NO_SUPPORTED_STREAMS,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(MP4_8, "security/h264.705767.mp4",
DEMUXER_ERROR_COULD_NOT_PARSE, DEMUXER_ERROR_COULD_NOT_PARSE,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
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, "7397188f229211987268f39ef5a45b3c");
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(MP4_16, "security/looping2.mov",
DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
// General OGV test cases.
FFMPEG_TEST_CASE(OGV_1, "security/out.163.ogv", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_2, "security/out.391.ogv", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_5, "security/smclocktheora_1_0.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_7, "security/smclocktheora_1_102.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_8, "security/smclocktheora_1_104.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_9, "security/smclocktheora_1_110.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_10, "security/smclocktheora_1_179.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_11, "security/smclocktheora_1_20.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_12, "security/smclocktheora_1_723.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_14, "security/smclocktheora_2_10405.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_15, "security/smclocktheora_2_10619.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_16, "security/smclocktheora_2_1075.ogv",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
-FFMPEG_TEST_CASE(OGV_17, "security/vorbis.482086.ogv",
- DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_18, "security/wav.711.ogv", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_19, "security/null1.ogv", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_20, "security/null2.ogv", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_21, "security/assert1.ogv", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(OGV_22, "security/assert2.ogv", DECODER_ERROR_NOT_SUPPORTED,
- DECODER_ERROR_NOT_SUPPORTED, kNullHash, kNullHash);
+ DECODER_ERROR_NOT_SUPPORTED, kNullVideoHash, kNullAudioHash);
// General WebM test cases.
FFMPEG_TEST_CASE(WEBM_1, "security/no-bug.webm", PIPELINE_OK, PIPELINE_OK,
- "39e92700cbb77478fd63f49db855e7e5", kNullHash);
-FFMPEG_TEST_CASE(WEBM_2, "security/uninitialize.webm", PIPELINE_ERROR_DECODE,
- PIPELINE_ERROR_DECODE, kNullHash, kNullHash);
+ "39e92700cbb77478fd63f49db855e7e5", kNullAudioHash);
FFMPEG_TEST_CASE(WEBM_3, "security/out.webm.139771.2965",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(WEBM_4, "security/out.webm.68798.1929",
DECODER_ERROR_NOT_SUPPORTED, DECODER_ERROR_NOT_SUPPORTED,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(WEBM_5, "content/frame_size_change.webm", PIPELINE_OK,
- PIPELINE_OK, "d8fcf2896b7400a2261bac9e9ea930f8", kNullHash);
+ PIPELINE_OK, "d8fcf2896b7400a2261bac9e9ea930f8",
+ kNullAudioHash);
// Audio Functional Tests
FFMPEG_TEST_CASE(AUDIO_GAMING_0, "content/gaming/a_220_00.mp3", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "3c2e03569e2af83415a8f32065425f8c");
+ PIPELINE_OK, kNullVideoHash,
+ "0.36,1.25,2.98,4.29,4.19,2.76,");
FFMPEG_TEST_CASE(AUDIO_GAMING_1, "content/gaming/a_220_00_v2.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "2fa0e9fca48759a7de1c22418fba7ea0");
+ PIPELINE_OK, kNullVideoHash,
+ "2.17,3.31,5.15,6.33,5.97,4.35,");
FFMPEG_TEST_CASE(AUDIO_GAMING_2, "content/gaming/ai_laser1.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "d4f331b0f7f04e94cd70f037a1091c2b");
+ PIPELINE_OK, kNullVideoHash,
+ "7.70,10.81,13.19,10.07,7.39,7.56,");
FFMPEG_TEST_CASE(AUDIO_GAMING_3, "content/gaming/ai_laser2.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "7b0eccb651e5572711f9c8826cc14c3c");
+ PIPELINE_OK, kNullVideoHash,
+ "5.99,8.04,9.71,8.69,7.81,7.52,");
FFMPEG_TEST_CASE(AUDIO_GAMING_4, "content/gaming/ai_laser3.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "cd977a2dd4fa570f1a7392fc9948f184");
+ PIPELINE_OK, kNullVideoHash,
+ "-0.32,1.44,3.75,5.88,6.32,3.22,");
FFMPEG_TEST_CASE(AUDIO_GAMING_5, "content/gaming/ai_laser4.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "155caa85c878abae43428f424cdc8848");
+ PIPELINE_OK, kNullVideoHash,
+ "4.75,4.16,2.21,3.01,5.51,6.11,");
FFMPEG_TEST_CASE(AUDIO_GAMING_6, "content/gaming/ai_laser5.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "c0f7768ac3c72aaf26ac7b6070d2392a");
+ PIPELINE_OK, kNullVideoHash,
+ "6.04,7.46,8.78,7.32,4.16,3.97,");
FFMPEG_TEST_CASE(AUDIO_GAMING_7, "content/gaming/footstep1.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "46fab3db625f0f9b655b9affbb1fff25");
+ PIPELINE_OK, kNullVideoHash,
+ "-0.50,0.29,2.35,4.79,5.14,2.24,");
FFMPEG_TEST_CASE(AUDIO_GAMING_8, "content/gaming/footstep3.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "38b84b04eb3f1993eb97b5d46fa2a444");
+ PIPELINE_OK, kNullVideoHash,
+ "-2.87,-3.05,-4.10,-3.20,-2.20,-2.20,");
FFMPEG_TEST_CASE(AUDIO_GAMING_9, "content/gaming/footstep4.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "7a3927c3026fa96562b6c19950df0be0");
+ PIPELINE_OK, kNullVideoHash,
+ "10.35,10.74,11.60,12.83,12.69,10.67,");
FFMPEG_TEST_CASE(AUDIO_GAMING_10, "content/gaming/laser1.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "d2750f18ffce52f3763daba52117b66b");
+ PIPELINE_OK, kNullVideoHash,
+ "-9.48,-12.94,-1.75,7.66,5.61,-0.58,");
FFMPEG_TEST_CASE(AUDIO_GAMING_11, "content/gaming/laser2.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "bb398db9b2873e03a06d486d0a6f6d3a");
+ PIPELINE_OK, kNullVideoHash,
+ "-7.53,-6.28,3.37,0.73,-5.83,-4.70,");
FFMPEG_TEST_CASE(AUDIO_GAMING_12, "content/gaming/laser3.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "deb996d817e155ecd56766749d856e74");
+ PIPELINE_OK, kNullVideoHash,
+ "-13.62,-6.55,2.52,-10.10,-10.68,-5.43,");
FFMPEG_TEST_CASE(AUDIO_GAMING_13, "content/gaming/leg1.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "556e339fd0d1bdcb2d98f69063614067");
+ PIPELINE_OK, kNullVideoHash,
+ "5.62,5.79,5.81,5.60,6.18,6.15,");
FFMPEG_TEST_CASE(AUDIO_GAMING_14, "content/gaming/leg2.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "313344cc2c02db5b23e336a9523b0c4a");
+ PIPELINE_OK, kNullVideoHash,
+ "-0.88,1.32,2.74,3.07,0.88,-0.03,");
FFMPEG_TEST_CASE(AUDIO_GAMING_15, "content/gaming/leg3.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "25730f36ed51ba07eacca9c2b6235e6c");
+ PIPELINE_OK, kNullVideoHash,
+ "17.77,18.59,19.57,18.84,17.62,17.22,");
FFMPEG_TEST_CASE(AUDIO_GAMING_16, "content/gaming/lock_on.ogg", PIPELINE_OK,
- PIPELINE_OK, kNullHash, "92a3af2fc3597e7aaf5b06748daf5d6a");
+ PIPELINE_OK, kNullVideoHash,
+ "3.08,-4.33,-5.04,-0.24,1.83,5.16,");
FFMPEG_TEST_CASE(AUDIO_GAMING_17, "content/gaming/enemy_lock_on.ogg",
- PIPELINE_OK, PIPELINE_OK, kNullHash,
- "9670d8f5a668cf85f8ae8d6f8e0fdcdc");
+ PIPELINE_OK, PIPELINE_OK, kNullVideoHash,
+ "-2.24,-1.00,-2.75,-0.87,1.11,-0.58,");
FFMPEG_TEST_CASE(AUDIO_GAMING_18, "content/gaming/rocket_launcher.mp3",
- PIPELINE_OK, PIPELINE_OK, kNullHash,
- "91354320606584f4404514d914d01ee0");
+ PIPELINE_OK, PIPELINE_OK, kNullVideoHash,
+ "-3.08,0.18,2.49,1.98,-2.20,-4.74,");
// Allocate gigabytes of memory, likely can't be run on 32bit machines.
FFMPEG_TEST_CASE(BIG_MEM_1, "security/bigmem1.mov",
DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(BIG_MEM_2, "security/looping1.mov",
DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN,
- kNullHash, kNullHash);
+ kNullVideoHash, kNullAudioHash);
FFMPEG_TEST_CASE(BIG_MEM_5, "security/looping5.mov",
DEMUXER_ERROR_COULD_NOT_OPEN, DEMUXER_ERROR_COULD_NOT_OPEN,
- kNullHash, kNullHash);
-DISABLED_FFMPEG_TEST_CASE(BIG_MEM_3, "security/looping3.mov");
-DISABLED_FFMPEG_TEST_CASE(BIG_MEM_4, "security/looping4.mov");
+ kNullVideoHash, kNullAudioHash);
+FLAKY_FFMPEG_TEST_CASE(BIG_MEM_3, "security/looping3.mov");
+FLAKY_FFMPEG_TEST_CASE(BIG_MEM_4, "security/looping4.mov");
// Flaky under threading or for other reasons. Per rbultje, most of these will
// never be reliable since FFmpeg does not guarantee consistency in error cases.
// We only really care that these don't cause crashes or errors under tooling.
-DISABLED_FFMPEG_TEST_CASE(Cr99652, "security/99652.webm");
-DISABLED_FFMPEG_TEST_CASE(Cr100464, "security/100464.webm");
-DISABLED_FFMPEG_TEST_CASE(Cr111342, "security/111342.ogm");
-DISABLED_FFMPEG_TEST_CASE(OGV_0, "security/big_dims.ogv");
-DISABLED_FFMPEG_TEST_CASE(OGV_3, "security/smclock_1_0.ogv");
-DISABLED_FFMPEG_TEST_CASE(OGV_4, "security/smclock.ogv.1.0.ogv");
-DISABLED_FFMPEG_TEST_CASE(OGV_6, "security/smclocktheora_1_10000.ogv");
-DISABLED_FFMPEG_TEST_CASE(OGV_13, "security/smclocktheora_1_790.ogv");
-DISABLED_FFMPEG_TEST_CASE(MP4_3, "security/clockh264aac_300413969.mp4");
-DISABLED_FFMPEG_TEST_CASE(MP4_4, "security/clockh264aac_301350139.mp4");
-DISABLED_FFMPEG_TEST_CASE(MP4_12, "security/assert1.mov");
+FLAKY_FFMPEG_TEST_CASE(Cr99652, "security/99652.webm");
+FLAKY_FFMPEG_TEST_CASE(Cr100464, "security/100464.webm");
+FLAKY_FFMPEG_TEST_CASE(Cr111342, "security/111342.ogm");
+FLAKY_FFMPEG_TEST_CASE(OGV_0, "security/big_dims.ogv");
+FLAKY_FFMPEG_TEST_CASE(OGV_3, "security/smclock_1_0.ogv");
+FLAKY_FFMPEG_TEST_CASE(OGV_4, "security/smclock.ogv.1.0.ogv");
+FLAKY_FFMPEG_TEST_CASE(OGV_6, "security/smclocktheora_1_10000.ogv");
+FLAKY_FFMPEG_TEST_CASE(OGV_13, "security/smclocktheora_1_790.ogv");
+FLAKY_FFMPEG_TEST_CASE(MP4_3, "security/clockh264aac_300413969.mp4");
+FLAKY_FFMPEG_TEST_CASE(MP4_4, "security/clockh264aac_301350139.mp4");
+FLAKY_FFMPEG_TEST_CASE(MP4_12, "security/assert1.mov");
// Not really flaky, but can't pass the seek test.
-DISABLED_FFMPEG_TEST_CASE(MP4_10, "security/null1.m4a");
+FLAKY_FFMPEG_TEST_CASE(MP4_10, "security/null1.m4a");
+
+// TODO(wolenetz/dalecurtis): The following have flaky audio hash result.
+// See http://crbug.com/237371
+FLAKY_FFMPEG_TEST_CASE(Cr112976, "security/112976.ogg");
+FLAKY_FFMPEG_TEST_CASE(MKV_0, "security/nested_tags_lang.mka.627.628");
+FLAKY_FFMPEG_TEST_CASE(MKV_1, "security/nested_tags_lang.mka.667.628");
+FLAKY_FFMPEG_TEST_CASE(MP4_11, "security/null1.mp4");
+
+// TODO(wolenetz/dalecurtis): The following have flaky init status: on mac
+// ia32 Chrome, observed PIPELINE_OK instead of DECODER_ERROR_NOT_SUPPORTED.
+FLAKY_FFMPEG_TEST_CASE(Cr112670, "security/112670.mp4");
+FLAKY_FFMPEG_TEST_CASE(OGV_17, "security/vorbis.482086.ogv");
+
+// TODO(wolenetz/dalecurtis): The following have flaky init status: on mac
+// ia32 Chrome, observed DUMUXER_ERROR_NO_SUPPORTED_STREAMS instead of
+// DECODER_ERROR_NOT_SUPPORTED.
+FLAKY_FFMPEG_TEST_CASE(Cr116927, "security/116927.ogv");
+FLAKY_FFMPEG_TEST_CASE(WEBM_2, "security/uninitialize.webm");
// Videos with massive gaps between frame timestamps that result in long hangs
// with our pipeline. Should be uncommented when we support clockless playback.
// FFMPEG_TEST_CASE(WEBM_0, "security/memcpy.webm", PIPELINE_OK, PIPELINE_OK,
-// kNullHash, kNullHash);
+// kNullVideoHash, kNullAudioHash);
// FFMPEG_TEST_CASE(MP4_17, "security/assert2.mov", PIPELINE_OK, PIPELINE_OK,
-// kNullHash, kNullHash);
+// kNullVideoHash, kNullAudioHash);
// FFMPEG_TEST_CASE(OGV_23, "security/assert2.ogv", PIPELINE_OK, PIPELINE_OK,
-// kNullHash, kNullHash);
+// kNullVideoHash, kNullAudioHash);
TEST_P(FFmpegRegressionTest, BasicPlayback) {
if (GetParam().init_status == PIPELINE_OK) {
diff --git a/media/filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc b/media/filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc
index 5831883..e5a1a64 100644
--- a/media/filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc
+++ b/media/filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "media/ffmpeg/ffmpeg_common.h"
+#include "media/filters/ffmpeg_demuxer.h"
#include "media/filters/ffmpeg_h264_to_annex_b_bitstream_converter.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -284,16 +285,13 @@ class FFmpegH264ToAnnexBBitstreamConverterTest : public testing::Test {
TEST_F(FFmpegH264ToAnnexBBitstreamConverterTest, Conversion_Success) {
FFmpegH264ToAnnexBBitstreamConverter converter(&test_context_);
- AVPacket test_packet;
- CreatePacket(&test_packet, kPacketDataOkWithFieldLen4,
+ ScopedAVPacket test_packet(new AVPacket());
+ CreatePacket(test_packet.get(), kPacketDataOkWithFieldLen4,
sizeof(kPacketDataOkWithFieldLen4));
// Try out the actual conversion (should be successful and allocate new
// packet and destroy the old one).
- EXPECT_TRUE(converter.ConvertPacket(&test_packet));
-
- // Clean-up the test packet.
- av_destruct_packet(&test_packet);
+ EXPECT_TRUE(converter.ConvertPacket(test_packet.get()));
// Converter will be automatically cleaned up.
}
@@ -302,18 +300,15 @@ TEST_F(FFmpegH264ToAnnexBBitstreamConverterTest, Conversion_SuccessBigPacket) {
FFmpegH264ToAnnexBBitstreamConverter converter(&test_context_);
// Create new packet with 1000 excess bytes.
- AVPacket test_packet;
+ ScopedAVPacket test_packet(new AVPacket());
static uint8 excess_data[sizeof(kPacketDataOkWithFieldLen4) + 1000] = {0};
memcpy(excess_data, kPacketDataOkWithFieldLen4,
sizeof(kPacketDataOkWithFieldLen4));
- CreatePacket(&test_packet, excess_data, sizeof(excess_data));
+ CreatePacket(test_packet.get(), excess_data, sizeof(excess_data));
// Try out the actual conversion (should be successful and allocate new
// packet and destroy the old one as we do NOT support in place transform).
- EXPECT_TRUE(converter.ConvertPacket(&test_packet));
-
- // Clean-up the test packet.
- av_destruct_packet(&test_packet);
+ EXPECT_TRUE(converter.ConvertPacket(test_packet.get()));
// Converter will be automatically cleaned up.
}
@@ -329,16 +324,13 @@ TEST_F(FFmpegH264ToAnnexBBitstreamConverterTest, Conversion_FailureNullParams) {
EXPECT_FALSE(converter.ConvertPacket(NULL));
// Create new packet to test actual conversion.
- AVPacket test_packet;
- CreatePacket(&test_packet, kPacketDataOkWithFieldLen4,
+ ScopedAVPacket test_packet(new AVPacket());
+ CreatePacket(test_packet.get(), kPacketDataOkWithFieldLen4,
sizeof(kPacketDataOkWithFieldLen4));
// Try out the actual conversion (should be successful and allocate new
// packet and destroy the old one). This should fail due to missing extradata.
- EXPECT_FALSE(converter.ConvertPacket(&test_packet));
-
- // Clean-up the test packet.
- av_destruct_packet(&test_packet);
+ EXPECT_FALSE(converter.ConvertPacket(test_packet.get()));
// Converted will be automatically cleaned up.
}
diff --git a/media/filters/pipeline_integration_test_base.cc b/media/filters/pipeline_integration_test_base.cc
index 54cd2f8..68fa14a 100644
--- a/media/filters/pipeline_integration_test_base.cc
+++ b/media/filters/pipeline_integration_test_base.cc
@@ -21,7 +21,8 @@ using ::testing::AtMost;
namespace media {
-const char kNullHash[] = "d41d8cd98f00b204e9800998ecf8427e";
+const char kNullVideoHash[] = "d41d8cd98f00b204e9800998ecf8427e";
+const char kNullAudioHash[] = "0.00,0.00,0.00,0.00,0.00,0.00,";
PipelineIntegrationTestBase::PipelineIntegrationTestBase()
: hashing_enabled_(false),
diff --git a/media/filters/pipeline_integration_test_base.h b/media/filters/pipeline_integration_test_base.h
index 228a380..ab6b8af 100644
--- a/media/filters/pipeline_integration_test_base.h
+++ b/media/filters/pipeline_integration_test_base.h
@@ -23,8 +23,11 @@ namespace media {
class Decryptor;
class Demuxer;
-// Empty MD5 hash string. Used to verify empty audio or video tracks.
-extern const char kNullHash[];
+// Empty MD5 hash string. Used to verify empty video tracks.
+extern const char kNullVideoHash[];
+
+// Empty hash string. Used to verify empty audio tracks.
+extern const char kNullAudioHash[];
// Integration tests for Pipeline. Real demuxers, real decoders, and
// base renderer implementations are used to verify pipeline functionality. The
diff --git a/tools/valgrind/tsan/suppressions.txt b/tools/valgrind/tsan/suppressions.txt
index 9d20cef..856a8bb 100644
--- a/tools/valgrind/tsan/suppressions.txt
+++ b/tools/valgrind/tsan/suppressions.txt
@@ -1117,3 +1117,12 @@
...
fun:gfx::GtkInitFromCommandLine
}
+{
+ bug_239350
+ ThreadSanitizer:Race
+ fun:av_buffer_unref
+ fun:av_frame_unref
+ fun:avcodec_decode_video2
+ ...
+ fun:media::FFmpegVideoDecoder::Decode
+}
diff --git a/tools/valgrind/tsan/suppressions_win32.txt b/tools/valgrind/tsan/suppressions_win32.txt
index 0126199..634b5b2 100644
--- a/tools/valgrind/tsan/suppressions_win32.txt
+++ b/tools/valgrind/tsan/suppressions_win32.txt
@@ -252,3 +252,14 @@
...
fun:net::NetworkChangeNotifierWinTest::~NetworkChangeNotifierWinTest
}
+
+{
+ bug_239350
+ ThreadSanitizer:Race
+ ...
+ fun:av_freep
+ fun:av_buffer_unref
+ fun:av_frame_unref
+ ...
+ fun:media::FFmpegVideoDecoder::Decode
+}
diff --git a/webkit/media/crypto/ppapi/ffmpeg_cdm_audio_decoder.cc b/webkit/media/crypto/ppapi/ffmpeg_cdm_audio_decoder.cc
index 145a379..aff7c75 100644
--- a/webkit/media/crypto/ppapi/ffmpeg_cdm_audio_decoder.cc
+++ b/webkit/media/crypto/ppapi/ffmpeg_cdm_audio_decoder.cc
@@ -27,7 +27,7 @@ namespace webkit_media {
// Maximum number of channels with defined layout in src/media.
static const int kMaxChannels = 8;
-static CodecID CdmAudioCodecToCodecID(
+static AVCodecID CdmAudioCodecToCodecID(
cdm::AudioDecoderConfig::AudioCodec audio_codec) {
switch (audio_codec) {
case cdm::AudioDecoderConfig::kCodecVorbis:
diff --git a/webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.cc b/webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.cc
index 54a3bdf..6df16f9 100644
--- a/webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.cc
+++ b/webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.cc
@@ -44,7 +44,7 @@ static PixelFormat CdmVideoFormatToPixelFormat(cdm::VideoFormat video_format) {
return PIX_FMT_NONE;
}
-static CodecID CdmVideoCodecToCodecID(
+static AVCodecID CdmVideoCodecToCodecID(
cdm::VideoDecoderConfig::VideoCodec video_codec) {
switch (video_codec) {
case cdm::VideoDecoderConfig::kCodecVp8:
@@ -282,7 +282,7 @@ bool FFmpegCdmVideoDecoder::CopyAvFrameTo(cdm::VideoFrame* cdm_video_frame) {
}
cdm_video_frame->FrameBuffer()->SetSize(space_required);
- CopyPlane(av_frame_->base[cdm::VideoFrame::kYPlane],
+ CopyPlane(av_frame_->data[cdm::VideoFrame::kYPlane],
av_frame_->linesize[cdm::VideoFrame::kYPlane],
av_frame_->width,
av_frame_->height,
@@ -291,14 +291,14 @@ bool FFmpegCdmVideoDecoder::CopyAvFrameTo(cdm::VideoFrame* cdm_video_frame) {
const int uv_stride = av_frame_->width / 2;
const int uv_rows = av_frame_->height / 2;
- CopyPlane(av_frame_->base[cdm::VideoFrame::kUPlane],
+ CopyPlane(av_frame_->data[cdm::VideoFrame::kUPlane],
av_frame_->linesize[cdm::VideoFrame::kUPlane],
uv_stride,
uv_rows,
uv_stride,
cdm_video_frame->FrameBuffer()->Data() + y_size);
- CopyPlane(av_frame_->base[cdm::VideoFrame::kVPlane],
+ CopyPlane(av_frame_->data[cdm::VideoFrame::kVPlane],
av_frame_->linesize[cdm::VideoFrame::kVPlane],
uv_stride,
uv_rows,