Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Side by Side Diff: webrtc/modules/video_coding/codecs/vp8/simulcast_unittest.h

Issue 1935443002: Revert of Delete webrtc::VideoFrame methods buffer and stride. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 int picture_id_; 112 int picture_id_;
113 int temporal_layer_[kNumberOfSimulcastStreams]; 113 int temporal_layer_[kNumberOfSimulcastStreams];
114 bool layer_sync_[kNumberOfSimulcastStreams]; 114 bool layer_sync_[kNumberOfSimulcastStreams];
115 }; 115 };
116 116
117 class Vp8TestDecodedImageCallback : public DecodedImageCallback { 117 class Vp8TestDecodedImageCallback : public DecodedImageCallback {
118 public: 118 public:
119 Vp8TestDecodedImageCallback() : decoded_frames_(0) {} 119 Vp8TestDecodedImageCallback() : decoded_frames_(0) {}
120 int32_t Decoded(VideoFrame& decoded_image) override { 120 int32_t Decoded(VideoFrame& decoded_image) override {
121 for (int i = 0; i < decoded_image.width(); ++i) { 121 for (int i = 0; i < decoded_image.width(); ++i) {
122 EXPECT_NEAR(kColorY, decoded_image.video_frame_buffer()->DataY()[i], 1); 122 EXPECT_NEAR(kColorY, decoded_image.buffer(kYPlane)[i], 1);
123 } 123 }
124 124
125 // TODO(mikhal): Verify the difference between U,V and the original. 125 // TODO(mikhal): Verify the difference between U,V and the original.
126 for (int i = 0; i < ((decoded_image.width() + 1) / 2); ++i) { 126 for (int i = 0; i < ((decoded_image.width() + 1) / 2); ++i) {
127 EXPECT_NEAR(kColorU, decoded_image.video_frame_buffer()->DataU()[i], 4); 127 EXPECT_NEAR(kColorU, decoded_image.buffer(kUPlane)[i], 4);
128 EXPECT_NEAR(kColorV, decoded_image.video_frame_buffer()->DataV()[i], 4); 128 EXPECT_NEAR(kColorV, decoded_image.buffer(kVPlane)[i], 4);
129 } 129 }
130 decoded_frames_++; 130 decoded_frames_++;
131 return 0; 131 return 0;
132 } 132 }
133 int32_t Decoded(VideoFrame& decoded_image, int64_t decode_time_ms) override { 133 int32_t Decoded(VideoFrame& decoded_image, int64_t decode_time_ms) override {
134 RTC_NOTREACHED(); 134 RTC_NOTREACHED();
135 return -1; 135 return -1;
136 } 136 }
137 int DecodedFrames() { return decoded_frames_; } 137 int DecodedFrames() { return decoded_frames_; }
138 138
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 215
216 mutable std::vector<TemporalLayers*> spying_layers_; 216 mutable std::vector<TemporalLayers*> spying_layers_;
217 }; 217 };
218 }; 218 };
219 219
220 class TestVp8Simulcast : public ::testing::Test { 220 class TestVp8Simulcast : public ::testing::Test {
221 public: 221 public:
222 TestVp8Simulcast(VP8Encoder* encoder, VP8Decoder* decoder) 222 TestVp8Simulcast(VP8Encoder* encoder, VP8Decoder* decoder)
223 : encoder_(encoder), decoder_(decoder) {} 223 : encoder_(encoder), decoder_(decoder) {}
224 224
225 static void SetPlane(uint8_t* data, 225 // Creates an VideoFrame from |plane_colors|.
226 uint8_t value, 226 static void CreateImage(VideoFrame* frame, int plane_colors[kNumOfPlanes]) {
227 int width, 227 for (int plane_num = 0; plane_num < kNumOfPlanes; ++plane_num) {
228 int height, 228 int width =
229 int stride) { 229 (plane_num != kYPlane ? (frame->width() + 1) / 2 : frame->width());
230 for (int i = 0; i < height; i++, data += stride) { 230 int height =
231 (plane_num != kYPlane ? (frame->height() + 1) / 2 : frame->height());
232 PlaneType plane_type = static_cast<PlaneType>(plane_num);
233 uint8_t* data = frame->buffer(plane_type);
231 // Setting allocated area to zero - setting only image size to 234 // Setting allocated area to zero - setting only image size to
232 // requested values - will make it easier to distinguish between image 235 // requested values - will make it easier to distinguish between image
233 // size and frame size (accounting for stride). 236 // size and frame size (accounting for stride).
234 memset(data, value, width); 237 memset(frame->buffer(plane_type), 0, frame->allocated_size(plane_type));
235 memset(data + width, 0, stride - width); 238 for (int i = 0; i < height; i++) {
239 memset(data, plane_colors[plane_num], width);
240 data += frame->stride(plane_type);
241 }
236 } 242 }
237 } 243 }
238 244
239 // Fills in an VideoFrameBuffer from |plane_colors|.
240 static void CreateImage(const rtc::scoped_refptr<VideoFrameBuffer>& buffer,
241 int plane_colors[kNumOfPlanes]) {
242 int width = buffer->width();
243 int height = buffer->height();
244 int chroma_width = (width + 1) / 2;
245 int chroma_height = (height + 1) / 2;
246
247 SetPlane(buffer->MutableDataY(), plane_colors[0],
248 width, height, buffer->StrideY());
249
250 SetPlane(buffer->MutableDataU(), plane_colors[1],
251 chroma_width, chroma_height,
252 buffer->StrideU());
253
254 SetPlane(buffer->MutableDataV(), plane_colors[2],
255 chroma_width, chroma_height,
256 buffer->StrideV());
257 }
258
259 static void DefaultSettings(VideoCodec* settings, 245 static void DefaultSettings(VideoCodec* settings,
260 const int* temporal_layer_profile) { 246 const int* temporal_layer_profile) {
261 assert(settings); 247 assert(settings);
262 memset(settings, 0, sizeof(VideoCodec)); 248 memset(settings, 0, sizeof(VideoCodec));
263 strncpy(settings->plName, "VP8", 4); 249 strncpy(settings->plName, "VP8", 4);
264 settings->codecType = kVideoCodecVP8; 250 settings->codecType = kVideoCodecVP8;
265 // 96 to 127 dynamic payload types for video codecs 251 // 96 to 127 dynamic payload types for video codecs
266 settings->plType = 120; 252 settings->plType = 120;
267 settings->startBitrate = 300; 253 settings->startBitrate = 300;
268 settings->minBitrate = 30; 254 settings->minBitrate = 30;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 298
313 virtual void SetUpCodec(const int* temporal_layer_profile) { 299 virtual void SetUpCodec(const int* temporal_layer_profile) {
314 encoder_->RegisterEncodeCompleteCallback(&encoder_callback_); 300 encoder_->RegisterEncodeCompleteCallback(&encoder_callback_);
315 decoder_->RegisterDecodeCompleteCallback(&decoder_callback_); 301 decoder_->RegisterDecodeCompleteCallback(&decoder_callback_);
316 DefaultSettings(&settings_, temporal_layer_profile); 302 DefaultSettings(&settings_, temporal_layer_profile);
317 EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200)); 303 EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200));
318 EXPECT_EQ(0, decoder_->InitDecode(&settings_, 1)); 304 EXPECT_EQ(0, decoder_->InitDecode(&settings_, 1));
319 int half_width = (kDefaultWidth + 1) / 2; 305 int half_width = (kDefaultWidth + 1) / 2;
320 input_frame_.CreateEmptyFrame(kDefaultWidth, kDefaultHeight, kDefaultWidth, 306 input_frame_.CreateEmptyFrame(kDefaultWidth, kDefaultHeight, kDefaultWidth,
321 half_width, half_width); 307 half_width, half_width);
322 memset(input_frame_.video_frame_buffer()->MutableDataY(), 0, 308 memset(input_frame_.buffer(kYPlane), 0,
323 input_frame_.allocated_size(kYPlane)); 309 input_frame_.allocated_size(kYPlane));
324 memset(input_frame_.video_frame_buffer()->MutableDataU(), 0, 310 memset(input_frame_.buffer(kUPlane), 0,
325 input_frame_.allocated_size(kUPlane)); 311 input_frame_.allocated_size(kUPlane));
326 memset(input_frame_.video_frame_buffer()->MutableDataV(), 0, 312 memset(input_frame_.buffer(kVPlane), 0,
327 input_frame_.allocated_size(kVPlane)); 313 input_frame_.allocated_size(kVPlane));
328 } 314 }
329 315
330 virtual void TearDown() { 316 virtual void TearDown() {
331 encoder_->Release(); 317 encoder_->Release();
332 decoder_->Release(); 318 decoder_->Release();
333 } 319 }
334 320
335 void ExpectStreams(FrameType frame_type, int expected_video_streams) { 321 void ExpectStreams(FrameType frame_type, int expected_video_streams) {
336 ASSERT_GE(expected_video_streams, 0); 322 ASSERT_GE(expected_video_streams, 0);
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 settings_.height = height; 548 settings_.height = height;
563 for (int i = 0; i < settings_.numberOfSimulcastStreams - 1; ++i) { 549 for (int i = 0; i < settings_.numberOfSimulcastStreams - 1; ++i) {
564 settings_.simulcastStream[i].maxBitrate = 0; 550 settings_.simulcastStream[i].maxBitrate = 0;
565 settings_.simulcastStream[i].width = settings_.width; 551 settings_.simulcastStream[i].width = settings_.width;
566 settings_.simulcastStream[i].height = settings_.height; 552 settings_.simulcastStream[i].height = settings_.height;
567 } 553 }
568 // Setting input image to new resolution. 554 // Setting input image to new resolution.
569 int half_width = (settings_.width + 1) / 2; 555 int half_width = (settings_.width + 1) / 2;
570 input_frame_.CreateEmptyFrame(settings_.width, settings_.height, 556 input_frame_.CreateEmptyFrame(settings_.width, settings_.height,
571 settings_.width, half_width, half_width); 557 settings_.width, half_width, half_width);
572 memset(input_frame_.video_frame_buffer()->MutableDataY(), 0, 558 memset(input_frame_.buffer(kYPlane), 0,
573 input_frame_.allocated_size(kYPlane)); 559 input_frame_.allocated_size(kYPlane));
574 memset(input_frame_.video_frame_buffer()->MutableDataU(), 0, 560 memset(input_frame_.buffer(kUPlane), 0,
575 input_frame_.allocated_size(kUPlane)); 561 input_frame_.allocated_size(kUPlane));
576 memset(input_frame_.video_frame_buffer()->MutableDataV(), 0, 562 memset(input_frame_.buffer(kVPlane), 0,
577 input_frame_.allocated_size(kVPlane)); 563 input_frame_.allocated_size(kVPlane));
578 564
579 // The for loop above did not set the bitrate of the highest layer. 565 // The for loop above did not set the bitrate of the highest layer.
580 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1] 566 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1]
581 .maxBitrate = 0; 567 .maxBitrate = 0;
582 // The highest layer has to correspond to the non-simulcast resolution. 568 // The highest layer has to correspond to the non-simulcast resolution.
583 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1].width = 569 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1].width =
584 settings_.width; 570 settings_.width;
585 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1].height = 571 settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1].height =
586 settings_.height; 572 settings_.height;
(...skipping 16 matching lines...) Expand all
603 DefaultSettings(&settings_, kDefaultTemporalLayerProfile); 589 DefaultSettings(&settings_, kDefaultTemporalLayerProfile);
604 // Start at the lowest bitrate for enabling base stream. 590 // Start at the lowest bitrate for enabling base stream.
605 settings_.startBitrate = kMinBitrates[0]; 591 settings_.startBitrate = kMinBitrates[0];
606 EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200)); 592 EXPECT_EQ(0, encoder_->InitEncode(&settings_, 1, 1200));
607 encoder_->SetRates(settings_.startBitrate, 30); 593 encoder_->SetRates(settings_.startBitrate, 30);
608 ExpectStreams(kVideoFrameKey, 1); 594 ExpectStreams(kVideoFrameKey, 1);
609 // Resize |input_frame_| to the new resolution. 595 // Resize |input_frame_| to the new resolution.
610 half_width = (settings_.width + 1) / 2; 596 half_width = (settings_.width + 1) / 2;
611 input_frame_.CreateEmptyFrame(settings_.width, settings_.height, 597 input_frame_.CreateEmptyFrame(settings_.width, settings_.height,
612 settings_.width, half_width, half_width); 598 settings_.width, half_width, half_width);
613 memset(input_frame_.video_frame_buffer()->MutableDataY(), 0, 599 memset(input_frame_.buffer(kYPlane), 0,
614 input_frame_.allocated_size(kYPlane)); 600 input_frame_.allocated_size(kYPlane));
615 memset(input_frame_.video_frame_buffer()->MutableDataU(), 0, 601 memset(input_frame_.buffer(kUPlane), 0,
616 input_frame_.allocated_size(kUPlane)); 602 input_frame_.allocated_size(kUPlane));
617 memset(input_frame_.video_frame_buffer()->MutableDataV(), 0, 603 memset(input_frame_.buffer(kVPlane), 0,
618 input_frame_.allocated_size(kVPlane)); 604 input_frame_.allocated_size(kVPlane));
619 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types)); 605 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, &frame_types));
620 } 606 }
621 607
622 void TestSwitchingToOneStream() { SwitchingToOneStream(1024, 768); } 608 void TestSwitchingToOneStream() { SwitchingToOneStream(1024, 768); }
623 609
624 void TestSwitchingToOneOddStream() { SwitchingToOneStream(1023, 769); } 610 void TestSwitchingToOneOddStream() { SwitchingToOneStream(1023, 769); }
625 611
626 void TestSwitchingToOneSmallStream() { SwitchingToOneStream(4, 4); } 612 void TestSwitchingToOneSmallStream() { SwitchingToOneStream(4, 4); }
627 613
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 encoder_->RegisterEncodeCompleteCallback(&encoder_callback); 684 encoder_->RegisterEncodeCompleteCallback(&encoder_callback);
699 decoder_->RegisterDecodeCompleteCallback(&decoder_callback); 685 decoder_->RegisterDecodeCompleteCallback(&decoder_callback);
700 686
701 encoder_->SetRates(kMaxBitrates[2], 30); // To get all three streams. 687 encoder_->SetRates(kMaxBitrates[2], 30); // To get all three streams.
702 688
703 // Set color. 689 // Set color.
704 int plane_offset[kNumOfPlanes]; 690 int plane_offset[kNumOfPlanes];
705 plane_offset[kYPlane] = kColorY; 691 plane_offset[kYPlane] = kColorY;
706 plane_offset[kUPlane] = kColorU; 692 plane_offset[kUPlane] = kColorU;
707 plane_offset[kVPlane] = kColorV; 693 plane_offset[kVPlane] = kColorV;
708 CreateImage(input_frame_.video_frame_buffer(), plane_offset); 694 CreateImage(&input_frame_, plane_offset);
709 695
710 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL)); 696 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL));
711 int picture_id = -1; 697 int picture_id = -1;
712 int temporal_layer = -1; 698 int temporal_layer = -1;
713 bool layer_sync = false; 699 bool layer_sync = false;
714 encoder_callback.GetLastEncodedFrameInfo(&picture_id, &temporal_layer, 700 encoder_callback.GetLastEncodedFrameInfo(&picture_id, &temporal_layer,
715 &layer_sync, 0); 701 &layer_sync, 0);
716 EXPECT_EQ(0, temporal_layer); 702 EXPECT_EQ(0, temporal_layer);
717 EXPECT_TRUE(layer_sync); 703 EXPECT_TRUE(layer_sync);
718 int key_frame_picture_id = picture_id; 704 int key_frame_picture_id = picture_id;
719 705
720 // Change color. 706 // Change color.
721 plane_offset[kYPlane] += 1; 707 plane_offset[kYPlane] += 1;
722 plane_offset[kUPlane] += 1; 708 plane_offset[kUPlane] += 1;
723 plane_offset[kVPlane] += 1; 709 plane_offset[kVPlane] += 1;
724 CreateImage(input_frame_.video_frame_buffer(), plane_offset); 710 CreateImage(&input_frame_, plane_offset);
725 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 711 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
726 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL)); 712 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL));
727 713
728 // Change color. 714 // Change color.
729 plane_offset[kYPlane] += 1; 715 plane_offset[kYPlane] += 1;
730 plane_offset[kUPlane] += 1; 716 plane_offset[kUPlane] += 1;
731 plane_offset[kVPlane] += 1; 717 plane_offset[kVPlane] += 1;
732 CreateImage(input_frame_.video_frame_buffer(), plane_offset); 718 CreateImage(&input_frame_, plane_offset);
733 719
734 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 720 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
735 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL)); 721 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL));
736 722
737 // Change color. 723 // Change color.
738 plane_offset[kYPlane] += 1; 724 plane_offset[kYPlane] += 1;
739 plane_offset[kUPlane] += 1; 725 plane_offset[kUPlane] += 1;
740 plane_offset[kVPlane] += 1; 726 plane_offset[kVPlane] += 1;
741 CreateImage(input_frame_.video_frame_buffer(), plane_offset); 727 CreateImage(&input_frame_, plane_offset);
742 728
743 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 729 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
744 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL)); 730 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL));
745 731
746 CodecSpecificInfo codec_specific; 732 CodecSpecificInfo codec_specific;
747 codec_specific.codecType = kVideoCodecVP8; 733 codec_specific.codecType = kVideoCodecVP8;
748 codec_specific.codecSpecific.VP8.hasReceivedRPSI = true; 734 codec_specific.codecSpecific.VP8.hasReceivedRPSI = true;
749 // Must match last key frame to trigger. 735 // Must match last key frame to trigger.
750 codec_specific.codecSpecific.VP8.pictureIdRPSI = key_frame_picture_id; 736 codec_specific.codecSpecific.VP8.pictureIdRPSI = key_frame_picture_id;
751 737
752 // Change color back to original. 738 // Change color back to original.
753 plane_offset[kYPlane] = kColorY; 739 plane_offset[kYPlane] = kColorY;
754 plane_offset[kUPlane] = kColorU; 740 plane_offset[kUPlane] = kColorU;
755 plane_offset[kVPlane] = kColorV; 741 plane_offset[kVPlane] = kColorV;
756 CreateImage(input_frame_.video_frame_buffer(), plane_offset); 742 CreateImage(&input_frame_, plane_offset);
757 743
758 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 744 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
759 EXPECT_EQ(0, encoder_->Encode(input_frame_, &codec_specific, NULL)); 745 EXPECT_EQ(0, encoder_->Encode(input_frame_, &codec_specific, NULL));
760 746
761 EncodedImage encoded_frame; 747 EncodedImage encoded_frame;
762 encoder_callback.GetLastEncodedKeyFrame(&encoded_frame); 748 encoder_callback.GetLastEncodedKeyFrame(&encoded_frame);
763 decoder_->Decode(encoded_frame, false, NULL); 749 decoder_->Decode(encoded_frame, false, NULL);
764 encoder_callback.GetLastEncodedFrame(&encoded_frame); 750 encoder_callback.GetLastEncodedFrame(&encoded_frame);
765 decoder_->Decode(encoded_frame, false, NULL); 751 decoder_->Decode(encoded_frame, false, NULL);
766 EXPECT_EQ(2, decoder_callback.DecodedFrames()); 752 EXPECT_EQ(2, decoder_callback.DecodedFrames());
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 // 1. stride > width 2. stride_y != stride_uv/2 891 // 1. stride > width 2. stride_y != stride_uv/2
906 int stride_y = kDefaultWidth + 20; 892 int stride_y = kDefaultWidth + 20;
907 int stride_uv = ((kDefaultWidth + 1) / 2) + 5; 893 int stride_uv = ((kDefaultWidth + 1) / 2) + 5;
908 input_frame_.CreateEmptyFrame(kDefaultWidth, kDefaultHeight, stride_y, 894 input_frame_.CreateEmptyFrame(kDefaultWidth, kDefaultHeight, stride_y,
909 stride_uv, stride_uv); 895 stride_uv, stride_uv);
910 // Set color. 896 // Set color.
911 int plane_offset[kNumOfPlanes]; 897 int plane_offset[kNumOfPlanes];
912 plane_offset[kYPlane] = kColorY; 898 plane_offset[kYPlane] = kColorY;
913 plane_offset[kUPlane] = kColorU; 899 plane_offset[kUPlane] = kColorU;
914 plane_offset[kVPlane] = kColorV; 900 plane_offset[kVPlane] = kColorV;
915 CreateImage(input_frame_.video_frame_buffer(), plane_offset); 901 CreateImage(&input_frame_, plane_offset);
916 902
917 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL)); 903 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL));
918 904
919 // Change color. 905 // Change color.
920 plane_offset[kYPlane] += 1; 906 plane_offset[kYPlane] += 1;
921 plane_offset[kUPlane] += 1; 907 plane_offset[kUPlane] += 1;
922 plane_offset[kVPlane] += 1; 908 plane_offset[kVPlane] += 1;
923 CreateImage(input_frame_.video_frame_buffer(), plane_offset); 909 CreateImage(&input_frame_, plane_offset);
924 input_frame_.set_timestamp(input_frame_.timestamp() + 3000); 910 input_frame_.set_timestamp(input_frame_.timestamp() + 3000);
925 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL)); 911 EXPECT_EQ(0, encoder_->Encode(input_frame_, NULL, NULL));
926 912
927 EncodedImage encoded_frame; 913 EncodedImage encoded_frame;
928 // Only encoding one frame - so will be a key frame. 914 // Only encoding one frame - so will be a key frame.
929 encoder_callback.GetLastEncodedKeyFrame(&encoded_frame); 915 encoder_callback.GetLastEncodedKeyFrame(&encoded_frame);
930 EXPECT_EQ(0, decoder_->Decode(encoded_frame, false, NULL)); 916 EXPECT_EQ(0, decoder_->Decode(encoded_frame, false, NULL));
931 encoder_callback.GetLastEncodedFrame(&encoded_frame); 917 encoder_callback.GetLastEncodedFrame(&encoded_frame);
932 decoder_->Decode(encoded_frame, false, NULL); 918 decoder_->Decode(encoded_frame, false, NULL);
933 EXPECT_EQ(2, decoder_callback.DecodedFrames()); 919 EXPECT_EQ(2, decoder_callback.DecodedFrames());
(...skipping 28 matching lines...) Expand all
962 std::unique_ptr<VP8Decoder> decoder_; 948 std::unique_ptr<VP8Decoder> decoder_;
963 MockDecodedImageCallback decoder_callback_; 949 MockDecodedImageCallback decoder_callback_;
964 VideoCodec settings_; 950 VideoCodec settings_;
965 VideoFrame input_frame_; 951 VideoFrame input_frame_;
966 }; 952 };
967 953
968 } // namespace testing 954 } // namespace testing
969 } // namespace webrtc 955 } // namespace webrtc
970 956
971 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_UNITTEST_H_ 957 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_UNITTEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698