Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <deque> | 5 #include <deque> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 84 | 84 |
| 85 // Initialize various test buffers. | 85 // Initialize various test buffers. |
| 86 frame_buffer_.reset(new uint8[kCodedSize.GetArea()]); | 86 frame_buffer_.reset(new uint8[kCodedSize.GetArea()]); |
| 87 end_of_stream_buffer_ = DecoderBuffer::CreateEOSBuffer(); | 87 end_of_stream_buffer_ = DecoderBuffer::CreateEOSBuffer(); |
| 88 i_frame_buffer_ = ReadTestDataFile("vp8-I-frame-320x240"); | 88 i_frame_buffer_ = ReadTestDataFile("vp8-I-frame-320x240"); |
| 89 corrupt_i_frame_buffer_ = ReadTestDataFile("vp8-corrupt-I-frame"); | 89 corrupt_i_frame_buffer_ = ReadTestDataFile("vp8-corrupt-I-frame"); |
| 90 encrypted_i_frame_buffer_ = CreateFakeEncryptedBuffer(); | 90 encrypted_i_frame_buffer_ = CreateFakeEncryptedBuffer(); |
| 91 | 91 |
| 92 config_.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, | 92 config_.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, |
| 93 kVideoFormat, kCodedSize, kVisibleRect, kNaturalSize, | 93 kVideoFormat, kCodedSize, kVisibleRect, kNaturalSize, |
| 94 NULL, 0, true); | 94 NULL, 0, false, true); |
| 95 } | 95 } |
| 96 | 96 |
| 97 virtual ~FFmpegVideoDecoderTest() {} | 97 virtual ~FFmpegVideoDecoderTest() {} |
| 98 | 98 |
| 99 void Initialize() { | 99 void Initialize() { |
| 100 InitializeWithConfig(config_); | 100 InitializeWithConfig(config_); |
| 101 } | 101 } |
| 102 | 102 |
| 103 void InitializeWithEncryptedConfig() { | |
| 104 config_.set_is_encrypted(true); | |
|
acolwell GONE FROM CHROMIUM
2012/09/17 17:41:17
Just copy the config_.Initialize() call from above
xhwang
2012/09/17 19:42:25
Done.
| |
| 105 InitializeWithConfig(config_); | |
| 106 } | |
| 107 | |
| 103 void InitializeWithConfigAndStatus(const VideoDecoderConfig& config, | 108 void InitializeWithConfigAndStatus(const VideoDecoderConfig& config, |
| 104 PipelineStatus status) { | 109 PipelineStatus status) { |
| 105 EXPECT_CALL(*demuxer_, video_decoder_config()) | 110 EXPECT_CALL(*demuxer_, video_decoder_config()) |
| 106 .WillRepeatedly(ReturnRef(config)); | 111 .WillRepeatedly(ReturnRef(config)); |
| 107 | 112 |
| 108 decoder_->Initialize(demuxer_, NewExpectedStatusCB(status), | 113 decoder_->Initialize(demuxer_, NewExpectedStatusCB(status), |
| 109 base::Bind(&MockStatisticsCB::OnStatistics, | 114 base::Bind(&MockStatisticsCB::OnStatistics, |
| 110 base::Unretained(&statistics_cb_))); | 115 base::Unretained(&statistics_cb_))); |
| 111 | 116 |
| 112 message_loop_.RunAllPending(); | 117 message_loop_.RunAllPending(); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 240 | 245 |
| 241 TEST_F(FFmpegVideoDecoderTest, Initialize_Normal) { | 246 TEST_F(FFmpegVideoDecoderTest, Initialize_Normal) { |
| 242 Initialize(); | 247 Initialize(); |
| 243 } | 248 } |
| 244 | 249 |
| 245 TEST_F(FFmpegVideoDecoderTest, Initialize_UnsupportedDecoder) { | 250 TEST_F(FFmpegVideoDecoderTest, Initialize_UnsupportedDecoder) { |
| 246 // Test avcodec_find_decoder() returning NULL. | 251 // Test avcodec_find_decoder() returning NULL. |
| 247 VideoDecoderConfig config(kUnknownVideoCodec, VIDEO_CODEC_PROFILE_UNKNOWN, | 252 VideoDecoderConfig config(kUnknownVideoCodec, VIDEO_CODEC_PROFILE_UNKNOWN, |
| 248 kVideoFormat, | 253 kVideoFormat, |
| 249 kCodedSize, kVisibleRect, kNaturalSize, | 254 kCodedSize, kVisibleRect, kNaturalSize, |
| 250 NULL, 0); | 255 NULL, false, false); |
|
acolwell GONE FROM CHROMIUM
2012/09/17 17:41:17
nit: I'm pretty sure this should be 0, false here
xhwang
2012/09/17 19:42:25
Oops, thanks for the catch. Done here and blow.
| |
| 251 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 256 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 252 } | 257 } |
| 253 | 258 |
| 254 TEST_F(FFmpegVideoDecoderTest, Initialize_UnsupportedPixelFormat) { | 259 TEST_F(FFmpegVideoDecoderTest, Initialize_UnsupportedPixelFormat) { |
| 255 // Ensure decoder handles unsupport pixel formats without crashing. | 260 // Ensure decoder handles unsupport pixel formats without crashing. |
| 256 VideoDecoderConfig config(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, | 261 VideoDecoderConfig config(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, |
| 257 VideoFrame::INVALID, | 262 VideoFrame::INVALID, |
| 258 kCodedSize, kVisibleRect, kNaturalSize, | 263 kCodedSize, kVisibleRect, kNaturalSize, |
| 259 NULL, 0); | 264 NULL, false, false); |
| 260 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 265 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 261 } | 266 } |
| 262 | 267 |
| 263 TEST_F(FFmpegVideoDecoderTest, Initialize_OpenDecoderFails) { | 268 TEST_F(FFmpegVideoDecoderTest, Initialize_OpenDecoderFails) { |
| 264 // Specify Theora w/o extra data so that avcodec_open2() fails. | 269 // Specify Theora w/o extra data so that avcodec_open2() fails. |
| 265 VideoDecoderConfig config(kCodecTheora, VIDEO_CODEC_PROFILE_UNKNOWN, | 270 VideoDecoderConfig config(kCodecTheora, VIDEO_CODEC_PROFILE_UNKNOWN, |
| 266 kVideoFormat, | 271 kVideoFormat, |
| 267 kCodedSize, kVisibleRect, kNaturalSize, | 272 kCodedSize, kVisibleRect, kNaturalSize, |
| 268 NULL, 0); | 273 NULL, false, false); |
| 269 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 274 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 270 } | 275 } |
| 271 | 276 |
| 272 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorZero) { | 277 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorZero) { |
| 273 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 0, 1); | 278 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 0, 1); |
| 274 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, | 279 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| 275 kVideoFormat, | 280 kVideoFormat, |
| 276 kCodedSize, kVisibleRect, natural_size, | 281 kCodedSize, kVisibleRect, natural_size, |
| 277 NULL, 0); | 282 NULL, false, false); |
| 278 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 283 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 279 } | 284 } |
| 280 | 285 |
| 281 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorZero) { | 286 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorZero) { |
| 282 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, 0); | 287 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, 0); |
| 283 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, | 288 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| 284 kVideoFormat, | 289 kVideoFormat, |
| 285 kCodedSize, kVisibleRect, natural_size, | 290 kCodedSize, kVisibleRect, natural_size, |
| 286 NULL, 0); | 291 NULL, false, false); |
| 287 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 292 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 288 } | 293 } |
| 289 | 294 |
| 290 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorNegative) { | 295 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorNegative) { |
| 291 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), -1, 1); | 296 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), -1, 1); |
| 292 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, | 297 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| 293 kVideoFormat, | 298 kVideoFormat, |
| 294 kCodedSize, kVisibleRect, natural_size, | 299 kCodedSize, kVisibleRect, natural_size, |
| 295 NULL, 0); | 300 NULL, false, false); |
| 296 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 301 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 297 } | 302 } |
| 298 | 303 |
| 299 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorNegative) { | 304 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorNegative) { |
| 300 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, -1); | 305 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, -1); |
| 301 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, | 306 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| 302 kVideoFormat, | 307 kVideoFormat, |
| 303 kCodedSize, kVisibleRect, natural_size, | 308 kCodedSize, kVisibleRect, natural_size, |
| 304 NULL, 0); | 309 NULL, false, false); |
| 305 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 310 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 306 } | 311 } |
| 307 | 312 |
| 308 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorTooLarge) { | 313 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioNumeratorTooLarge) { |
| 309 int width = kVisibleRect.size().width(); | 314 int width = kVisibleRect.size().width(); |
| 310 int num = ceil(static_cast<double>(limits::kMaxDimension + 1) / width); | 315 int num = ceil(static_cast<double>(limits::kMaxDimension + 1) / width); |
| 311 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), num, 1); | 316 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), num, 1); |
| 312 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, | 317 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| 313 kVideoFormat, | 318 kVideoFormat, |
| 314 kCodedSize, kVisibleRect, natural_size, | 319 kCodedSize, kVisibleRect, natural_size, |
| 315 NULL, 0); | 320 NULL, false, false); |
| 316 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 321 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 317 } | 322 } |
| 318 | 323 |
| 319 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorTooLarge) { | 324 TEST_F(FFmpegVideoDecoderTest, Initialize_AspectRatioDenominatorTooLarge) { |
| 320 int den = kVisibleRect.size().width() + 1; | 325 int den = kVisibleRect.size().width() + 1; |
| 321 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, den); | 326 gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, den); |
| 322 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, | 327 VideoDecoderConfig config(kCodecVP8, VP8PROFILE_MAIN, |
| 323 kVideoFormat, | 328 kVideoFormat, |
| 324 kCodedSize, kVisibleRect, natural_size, | 329 kCodedSize, kVisibleRect, natural_size, |
| 325 NULL, 0); | 330 NULL, false, false); |
| 326 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); | 331 InitializeWithConfigAndStatus(config, PIPELINE_ERROR_DECODE); |
| 327 } | 332 } |
| 328 | 333 |
| 329 TEST_F(FFmpegVideoDecoderTest, DecodeFrame_Normal) { | 334 TEST_F(FFmpegVideoDecoderTest, DecodeFrame_Normal) { |
| 330 Initialize(); | 335 Initialize(); |
| 331 | 336 |
| 332 // Simulate decoding a single frame. | 337 // Simulate decoding a single frame. |
| 333 VideoDecoder::Status status; | 338 VideoDecoder::Status status; |
| 334 scoped_refptr<VideoFrame> video_frame; | 339 scoped_refptr<VideoFrame> video_frame; |
| 335 DecodeSingleFrame(i_frame_buffer_, &status, &video_frame); | 340 DecodeSingleFrame(i_frame_buffer_, &status, &video_frame); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 437 DecodeIFrameThenTestFile("vp8-I-frame-320x480", 320, 480); | 442 DecodeIFrameThenTestFile("vp8-I-frame-320x480", 320, 480); |
| 438 } | 443 } |
| 439 | 444 |
| 440 // Decode |i_frame_buffer_| and then a frame with a smaller height and verify | 445 // Decode |i_frame_buffer_| and then a frame with a smaller height and verify |
| 441 // the output size was adjusted. | 446 // the output size was adjusted. |
| 442 TEST_F(FFmpegVideoDecoderTest, DecodeFrame_SmallerHeight) { | 447 TEST_F(FFmpegVideoDecoderTest, DecodeFrame_SmallerHeight) { |
| 443 DecodeIFrameThenTestFile("vp8-I-frame-320x120", 320, 120); | 448 DecodeIFrameThenTestFile("vp8-I-frame-320x120", 320, 120); |
| 444 } | 449 } |
| 445 | 450 |
| 446 TEST_F(FFmpegVideoDecoderTest, DecodeEncryptedFrame_Normal) { | 451 TEST_F(FFmpegVideoDecoderTest, DecodeEncryptedFrame_Normal) { |
| 447 Initialize(); | 452 InitializeWithEncryptedConfig(); |
| 448 | 453 |
| 449 // Simulate decoding a single encrypted frame. | 454 // Simulate decoding a single encrypted frame. |
| 450 EXPECT_CALL(*decryptor_, Decrypt(encrypted_i_frame_buffer_, _)) | 455 EXPECT_CALL(*decryptor_, Decrypt(encrypted_i_frame_buffer_, _)) |
| 451 .WillRepeatedly(RunDecryptCB(Decryptor::kSuccess, i_frame_buffer_)); | 456 .WillRepeatedly(RunDecryptCB(Decryptor::kSuccess, i_frame_buffer_)); |
| 452 | 457 |
| 453 VideoDecoder::Status status; | 458 VideoDecoder::Status status; |
| 454 scoped_refptr<VideoFrame> video_frame; | 459 scoped_refptr<VideoFrame> video_frame; |
| 455 DecodeSingleFrame(encrypted_i_frame_buffer_, &status, &video_frame); | 460 DecodeSingleFrame(encrypted_i_frame_buffer_, &status, &video_frame); |
| 456 | 461 |
| 457 EXPECT_EQ(status, VideoDecoder::kOk); | 462 EXPECT_EQ(status, VideoDecoder::kOk); |
| 458 ASSERT_TRUE(video_frame); | 463 ASSERT_TRUE(video_frame); |
| 459 EXPECT_FALSE(video_frame->IsEndOfStream()); | 464 EXPECT_FALSE(video_frame->IsEndOfStream()); |
| 460 } | 465 } |
| 461 | 466 |
| 462 // Test the case that the decryptor fails to decrypt the encrypted buffer. | 467 // Test the case that the decryptor fails to decrypt the encrypted buffer. |
| 463 TEST_F(FFmpegVideoDecoderTest, DecodeEncryptedFrame_DecryptError) { | 468 TEST_F(FFmpegVideoDecoderTest, DecodeEncryptedFrame_DecryptError) { |
| 464 Initialize(); | 469 InitializeWithEncryptedConfig(); |
| 465 | 470 |
| 466 // Simulate decoding a single encrypted frame. | 471 // Simulate decoding a single encrypted frame. |
| 467 EXPECT_CALL(*demuxer_, Read(_)) | 472 EXPECT_CALL(*demuxer_, Read(_)) |
| 468 .WillRepeatedly(ReturnBuffer(encrypted_i_frame_buffer_)); | 473 .WillRepeatedly(ReturnBuffer(encrypted_i_frame_buffer_)); |
| 469 EXPECT_CALL(*decryptor_, Decrypt(encrypted_i_frame_buffer_, _)) | 474 EXPECT_CALL(*decryptor_, Decrypt(encrypted_i_frame_buffer_, _)) |
| 470 .WillRepeatedly(RunDecryptCB(Decryptor::kError, | 475 .WillRepeatedly(RunDecryptCB(Decryptor::kError, |
| 471 scoped_refptr<media::DecoderBuffer>())); | 476 scoped_refptr<media::DecoderBuffer>())); |
| 472 | 477 |
| 473 // Our read should still get satisfied with end of stream frame during an | 478 // Our read should still get satisfied with end of stream frame during an |
| 474 // error. | 479 // error. |
| 475 VideoDecoder::Status status; | 480 VideoDecoder::Status status; |
| 476 scoped_refptr<VideoFrame> video_frame; | 481 scoped_refptr<VideoFrame> video_frame; |
| 477 Read(&status, &video_frame); | 482 Read(&status, &video_frame); |
| 478 EXPECT_EQ(VideoDecoder::kDecryptError, status); | 483 EXPECT_EQ(VideoDecoder::kDecryptError, status); |
| 479 EXPECT_FALSE(video_frame); | 484 EXPECT_FALSE(video_frame); |
| 480 | 485 |
| 481 message_loop_.RunAllPending(); | 486 message_loop_.RunAllPending(); |
| 482 } | 487 } |
| 483 | 488 |
| 484 // Test the case that the decryptor has no key to decrypt the encrypted buffer. | 489 // Test the case that the decryptor has no key to decrypt the encrypted buffer. |
| 485 TEST_F(FFmpegVideoDecoderTest, DecodeEncryptedFrame_NoDecryptionKey) { | 490 TEST_F(FFmpegVideoDecoderTest, DecodeEncryptedFrame_NoDecryptionKey) { |
| 486 Initialize(); | 491 InitializeWithEncryptedConfig(); |
| 487 | 492 |
| 488 // Simulate decoding a single encrypted frame. | 493 // Simulate decoding a single encrypted frame. |
| 489 EXPECT_CALL(*demuxer_, Read(_)) | 494 EXPECT_CALL(*demuxer_, Read(_)) |
| 490 .WillRepeatedly(ReturnBuffer(encrypted_i_frame_buffer_)); | 495 .WillRepeatedly(ReturnBuffer(encrypted_i_frame_buffer_)); |
| 491 EXPECT_CALL(*decryptor_, Decrypt(encrypted_i_frame_buffer_, _)) | 496 EXPECT_CALL(*decryptor_, Decrypt(encrypted_i_frame_buffer_, _)) |
| 492 .WillRepeatedly(RunDecryptCB(Decryptor::kNoKey, | 497 .WillRepeatedly(RunDecryptCB(Decryptor::kNoKey, |
| 493 scoped_refptr<media::DecoderBuffer>())); | 498 scoped_refptr<media::DecoderBuffer>())); |
| 494 | 499 |
| 495 // Our read should still get satisfied with end of stream frame during an | 500 // Our read should still get satisfied with end of stream frame during an |
| 496 // error. | 501 // error. |
| 497 VideoDecoder::Status status; | 502 VideoDecoder::Status status; |
| 498 scoped_refptr<VideoFrame> video_frame; | 503 scoped_refptr<VideoFrame> video_frame; |
| 499 Read(&status, &video_frame); | 504 Read(&status, &video_frame); |
| 500 EXPECT_EQ(VideoDecoder::kDecryptError, status); | 505 EXPECT_EQ(VideoDecoder::kDecryptError, status); |
| 501 EXPECT_FALSE(video_frame); | 506 EXPECT_FALSE(video_frame); |
| 502 | 507 |
| 503 message_loop_.RunAllPending(); | 508 message_loop_.RunAllPending(); |
| 504 } | 509 } |
| 505 | 510 |
| 506 // Test the case that the decryptor fails to decrypt the encrypted buffer but | 511 // Test the case that the decryptor fails to decrypt the encrypted buffer but |
| 507 // cannot detect the decryption error and returns a corrupted buffer. | 512 // cannot detect the decryption error and returns a corrupted buffer. |
| 508 TEST_F(FFmpegVideoDecoderTest, DecodeEncryptedFrame_CorruptedBufferReturned) { | 513 TEST_F(FFmpegVideoDecoderTest, DecodeEncryptedFrame_CorruptedBufferReturned) { |
| 509 Initialize(); | 514 InitializeWithEncryptedConfig(); |
| 510 | 515 |
| 511 // Simulate decoding a single encrypted frame. | 516 // Simulate decoding a single encrypted frame. |
| 512 EXPECT_CALL(*demuxer_, Read(_)) | 517 EXPECT_CALL(*demuxer_, Read(_)) |
| 513 .WillRepeatedly(ReturnBuffer(encrypted_i_frame_buffer_)); | 518 .WillRepeatedly(ReturnBuffer(encrypted_i_frame_buffer_)); |
| 514 EXPECT_CALL(*decryptor_, Decrypt(encrypted_i_frame_buffer_, _)) | 519 EXPECT_CALL(*decryptor_, Decrypt(encrypted_i_frame_buffer_, _)) |
| 515 .WillRepeatedly(RunDecryptCB(Decryptor::kSuccess, | 520 .WillRepeatedly(RunDecryptCB(Decryptor::kSuccess, |
| 516 corrupt_i_frame_buffer_)); | 521 corrupt_i_frame_buffer_)); |
| 517 | 522 |
| 518 // Our read should still get satisfied with end of stream frame during an | 523 // Our read should still get satisfied with end of stream frame during an |
| 519 // error. | 524 // error. |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 652 | 657 |
| 653 // Signal an aborted demuxer read. | 658 // Signal an aborted demuxer read. |
| 654 read_cb.Run(DemuxerStream::kAborted, NULL); | 659 read_cb.Run(DemuxerStream::kAborted, NULL); |
| 655 | 660 |
| 656 // Make sure we get a NULL video frame returned. | 661 // Make sure we get a NULL video frame returned. |
| 657 EXPECT_CALL(*this, FrameReady(VideoDecoder::kOk, IsNull())); | 662 EXPECT_CALL(*this, FrameReady(VideoDecoder::kOk, IsNull())); |
| 658 message_loop_.RunAllPending(); | 663 message_loop_.RunAllPending(); |
| 659 } | 664 } |
| 660 | 665 |
| 661 } // namespace media | 666 } // namespace media |
| OLD | NEW |