Chromium Code Reviews| Index: media/filters/ffmpeg_video_decoder_unittest.cc |
| diff --git a/media/filters/ffmpeg_video_decoder_unittest.cc b/media/filters/ffmpeg_video_decoder_unittest.cc |
| index 3c0af396c95a12130c23930937a09242f5f57f6b..2f3cb419e636627a9ec176be43c02d79dacd4c7d 100644 |
| --- a/media/filters/ffmpeg_video_decoder_unittest.cc |
| +++ b/media/filters/ffmpeg_video_decoder_unittest.cc |
| @@ -18,6 +18,7 @@ |
| #include "media/base/test_data_util.h" |
| #include "media/base/video_decoder.h" |
| #include "media/base/video_frame.h" |
| +#include "media/base/video_util.h" |
| #include "media/ffmpeg/ffmpeg_common.h" |
| #include "media/filters/ffmpeg_decoder_unittest.h" |
| #include "media/filters/ffmpeg_glue.h" |
| @@ -36,7 +37,7 @@ namespace media { |
| static const VideoFrame::Format kVideoFormat = VideoFrame::YV12; |
| static const gfx::Size kCodedSize(320, 240); |
| static const gfx::Rect kVisibleRect(320, 240); |
| -static const AVRational kAspectRatio = { 1, 1 }; |
| +static const gfx::Size kNaturalSize(320, 240); |
| static const uint8 kFakeKeyId[] = { 0x4b, 0x65, 0x79, 0x20, 0x49, 0x44 }; |
| static const uint8 kFakeIv[DecryptConfig::kDecryptionKeySize] = { 0 }; |
| static const uint8 kFakeCheckSum[] = { 0, 0 }; |
| @@ -87,8 +88,7 @@ class FFmpegVideoDecoderTest : public testing::Test { |
| encrypted_i_frame_buffer_ = CreateFakeEncryptedBuffer(); |
| config_.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, |
| - kVideoFormat, kCodedSize, kVisibleRect, |
| - kAspectRatio.num, kAspectRatio.den, |
| + kVideoFormat, kCodedSize, kVisibleRect, kNaturalSize, |
| NULL, 0, true); |
| } |
| @@ -246,8 +246,7 @@ TEST_F(FFmpegVideoDecoderTest, Initialize_UnsupportedDecoder) { |
| // Test avcodec_find_decoder() returning NULL. |
| VideoDecoderConfig config(kUnknownVideoCodec, VIDEO_CODEC_PROFILE_UNKNOWN, |
| kVideoFormat, |
| - kCodedSize, kVisibleRect, |
| - kAspectRatio.num, kAspectRatio.den, |
| + kCodedSize, kVisibleRect, kNaturalSize, |
| NULL, 0); |
| InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| } |
| @@ -256,8 +255,7 @@ TEST_F(FFmpegVideoDecoderTest, Initialize_UnsupportedPixelFormat) { |
| // Ensure decoder handles unsupport pixel formats without crashing. |
| VideoDecoderConfig config(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, |
| VideoFrame::INVALID, |
| - kCodedSize, kVisibleRect, |
| - kAspectRatio.num, kAspectRatio.den, |
| + kCodedSize, kVisibleRect, kNaturalSize, |
| NULL, 0); |
| InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| } |
| @@ -266,8 +264,64 @@ TEST_F(FFmpegVideoDecoderTest, Initialize_OpenDecoderFails) { |
| // Specify Theora w/o extra data so that avcodec_open2() fails. |
| VideoDecoderConfig config(kCodecTheora, VIDEO_CODEC_PROFILE_UNKNOWN, |
| kVideoFormat, |
| - kCodedSize, kVisibleRect, |
| - kAspectRatio.num, kAspectRatio.den, |
| + kCodedSize, kVisibleRect, kNaturalSize, |
| + NULL, 0); |
| + InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| +} |
| + |
| +TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorZero) { |
| + gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, 0); |
|
Ami GONE FROM CHROMIUM
2012/08/01 21:05:13
s/1, 0/0, 1/
acolwell GONE FROM CHROMIUM
2012/08/01 23:20:45
Done.
|
| + VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| + kVideoFormat, |
| + kCodedSize, kVisibleRect, natural_size, |
| + NULL, 0); |
| + InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| +} |
| + |
| +TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorZero) { |
| + gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 0, 0); |
| + VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| + kVideoFormat, |
| + kCodedSize, kVisibleRect, natural_size, |
| + NULL, 0); |
| + InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| +} |
| + |
| +TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorNegative) { |
| + gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), -1, 1); |
| + VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| + kVideoFormat, |
| + kCodedSize, kVisibleRect, natural_size, |
| + NULL, 0); |
| + InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| +} |
| + |
| +TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorNegative) { |
| + gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, -1); |
| + VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| + kVideoFormat, |
| + kCodedSize, kVisibleRect, natural_size, |
| + NULL, 0); |
| + InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| +} |
| + |
| +TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorTooLarge) { |
| + int width = kVisibleRect.size().width(); |
| + int num = ceil(static_cast<double>(limits::kMaxDimension + 1) / width); |
| + gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), num, 1); |
| + VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| + kVideoFormat, |
| + kCodedSize, kVisibleRect, natural_size, |
| + NULL, 0); |
| + InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| +} |
| + |
| +TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorTooLarge) { |
| + int den = kVisibleRect.size().width() + 1; |
| + gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, den); |
| + VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| + kVideoFormat, |
| + kCodedSize, kVisibleRect, natural_size, |
| NULL, 0); |
| InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| } |