| 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..1e5f4683ec9ecb60a361639b3853e385e99f6256 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(), 0, 1);
|
| + 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(), 1, 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);
|
| }
|
|
|